Linux/Source/Keepalived
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*Keepalived [#e88dd0e7]
-[[Keepalived:+http://www.keepalived.org/]]
-[[Keepalived SYNOPSIS:+https://github.com/acassen/keepal...
-[[RedHat ロードバランサーの管理:+https://access.redhat.c...
LinuxでVRRPを喋る時に利用するプログラム。
非常に細かい制御が可能で、特定プロセスのトラッキング、ユ...
また、VRRPv3に対応しているので、実行プロトコルを変更すれ...
単独で利用する事は少なく、ロードバランサー(HAProxy、Ultra...
リバースプロキシ自体の冗長化として使う場合が多い。
~
*インストール [#idb40e4e]
上記のオフィシャルにソースコードが置いてあるので、
Linuxにダウンロードして通常通りにビルドする。
# tar zxvf keepalived-1.3.5.tar.gz
# cd keepalived-1.3.5
# ./configure --prefix=/usr/local/keepalived-1.3.5
# make && make install
# cd /usr/local
# ln -s /usr/local/keepalived-1.3.5 keepalived
また、面倒な場合はパッケージ管理で導入する事も可能。
# yum install keepalived
~
*設定 [#r3f75d67]
今回は下記構成例を作成する。
前述した通り、中身はVRRPなので詳細はVRRPのRFCを見れば大体...
今回は敢えてNICを分割し、それぞれでVRRPv2とVRRPv3を喋る構...
デュアルスタックなどの場合はVRRPv3で設定を一纏めにする事...
・IPアドレス、NIC情報
|NIC |VRID|仮想IP |サーバ1(Backup)|サーバ2(Maste...
|eth0|10 |10.0.0.254 |10.0.0.1 |10.0.0.2 ...
|eth1|80 |fe80::10:0:0:254|fe80::10:0:0:1 |fe80::10:0:0:...
・オプション定義
+HAProxyのプロセスをtrack対象とする
+平文でVRRPの認証を行う
+VRRP切り替え時のメール送信は行わない
+自動切り戻し(preempt)を有効にする
+パケット効率化の為にユニキャストVRRPを利用する
+プライオリティは「サーバ1:1/サーバ2:2」とする
・実コンフィグ
#region(&color(#ff0000){サーバ1(Backup)};)
##
## Mail Notification
##
global_defs {
notification_email {
# hoge-test★gmail.com ## メール送信しない...
}
}
##
## Process Check
##
vrrp_script check_haproxy {
script "pkill -0 -x haproxy" ## HAProxyのプロセ...
interval 1 ## 1秒毎に確認
fall 5 ## 5回プロセス確認...
raise 10 ## 10回プロセス確...
}
##
## eth0
##
vrrp_instance eth0-ipv4 {
# nopreempt ## 自動切戻(preemp...
vrrp_version 2 ## VRRPv2を利用する
state BACKUP ## 常時バックアッ...
interface eth0 ## VRRPv2を出力す...
virtual_router_id 10 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 1 ## VRRPプライオリ...
unicast_src_ip 10.0.0.1 ## VRRPを送信する...
unicast_peer {
10.0.0.1 ## ユニキャストVRR...
10.0.0.2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
10.0.0.254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
##
## eth1
##
vrrp_instance eth1-ipv6 {
# nopreempt ## 自動切戻(preemp...
native_ipv6 ## IPv6でVRRPパケ...
vrrp_version 3 ## IPv6でVRRPを実...
state BACKUP ## 常時バックアッ...
interface eth1 ## VRRPv3を出力す...
virtual_router_id 80 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 1 ## VRRPプライオリ...
unicast_src_ip fe80::10:0:0:1 ## VRRPを送信する...
unicast_peer {
fe80::10:0:0:1 ## ユニキャストVRR...
fe80::10:0:0:2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
fe80::10:0:0:254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
#endregion
#region(&color(#ff0000){サーバ2(Master)};)
##
## Mail Notification
##
global_defs {
notification_email {
# hoge-test★gmail.com ## メール送信しない...
}
}
##
## Process Check
##
vrrp_script check_haproxy {
script "pkill -0 -x haproxy" ## HAProxyのプロセ...
interval 1 ## 1秒毎に確認
fall 5 ## 5回プロセス確認...
raise 10 ## 10回プロセス確...
}
##
## eth0
##
vrrp_instance eth0-ipv4 {
# nopreempt ## 自動切戻(preemp...
vrrp_version 2 ## VRRPv2を利用する
state BACKUP ## 常時バックアッ...
interface eth0 ## VRRPv2を出力す...
virtual_router_id 10 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 2 ## VRRPプライオリ...
unicast_src_ip 10.0.0.2 ## VRRPを送信する...
unicast_peer {
10.0.0.1 ## ユニキャストVRR...
10.0.0.2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
10.0.0.254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
##
## eth1
##
vrrp_instance eth1-ipv6 {
# nopreempt ## 自動切戻(preemp...
native_ipv6 ## IPv6でVRRPパケ...
vrrp_version 3 ## IPv6でVRRPを実...
state BACKUP ## 常時バックアッ...
interface eth1 ## VRRPv3を出力す...
virtual_router_id 80 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 2 ## VRRPプライオリ...
unicast_src_ip fe80::10:0:0:2 ## VRRPを送信する...
unicast_peer {
fe80::10:0:0:1 ## ユニキャストVRR...
fe80::10:0:0:2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
fe80::10:0:0:254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
#endregion
終了行:
*Keepalived [#e88dd0e7]
-[[Keepalived:+http://www.keepalived.org/]]
-[[Keepalived SYNOPSIS:+https://github.com/acassen/keepal...
-[[RedHat ロードバランサーの管理:+https://access.redhat.c...
LinuxでVRRPを喋る時に利用するプログラム。
非常に細かい制御が可能で、特定プロセスのトラッキング、ユ...
また、VRRPv3に対応しているので、実行プロトコルを変更すれ...
単独で利用する事は少なく、ロードバランサー(HAProxy、Ultra...
リバースプロキシ自体の冗長化として使う場合が多い。
~
*インストール [#idb40e4e]
上記のオフィシャルにソースコードが置いてあるので、
Linuxにダウンロードして通常通りにビルドする。
# tar zxvf keepalived-1.3.5.tar.gz
# cd keepalived-1.3.5
# ./configure --prefix=/usr/local/keepalived-1.3.5
# make && make install
# cd /usr/local
# ln -s /usr/local/keepalived-1.3.5 keepalived
また、面倒な場合はパッケージ管理で導入する事も可能。
# yum install keepalived
~
*設定 [#r3f75d67]
今回は下記構成例を作成する。
前述した通り、中身はVRRPなので詳細はVRRPのRFCを見れば大体...
今回は敢えてNICを分割し、それぞれでVRRPv2とVRRPv3を喋る構...
デュアルスタックなどの場合はVRRPv3で設定を一纏めにする事...
・IPアドレス、NIC情報
|NIC |VRID|仮想IP |サーバ1(Backup)|サーバ2(Maste...
|eth0|10 |10.0.0.254 |10.0.0.1 |10.0.0.2 ...
|eth1|80 |fe80::10:0:0:254|fe80::10:0:0:1 |fe80::10:0:0:...
・オプション定義
+HAProxyのプロセスをtrack対象とする
+平文でVRRPの認証を行う
+VRRP切り替え時のメール送信は行わない
+自動切り戻し(preempt)を有効にする
+パケット効率化の為にユニキャストVRRPを利用する
+プライオリティは「サーバ1:1/サーバ2:2」とする
・実コンフィグ
#region(&color(#ff0000){サーバ1(Backup)};)
##
## Mail Notification
##
global_defs {
notification_email {
# hoge-test★gmail.com ## メール送信しない...
}
}
##
## Process Check
##
vrrp_script check_haproxy {
script "pkill -0 -x haproxy" ## HAProxyのプロセ...
interval 1 ## 1秒毎に確認
fall 5 ## 5回プロセス確認...
raise 10 ## 10回プロセス確...
}
##
## eth0
##
vrrp_instance eth0-ipv4 {
# nopreempt ## 自動切戻(preemp...
vrrp_version 2 ## VRRPv2を利用する
state BACKUP ## 常時バックアッ...
interface eth0 ## VRRPv2を出力す...
virtual_router_id 10 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 1 ## VRRPプライオリ...
unicast_src_ip 10.0.0.1 ## VRRPを送信する...
unicast_peer {
10.0.0.1 ## ユニキャストVRR...
10.0.0.2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
10.0.0.254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
##
## eth1
##
vrrp_instance eth1-ipv6 {
# nopreempt ## 自動切戻(preemp...
native_ipv6 ## IPv6でVRRPパケ...
vrrp_version 3 ## IPv6でVRRPを実...
state BACKUP ## 常時バックアッ...
interface eth1 ## VRRPv3を出力す...
virtual_router_id 80 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 1 ## VRRPプライオリ...
unicast_src_ip fe80::10:0:0:1 ## VRRPを送信する...
unicast_peer {
fe80::10:0:0:1 ## ユニキャストVRR...
fe80::10:0:0:2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
fe80::10:0:0:254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
#endregion
#region(&color(#ff0000){サーバ2(Master)};)
##
## Mail Notification
##
global_defs {
notification_email {
# hoge-test★gmail.com ## メール送信しない...
}
}
##
## Process Check
##
vrrp_script check_haproxy {
script "pkill -0 -x haproxy" ## HAProxyのプロセ...
interval 1 ## 1秒毎に確認
fall 5 ## 5回プロセス確認...
raise 10 ## 10回プロセス確...
}
##
## eth0
##
vrrp_instance eth0-ipv4 {
# nopreempt ## 自動切戻(preemp...
vrrp_version 2 ## VRRPv2を利用する
state BACKUP ## 常時バックアッ...
interface eth0 ## VRRPv2を出力す...
virtual_router_id 10 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 2 ## VRRPプライオリ...
unicast_src_ip 10.0.0.2 ## VRRPを送信する...
unicast_peer {
10.0.0.1 ## ユニキャストVRR...
10.0.0.2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
10.0.0.254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
##
## eth1
##
vrrp_instance eth1-ipv6 {
# nopreempt ## 自動切戻(preemp...
native_ipv6 ## IPv6でVRRPパケ...
vrrp_version 3 ## IPv6でVRRPを実...
state BACKUP ## 常時バックアッ...
interface eth1 ## VRRPv3を出力す...
virtual_router_id 80 ## VRIDを設定
garp_master_delay 5 ## 自サーバがMaste...
advert_int 1 ## VRRPパケット送...
priority 2 ## VRRPプライオリ...
unicast_src_ip fe80::10:0:0:2 ## VRRPを送信する...
unicast_peer {
fe80::10:0:0:1 ## ユニキャストVRR...
fe80::10:0:0:2 ## ユニキャストVRR...
}
authentication {
auth_type PASS ## VRRPに認証を追加
auth_pass vrrp_pass ## VRRPの認証パス...
}
virtual_ipaddress {
fe80::10:0:0:254 ## VRRP代表アドレ...
}
track_script {
check_haproxy ## trackスクリプト...
}
}
#endregion
ページ名: