ロードバランサを使用している環境にて

質問全般・改善要望
返信する
yoko.auris
メンバー
メンバー
記事: 3
登録日時: 2016年5月26日(木) 20:45

ロードバランサを使用している環境にて

投稿記事 by yoko.auris »

初めまして。本日MODXを初めて導入いたしました。
現在の環境はLBに2台のWEBサーバがつながっている状況です。

この状態で管理画面を開くと(URLはドメイン名/blog/manager/)エラーが出てしまい、その対処として
_system_settingsの「validate_referer」のフラグをオフにしました。

この状態で管理画面にアクセスすると、1回目のログインは正常に成功するのですが、そこからすぐログアウトし、ログインしなおすと一部のフレームだけ読み込まれるようになり、
「ドメイン名/blog/manager/index.php?a=2」
のようなURLにリダイレクトしてしまいます。

ちなみにLB配下のWEBサーバのIP直指定で開けば正常に動きます。
恐らくラウンドロビンで設定しているため、サーバキャッシュがおかしくなるのではないかと思っています。

どなたかこのような状況で運用されている方いらっしゃいますでしょうか?
また、解決方法がございましたらご教授いただけるととても助かります。

よろしくお願いいたします。
soushi
管理人
記事: 224
登録日時: 2009年7月30日(木) 01:59

ロードバランサを使用している環境にて

投稿記事 by soushi »

ロードバランサ配下に2台のWebサーバがあり、それぞれにMODXがインストールされていて、DBは同じものを共用しているというような構成でしょうか。
MODXは管理画面等でPHPのセッションを使っている関係上、ロードバランサの振り分け方式によってはセッションが切れてしまいうまく動作しない可能性があります。

ご利用のロードバランサの設定でPHPのセッションを保持するバランシング設定が可能なら一度試していただけますでしょうか。
(PHPのセッションはデフォルトでPHPSESSIDというcookieを利用するので、このcookieを使って振り分けを固定させます)
もしくは管理機能(/manager/)に限り負荷分散を止めてActive/Standby方式にする事で多分動くようになると思います。

また余談ですがMODXを2台動かしてラウンドロビンでバランシングした場合、少なくともキャッシュディレクトリ(/assets/cache/)はWebサーバ間で共用しないとキャッシュがクリアされないWebサーバが発生します。
共有させたくない場合は片方のWebサーバでキャッシュのクリア処理が発生したら、残りのWebサーバのキャッシュクリアを走らせる仕組みを別途用意する必要があります。
(負荷分散しているわけではないですが、MODXを2台のWebに入れてDBを共有する構成を以前組んだことがあり、その時はプラグインとスニペットで2台のWebサーバのキャッシュクリアを同時に行う仕組みを作りました)
yoko.auris
メンバー
メンバー
記事: 3
登録日時: 2016年5月26日(木) 20:45

ロードバランサを使用している環境にて

投稿記事 by yoko.auris »

soushi様
ご回答ありがとうございます。
>ロードバランサ配下に2台のWebサーバがあり、それぞれにMODXがインストールされていて、DBは同じものを共用しているというような構成でしょうか。
まさにこの環境でございます。

現在使用している環境はクラウドサーバで、サーバ会社の提供する仮想的なLBです。そのためなのか、単純に接続先サーバを変えることしかできません。
なかなか難しいようですね・・・・
表示側も/assets/cache/をマウントして共有するなどしてもう少し頑張ってみたいと思います!

ありがとうございました。
soushi
管理人
記事: 224
登録日時: 2009年7月30日(木) 01:59

ロードバランサを使用している環境にて

投稿記事 by soushi »

ロードバランサの細かい設定ができない環境なのですね…。

別の解決方法としてPHPのセッションはMySQLを使う事ができます。
(「php セッション mysql」辺りで検索するとヒントになりそうなページがヒットします)
そうすると二つのMODXが同じセッションを使う事になるので、この方法でログインの問題は解決するかもしれません。

また、/content/に画像等ファイルをアップする運用になると思うので、こちらも共用化の検討をしないと画像が表示されたり消えたりすると思います。
yoko.auris
メンバー
メンバー
記事: 3
登録日時: 2016年5月26日(木) 20:45

ロードバランサを使用している環境にて

投稿記事 by yoko.auris »

soushi さんが書きました:ロードバランサの細かい設定ができない環境なのですね…。

別の解決方法としてPHPのセッションはMySQLを使う事ができます。
(「php セッション mysql」辺りで検索するとヒントになりそうなページがヒットします)
そうすると二つのMODXが同じセッションを使う事になるので、この方法でログインの問題は解決するかもしれません。

また、/content/に画像等ファイルをアップする運用になると思うので、こちらも共用化の検討をしないと画像が表示されたり消えたりすると思います。
仮想化されたLBでは限界があるようです。。。
また、contentのディレクトリについてもご教授ありがとうございました。
今、色々試してみています!フレンドリーURLができていない状況ですが、頑張ってみたいと思います。
返信する