概要
LVS (Linux Virtual Server) は大抵の Linux ディストリビューションで使える負荷分散のためのソフトウェアです
L4ロードバランサになります
keepalived が LVS のラッパーで大抵は keepalived と組み合わせてロードバランサの冗長化構成などを実現します
今回は入門なので簡単な HTTP のロードバランサをしてみました
環境
- Ubuntu 16.04
- LVS (ipvsadm) 1.28
- keepalived 1.2.24
インストール
sudo apt -y install ipvsadm keepalived
keepalived.conf の作成
Ubuntu でインストールすると設定ファイルのサンプルがあるのでそれをベースに設定すると簡単です
sudo cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
sudo vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
interface enp0s9
virtual_router_id 50
nopreempt
priority 100
advert_int 2
virtual_ipaddress {
192.168.99.220
}
}
virtual_server 192.168.99.220 1080 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.99.200 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
解説
ポイントとなる項目ごとに説明していきます
global_defs
今回はほぼ使っていません
router_id
で識別子を設定しているだけです
メールなどを送信する設定をすると router_id
の値を参照してメールに記載してくれるようです
vrrp_instance
VRRP (Virtual Router Redundancy Protocol) の設定をします
ルータとして動作しかつ冗長化するための virtual_ipaddress
を設定するのがポイントです
この virtual_ipaddress
が仮想 IP として interface
に指定したインタフェースに自動的に振られます
DHCP では払い出されない範囲の IP などを指定しましょう
そしてこの IP にアクセスすることで配下にぶら下がっている実サーバ (real_server
) にアクセスすることができます
virtual_router_id
は仮想ルータの識別子です
他に vrrp_instance
を定義する場合は ID が被らないようにしましょう
virtual_server
配下にぶら下げるサーバやロードバランシングの方式を設定します
delay_loop
はヘルスチェックの間隔です
lb_algo
, lb_kind
がバランシングの方式です
今回は 上記を使っていますが現在は lvs_sched
と lvs_method
に項目名が置き換えられています
persistence_timeout
はセッションの保持時間です
virtual_server 192.168.99.200 1080
の 1080 の部分は fwmark と呼ばれています
LISTEN するポートではないのでご注意ください
real_server
実際にぶら下げるサーバを指定します
複数のサーバをぶら下げる場合は real_server
の項目を追加します
アクセスするパスやメソッドを指定します
connect_timeout
, nb_get_retry
, delay_before_retry
はそれぞれタイムアウト、リトライする回数、リトライするまでにどれだけウェイトするかになります
プロセス起動
設定ファイルの準備ができたらプロセスを起動しましょう
sudo systemctl start ipvsadm
sudo systemctl start keepalived
keepalived
を起動すると virtual_server
に設定した IP が interface enp0s9
に振られます
動作確認
適当に nginx でも立てておきます
そして virtual_server
に指定した IP にアクセスすると nginx の画面が確認できると思います
今回であれば real_server
の IP にアクセスしても nginx の画面が確認できます
0 件のコメント:
コメントを投稿