ソケットの準備
コマンドで操作するためには、コマンド操作ができるように予めHAproxyに設定を行っておく必要がある。 設定は、/etc/haproxy/haproxy.cfg のglobalセクションローバルに次のようにsockeを定義する。 ソケットは次の書式で定義する。
stats socket <作成するソケットのパス> [mode <パスのアクセス権>] [user <ユーザ名>] [group <グループ名>] [lebel <操作レベル>]
stats timeout <アイドル時のタイムアウト値> (デフォルト: 10 秒)
stats maxconn <同時接続数>
【設定例】
global
::
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
stats maxconn 1
::
コマンドインストール
コマンドでそうするためにソケットと通信する必要があるので、通信用ソフトである "socat" をHAproxyが動作している端末にインストールします。
【CentOSの場合】
# yum install socat
【Debianの場合】
# apt-get install socat
操作
以下のようにコマンドで HAproxy を操作できます。
① socat を使い、HAproxyと接続し対話モード(prompt)にします。
# socat
/run/haproxy/admin.sock STDIN
prompt
>
② 対話モードの終了
> quit
③ ヘルプの表示
> help
Unknown command. Please enter one of the following commands only :
clear counters : clear max statistics counters (add 'all' for all
counters)
clear table : remove an entry from a table
help : this
message
prompt : toggle interactive mode with prompt
quit :
disconnect
show info : report information about the running process
;;
④ サーバのステータスの確認
> show stat
#
pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,check_status,check_code,check_duration,hrsp_1xx,hrsp_2xx,hrsp_3xx,hrsp_4xx,hrsp_5xx,hrsp_other,hanafail,req_rate,req_rate_max,req_tot,cli_abrt,srv_abrt,comp_in,comp_out,comp_byp,comp_rsp,lastsess,last_chk,last_agt,qtime,ctime,rtime,ttime,
haproxy,FRONTEND,,,0,0,3000,0,0,0,0,0,0,,,,,OPEN,,,,,,,,,1,2,0,,,,0,0,0,0,,,,0,0,0,0,0,0,,0,0,0,,,0,0,0,0,,,,,,,,
back_proxy,proxy1,0,0,0,0,10000,0,0,0,,0,,0,0,0,0,UP,1,1,0,0,0,1027,0,,1,3,1,,0,,2,0,,0,L4OK,,0,0,0,0,0,0,0,0,,,,0,0,,,,,-1,,,0,0,0,0,
back_proxy,proxy2,0,0,0,0,10000,0,0,0,,0,,0,0,0,0,UP,1,1,0,0,0,1027,0,,1,3,2,,0,,2,0,,0,L4OK,,0,0,0,0,0,0,0,0,,,,0,0,,,,,-1,,,0,0,0,0,
back_proxy,BACKEND,0,0,0,0,300,0,0,0,0,0,,0,0,0,0,UP,2,2,0,,0,1027,0,,1,3,0,,0,,1,0,,0,,,,0,0,0,0,0,0,,,,,0,0,0,0,0,0,-1,,,0,0,0,0,
このステータスでは、”haproxy”という名前のフロントエンドと ”back_proxy” というバックエンドがあり、back_proxyのバックエンドでは "proxy1" と "proxy2" というサーバがあってこれが起動中(UP)であることが判る。
⑤ タイムアウト時間の変更
コマンドプロンプトの状態で何も操作していない場合には、haproxy.cfgで定義したタイムアウト時間経過後に接続がきれる。これをコマンドで延長することができる。
> set timeout cli 120
⑥ メンテナンスモードへの移行
メンテナンスなどでバックエンドサーバの一部を停止するような場合には、以下のコマンドで対象のサーバをメンテナンスモードにする事でフロントエンドからの振り分けが行われなくなります。
> disable server
back_proxy/proxy2
④ メンテナンスモード解除
保守作業が終わりメンテナンスモードから復旧する場合には次のコマンドで対象のサーバをメンテナンスモードから復旧します。
> enable server back_proxy/proxy2
参考: