Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
第4章 Keepalived を用いたロードバランサーの初期設定
Load Balancer パッケージをインストールしたら、基本手順に従って Keepalived で使用する LVS ルーターと実サーバーを設定する必要があります。本章では、最初の手順を説明します。
4.1. 基本的な Keepalived の設定
この基本的な例では、2 つのシステムがロードバランサーとして設定されます。LB1 (Active)および LB2 (バックアップ)は、実際の IP アドレス 192.168.1.20 から 192.168.1.24 までの番号が付けられた httpd を実行する 4 つの Web サーバーのプールに対して要求をルーティングし、仮想 IP アドレス 10.0.0.1 を共有します。各ロードバランサーには 2 つのインターフェイス(
eth0
および eth1
)があります。1 つは外部インターネットトラフィックを処理するもので、もう 1 つは要求を実サーバーへのルーティング用です。ロードバランシングアルゴリズムにはラウンドロビンアルゴリズムが使用され、ルーティングの方法はネットワークアドレス変換になります。
4.1.1. keapalived.conf
ファイルの作成
Keepalived は、ロードバランサーとして設定された各システムの
keepalived.conf
ファイルで設定されます。「基本的な Keepalived の設定」 の例のようなロードバランサートポロジーを作成するには、テキストエディターを使用して、アクティブなロードバランサーとバックアップロードバランサー、LB1 および LB2 の両方で keepalived.conf
を開きます。以下に例を示します。
vi /etc/keepalived/keepalived.conf
「基本的な Keepalived の設定」 で説明されている設定で負荷分散される基本的なシステムには、以下のコードセクションで説明するように
keepalived.conf
ファイルがあります。この例では、keepalived.conf
ファイルはアクティブルーターとバックアップルーターの両方で同じですが、で説明されている VRRP インスタンスを除く。 「VRRP インスタンス」
4.1.1.1. グローバル定義
keepalived.conf
ファイルのグローバル定義セクションを使用すると、管理者はロードバランサーの変更時に通知の詳細を指定できます。グローバル定義は任意で、Keepalived の設定には必要ありません。keepalived.conf
ファイルのこのセクションは、LB1 と LB2 の両方で同じです。
global_defs { notification_email { admin@example.com } notification_email_from noreply@example.com smtp_server 127.0.0.1 smtp_connect_timeout 60 }
notification_email
はロードバランサーの管理者であり、notification_email_from
はロードバランサーの状態の変化を送信するアドレスです。SMTP 固有の設定で通知の送信元となるメールサーバーを指定します。
4.1.1.2. VRRP インスタンス
以下の例は、マスタールーターおよびバックアップルーターの
keeplalived.conf
ファイルの vrrp_sync_group
スタンザを示しています。state
と priority
の値は、2 つのシステム間で異なることに注意してください。
以下の例は、マスタールーター LB1 の
keepalived.conf
ファイルの vrrp_sync_group
スタンザを示しています。
vrrp_sync_group VG1 { group { RH_EXT RH_INT } } vrrp_instance RH_EXT { state MASTER interface eth0 virtual_router_id 50 priority 100 advert_int 1 authentication { auth_type PASS auth_pass passw123 } virtual_ipaddress { 10.0.0.1 } } vrrp_instance RH_INT { state MASTER interface eth1 virtual_router_id 2 priority 100 advert_int 1 authentication { auth_type PASS auth_pass passw123 } virtual_ipaddress { 192.168.1.1 } }
以下の例は、バックアップルーターの LB2 の
keepalived.conf
ファイルの vrrp_sync_group
スタンザを示しています。
vrrp_sync_group VG1 { group { RH_EXT RH_INT } } vrrp_instance RH_EXT { state BACKUP interface eth0 virtual_router_id 50 priority 99 advert_int 1 authentication { auth_type PASS auth_pass passw123 } virtual_ipaddress { 10.0.0.1 } } vrrp_instance RH_INT { state BACKUP interface eth1 virtual_router_id 2 priority 99 advert_int 1 authentication { auth_type PASS auth_pass passw123 } virtual_ipaddress { 192.168.1.1 } }
この例では、
vrrp_sync_group
スタンザは、状態が変化(フェイルオーバーなど)される VRRP グループを定義します。インターネットと通信を行う外部インターフェイスに対するインスタンス (RH_EXT) の他、内部インターフェイスに対するインスタンス (RH_INT) も定義されています。
vrrp_instance
ラインでは、VRRP サービスデーモンの仮想インターフェイス設定が反映され、仮想 IP インスタンスを作成します。この state MASTER
は、アクティブなサーバーを指定します。state BACKUP
は、バックアップサーバーを指定します。
interface
パラメーターは、この仮想 IP インスタンスに物理的なインターフェイス名を割り当てます。
virtual_router_id
は Virtual Router インスタンスの数値識別子です。これは、この Virtual Router に加わっているすべての LVS Router システムで同じでなければなりません。これは、同じネットワークインターフェイスで実行されている keepalived
の複数のインスタンスを区別するために使用されます。
priority
は、割り当てられたインターフェイスがフェイルオーバーの中で引き継ぐ順序を指定します。数字が大きいほど優先度が高くなります。この優先度の値は 0 から 255 の範囲内になければなりません。state MASTER
として設定された負荷分散サーバーの優先値は、state BACKUP
として設定されたサーバーの優先度の値よりも高い値に設定される必要があります。
authentication
ブロックは、フェイルオーバーの同期にサーバーを認証するために使用される認証タイプ (auth_type
) と パスワード (auth_pass
) を指定します。PASS
はパスワード認証を指定します。Keepalived は接続の整合性のために AH
または認証ヘッダーもサポートします。
最後に、
virtual_ipaddress
オプションは、インターフェイスの仮想 IP アドレスを指定します。
4.1.1.3. 仮想サーバーの定義
keepalived.conf
ファイルの Virtual Server 定義セクションは、LB1 と LB2 の両方で同じです。
virtual_server 10.0.0.1 80 { delay_loop 6 lb_algo rr lb_kind NAT protocol TCP real_server 192.168.1.20 80 { TCP_CHECK { connect_timeout 10 } } real_server 192.168.1.21 80 { TCP_CHECK { connect_timeout 10 } } real_server 192.168.1.22 80 { TCP_CHECK { connect_timeout 10 } } real_server 192.168.1.23 80 { TCP_CHECK { connect_timeout 10 } } }
このブロックでは、
virtual_server
は IP アドレスで最初に設定されます。次に、delay_loop
はヘルスチェックの間隔 (秒単位) を設定します。lb_algo
オプションは、可用性に使用するアルゴリズムの種類を指定します (この場合、rr
はラウンドロビンを表します。利用できる lb_algo
の値の一覧は、表4.1「仮想サーバーの lv_algo の値」 を参照してください)。lb_kind
オプションは、ネットワークアドレス変換 (または nat
) が使用されるルーティング方法を決定します。
仮想サーバーの詳細の設定後、最初に IP アドレスを指定して
real_server
オプションが設定されます。TCP_CHECK
スタンザは、TCP を使用して実際のサーバーの可用性をチェックします。connect_timeout
ではタイムアウトが発生するまでの時間を秒単位で設定します。
注記
ロードバランサーまたは実サーバーのいずれかからの仮想 IP アクセスはサポートされていません。また、実サーバーと同じマシン上でのロードバランサーの設定もサポートされていません。
表4.1 仮想サーバーの lv_algo の値
アルゴリズム名 | lv_algo value |
---|---|
ラウンドロビン (Round-Robin)
| rr
|
加重ラウンドロビン (Weighted Round-Robin)
| wrr
|
最小接続 (Least-Connection)
| lc
|
加重最小接続 (Weighted Least-Connection)
| wlc
|
ローカリティーベースの最小接続 (Locality-Based Least-Connection)
| lblc
|
複製をともなうローカリティベースの最小接続スケジューリング (Locality-Based Least-Connection Scheduling with Replication)
| lblcr
|
宛先ハッシュ (Destination Hash)
| dh
|
ソースハッシュ (Source Hash)
| sh
|
ソースの予期される遅延 (Source Expected Delay)
| sed
|
キューに置かない (Never Queue)
| nq
|