====== 22 ipvsadm と ldirectord ======
ipvsadmでロードバランスしているが、サーバが停止していてもパケットを転送しようとする。\\
ldirectordの場合は、この問題を解決してくれる。\\
さらにHeartbeatで、ldirectordが落ちても起動するようになっている。
===== ipvsadm =====
ipvsadm: [[http://memogakki.es.land.to/linux/index.php?ipvsadm]]
IPVSを制御するためのツール。 \\
仮想サーバグループの追加やリアルサーバの割り当てができるほか、 現在の接続状況や転送レートの表示などができます。
===== ldirectord =====
ldirectord: [[http://memogakki.es.land.to/linux/index.php?ldirectord]]
Heartbeatに付属するソフトウェア 実サーバの死活やTCPのサービスを監視をしてくれる。
ipvsadm -Ln
[root@lbslave ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.10:80 wrr
-> 127.0.0.1:80 Local 1 0 0
TCP 1192.168.0.10:443 wrr
-> 127.0.0.1:443 Local 1 0 0
===== ipvsam command =====
=== 1.VIPの動作設定 ===
ipvsadm [オプション] [プロトコル] [VIP:ポート] [スケジュールオプション] [バランスアルゴリズム]
=== 例 ===
VIP: 10.1.0.100のポート80番を負荷の少ないサーバへリクエストを飛ばす
# ipvsadm -A -t 10.1.0.100:80 -s lc
UDPの場合
# ipvsadm -A -u 153.122.5.112:8080 -s wrr
== オプション ==
^ -A |設定の追加|
^ -E |設定の変更|
^ -D |設定の削除|
== プロトコル ==
^ -t |tcpのサービスを指定する|
^ -u |udpのサービスを指定する|
^ -f |iptablesのFWMARKが付けられたパケットを指定|
== VIP:ポート VIPとポート名を指定 ==
== スケジュール ==
^ -s |負荷の割り振り方を指定する|
^ -p |パーシステンスの時間を指定する|
^ -M |-pオプションの処理、クライアントの同一性を判断に \\ ここで指定した値を使う事によりグループ化して管理できる|
== スケジュールの指定方法 ==
^ rr |ラウンドロビン|
^ wrr |ラウンドロビンに重み付けを行える|
^ lc |負荷の少ないサーバへリクエストを飛ばす|
^ wlc |基本的に上記と同じだが、重み付けも行う|
^ lblc |クライアントからのリクエストを基本的に同じサーバへ飛ばす、高負荷時は別サーバへ|
^ lblcr |上記と同じだが、レプリケーション機能がつく|
^ sed |応答速度に応じてリクエストを送るサーバを変える|
^ nq |アイドルのサーバがあればそこへ、なければsedと同じ動作|
=== 2.実サーバを設定 ===
ipvsadm [オプション] [プロトコル] [VIP:ポート] [実サーバ指定オプション] [実サーバのIP] [転送オプション]
=== 例 ===
VIP 10.1.0.100のポート80を 10.1.0.150に転送
# ipvsadm -a -t 10.1.0.100:80 -r 10.1.0.150 -g
== オプション ==
^ -a |追加|
^ -e |変更|
^ -d |削除|
== プロトコル ==
上に書いた物と同じモノが使える。
== 実サーバ指定オプション ==
^ -r |実サーバを指定する|
== 転送オプション ==
^ -g |パケットに何もせず転送|
^ -i |IPトンネルを使って転送|
^ -m |マスカレードをする|
=== 状態の確認 ===
== 設定状況確認 ==
ipvsadm -Ln
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.1.0.100:80 lc
-> 10.1.0.150:80 Route 1 0 0
== アクセス状況確認 ==
うまく動作してない時などに、現在のコネクション状況を見ることができる
ipvsadm -Lnc
# ipvsadm -Lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:05 FIN_WAIT 21.12.143.2:64991 10.1.0.100:80 10.1.0.150:80
TCP 01:05 FIN_WAIT 21.12.143.2:64989 10.1.0.100:80 10.1.0.150:80
TCP 01:05 FIN_WAIT 21.12.143.2:64983 10.1.0.100:80 10.1.0.160:80
TCP 01:06 FIN_WAIT 21.12.143.2:65001 10.1.0.100:80 10.1.0.150:80
TCP 01:05 FIN_WAIT 21.12.143.2:64982 10.1.0.100:80 10.1.0.150:80
TCP 01:06 FIN_WAIT 21.12.143.2:64993 10.1.0.100:80 10.1.0.150:80
TCP 01:06 FIN_WAIT 21.12.143.2:64997 10.1.0.100:80 10.1.0.160:80
正常に行ってない場合、下記のようにSYN_RECVで止まってたりする。
# ipvsadm -Lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:12 SYN_RECV 21.12.143.2:61215 10.1.0.100:8080 10.1.0.150:80
TCP 00:33 SYN_RECV 21.12.143.2:61930 10.1.0.100:8080 10.1.0.150:80
TCP 00:04 SYN_RECV 21.12.143.2:64965 10.1.0.100:8080 10.1.0.150:80
=== 設定を消す ===
ipvsadm -C