サーバの冗長化について
メンバーの方々にはいつもお世話になります。
掲題の件について、一つお知恵を借りたく、トピックに挙げせていただきました。
あるconcrete5で構築したサイトが、アクセス過多により高負荷状況に陥ることがあり、Webサーバを冗長化することで負荷分散を試みることになりました。
現在は、Web + DBサーバの2台構成なのですが、Webサーバをスケールアウトし、
Web1/Web2 + DBサーバと、2台のWebサーバの上位にロードバランサーをかまし、負荷分散をする想定です。
また、Webサーバ間の同期方法としましては、
Web1→Web2へRsyncでDocumentルート以下の同期を取る想定です。
(他にもNASサーバを立てるなど方法は考えられますが、いまのところはRsync前提です)
そのため、運用ポリシーとしては、「Web1サーバ上のファイルを更新する」ことで、Webサーバ間の同期をとるというイメージです。
そこで1つ問題と考えたのが、
「ファイルマネージャーからのファイルアップ」と思い、それを回避するために、質問が一つあります。
「管理機能へのアクセスをWeb1サーバに固定する」ということをできればと思ったのですが、ログイン、管理画面、ページ編集など、管理用のアクセスを、サイトドメインとは別のドメインで固定することは可能なのでしょうか。
例:
サイトドメイン : www.hogehoge.jp →Web1 or Web2
管理機能 : admin.hogehoge.jp →バーチャルホスト でWeb1のみ(ロードバランシングしない)
自分の今の認識ですと、Apacheのバーチャルホストで複数ホスト名でアクセスできるようにしましても、[config/site.php] 内の「BASE_URL」へリダイレクトされるようなので、複数ドメインでのアクセスが難しい?と思った次第です。
または管理機能(dashboard)だけを、別DocumentRootとして外出しできればとも思ったのですが、そのような運用事例、ご経験された方がいらっしゃいましたら、是非お知恵をください。
その他に、concrete5で冗長化対応の仕組みがございましたら、情報賜りたく、どうぞよろしくお願いいたします。
冗長化対策について私の方でも気づいたところがでましたら、フィードバックしていこうと思っています。
よろしくお願いいたします。
Re: Re: サーバの冗長化について
早速どうもです!
> 簡単な方法は、web02のfilesだけNFSでweb1のfilesをマウントしてしまう事です。
なるほどですね。
NFSマウントであれば、どちらのWebサーバ経由からアップロードされても、双方向に同期取れますね。
マウントが切れるかものリスクだけが懸念なので、マウントの監視と、サーバの再起動時だけ気をつければ、NFSマウントでもいけそうですね。
(files/cache の中身がちょっと気になりますが)
> 後はLB側で/dashboard へのアクセス時のみweb1を見る様に設定する感じでしょうか。
ロードバランサーでどこまで制御が可能なのか、、、前提に入っていませんでしたね。
ロードバランサー側の設定範囲を確認してみます。
今回はロードバランサーを使った負荷分散ですが、ラウンドロビンなんかも考えられるので、「concrete5の冗長」ということを意識して、アプリケーション側でアクセス制御ができないか検証したいと思っていました。
ちなみに参考値までですが、Dailyで約50万PVをさばいている状況なのですが、ピーク時にはトラフィックに渋滞が起こり、concrete5の限界というよりApacheの限界に近い感じで、冗長化を想定することになりました。
concrete5は、それなりのアクセスのあるサイトでも耐えれるという実例になればと^^
(キャッシュを有効に使うことが必須ですけどね)
ご意見を参考に検証・対策してみます。
ありがとうございました。
Tao Sasaki
Re: サーバの冗長化について
後はLB側で/dashboard へのアクセス時のみweb1を見る様に設定する感じでしょうか。