GMOクラウド publicの設定 10日目

会社の同僚が「引っ越しをしたーい!」と言うので、物件(楽○市場で犬小屋を物色)を探しつつLBの設定を行っていきます。
GMOクラウドでは仮想IPが利用できないため、LVSの構築がほぼ不可能なための打開策(?)です。

 

もともと用意されているロードバランサーを利用すればイイと言う声も聞こえそうですが、外向きのIPを2個も使われてしまってはコストがどんどん上がってしまう一方で、収入がない・・・死亡となってしまいます。

 

そこで、ロードバランサーとしてpoundを利用して行きます。

早速、設定を行っていきます。

 

まず、poundは入っていないはずなのでyumを利用してインストールを行います。

yum install -y pound

 

インストールが完了したら、設定ファイルを編集します。

vi /etc/pound.cfg

 

実際に設定する内容としては、下記の内容となります。(さらに下へ続きます)

# Execute User
User         "user"

# Execute Group
Group        "group"

# Check Alive Time
Alive        30

# Proccess Type
Daemon       1

# Logging Level
LogLevel     0

# Logging Facitilty
LogFacility  local5

# MaxClientTimeOut
Client       200

# Timeout
TimeOut      100

 

上記の内容について、解説して行きます。

User
実行ユーザー

Group
実行グループ

Alive
バックエンドサーバの生存確認を行う間隔

Daemon
daemonとして稼働させるかの設定

  • 0:フォアグラウンド
  • 1:バックグラウンド

LogLevel
ログレベル(0 ~ 5を指定)
ただし、poundのdaemon設定を”0″のフォアグラウンドにしている場合には無効

  • 0:no logging
  • 1:normal log
  • 2:full log
  • 3:Apache combined log format
  • 4:Apache combined log format without virtual host

LogFacility
ログの出力方法の設定(local0 ~ 7の空いている個所を利用)

  • local1:syslogへ出力

Client
poundとブラウザ間のタイムアウト秒数

TimeOut
poundとapacheのタイムアウト秒数

 

下記、/etc/pound.cfgの設定の続きとなります。(続きです)

ListenHTTP
    Address xxx.xxx.xxx.xxx
    Port    80
    xHTTP   0

    Service
        HeadRequire "Host: *example.com"
        Redirect    "http://www.example.com"
    End

    Service
        HeadRequire "Host: .*www.example.com"

        BackEnd
            Address  zzz.zzz.zzz.zzz
            Port     80
            Priority 5
        End
    End
End

 

ListenHTTPの中には、それぞれの設定を追加していきますが、内容としては下記の通りになっています。

 

ListenHTTP

  • Address:アクセスを待ち受けるIPアドレス
  • Port:アクセスを待ち受けるポート番号

xHTTP

  • 0:GET、POST、HEAD
  • 1:PUT、DELETE
  • 2:WebDAV
    (LOCK、UNLOCK、PROPFIND、PROPPATCH、SEARCH、MKCOL、MOVE、COPY、OPTIONS、TRACE、MKACTIVITY、CHECKOUT、MERGE、REPORT)
  • 3:MS extensions WebDAV
    (SUBSCRIBE、UNSUBSCRIBE、NOTIFY、BPROPFIND、BPROPPATCH、POLL、BMOVE、BCOPY、BDELETE、CONNECT)
  • 4:MS RPC extensions
    (RPC_IN_DATA、RPC_OUT_DATA)

 

次に、Serviceの設定を行います。
内容としては下記の通りになります。

 

Service

  • HeadRequire:パターンを指定
  • Redirect:上記のパターンに一致した場合のリダイレクト先

 

最後に設定するものは、BackEndとなります。
内容としては下記の通りになります。

 

BackEnd

  • Address:バックエンドのサーバIP
  • Port:バックエンドのサーバポート番号

Priority
Priorityには、1~9までの数値を設定
数値が大きいほど優先度が高く、小さいほど優先度が低くなる

 

ここまで設定が完了したら、一度設定に問題ないかを確認しましょう。

pound -c

 

エラーが出た場合には、pound.cfgのどこに問題があるかを行数とエラー内容が出力されます。

 

ここで、エラーが出ず「OK」と表示されたら起動してみましょう。

/etc/init.d/pound start

 

最後に起動できたかを、下記の方法で確認していきます。
まずは、サービスが起動しているかを確認します。

/etc/init.d/pound status

 

バックエンドのサーバ(Web)が存在する場合には、ブラウザから対象URLへアクセスしページが表示されることを確認することで、稼働の確認を行うことも可能です。

 

まだまだ細かい設定などが可能となっており、Webサーバへのアクセスを画像などの静的ファイルの場合と、PHPなどの処理を含む動的の場合でサーバを分ける(nginxとapache)などの負荷分散も行うことができます。

使い方次第ですが、abやjmeterなどで高アクセス状態の負荷を掛けてもほぼpoundには影響せず、BackEndに指定したサーバへ分散してくれます。

ただし、負荷分散してくれるのですが・・・均一ではないためアクセスが集中しているサーバへさらに割り振られることもあり、負荷を掛けている際に、「うほっ!やべっ!!」となることもあったので、そのあたりの解決策があれば知りたいところです。

関連する記事

記事へのコメント (1 件)

  1. […] らできる?←それなら理屈上オートフェイルオーバーもできるはずだが。。。  http://blog.code4u.org/archives/444  http://gmo1973.blogspot.jp/2013/01/blog-post_21.html もしかしたら、ローカル側のパケット […]

コメントを残しませんか?