Keepalived vrrp設定でnopreemptオプションを使用して、マスターがダウンしてネットワークに再び戻ったときにバックアップノードをマスターとして実行したい。
両方のサーバーでnopreemptオプションを設定し、両方のサーバーで状態をバックアップとして設定しましたが、優先度が高いため、nopreemptは機能しません。
それを解決するためにガイドしてください?
Master Machine:
! Configuration File for keepalived
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 1
priority 250
advert_int 1
virtual_ipaddress {
192.168.1.2/24
}
}
Backup Machine :
! Configuration File for keepalived
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 1
priority 200
advert_int 1
virtual_ipaddress {
192.168.1.2/24
}
}
よろしく、ベン
両方のサーバー状態をBACKUPに変更しました。プライマリが優先度が高く、プリエンプトがなく、どちらも同じルータIDを持っています。これでうまくいきます。
まず第一に、私はCentOS 6とkeepalived 1.2.7を使用しています(2013年2月21日)
私もnopreemptを試してみましたが、いくつかのテストの後、期待どおりに機能します。
同じVRRP優先度でマスターとバックアップを実行することは悪い考えです。バグ(AFAICT)が発生し、キープアライブされたサーバーがVIPを開始するという状況につながるためです。 http://tools.ietf.org/html/rfc5798#page-26 によると、最高のIPを持つキープアライブはとどまる/マスターになるはずです。この行動は観察できませんでした!
(再びAFAICT)nopreemptが機能することを確認する場合は、構成ファイルからステートメント「state」を削除する必要があります。設定ファイルで「state MASTER」を使用してkeepalivedが起動すると、マスターとして起動し、そのように自己をアドバタイズします=悪い。構成ファイルに「状態」ステートメントがない場合、keepalivedは状態BACKUPで開始し、vrrpを待機します。 「nopreempt」のため、最高の優先度で実行されてもMASTERにはなりません。これは、man 5 keepalived.confページとは逆であり、状態はあまり問題になりません。
Prio 255を使用したkeepalivedは、nopreemptオプションのオン/オフに関係なく常にマスターになります。
Keepalivedをテストする場合は、ファイアウォール/ NATルールをよく確認してください。 tcpdumpのようなものを実行して、vrrpアドバタイズが通過し、正しい送信者IP(他のkeepalivedからのもの、標準のgwではない)があるかどうかを確認することは常に良い考えです!これは、kvm /を使用する場合に特に当てはまります。 vrrpアドバタイズを変更するデフォルトのNATルールがあるため、qemuゲスト。
nopreemptは、状態がBACKUPのkeepalivedに対してのみ機能します。 (RTFM)keepalived(1.2.7)が実行されており、ネットワークリンクがダウンした場合、keepalivedの変更は状態FAULTになります。ネットワークリンクが戻ったとき、prioが十分に高い場合、keepalivedはMASTERになります。これがバグかどうかはわかりませんが、何とかしてpreemptが役に立たなくなります。メーリングリストに質問を送ります。
楽しんで!よろしく
ステファン・カースト
これは正しい解決策かもしれませんし、そうでないかもしれませんが、私にはkeepalivedサーバーが2つしかありません。
一方のサーバーが他方を横取りしたくない場合、私のような2つのサーバーのシナリオでは、一方のサーバーがもう一方のサーバーよりも優先度が高いことは問題になりません。 nopreempt
を有効にし、両方のサーバーを同じ優先度に設定すると、うまくいきます。
[〜#〜]更新[〜#〜]
リクエストに応じた設定例:
vrrp_sync_group VRRP_SYNCS {
group {
public_http_ips
}
}
vrrp_instance public_http_ips {
state MASTER
interface eth0
virtual_router_id 18
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
192.168.0.254/24 dev eth0
}
}
バックアップはまったく同じですが、「state BACKUP」と表示されています。
私はこれを達成するために多くの構成を試しました、そして機能する唯一のものは両方のサーバーをstate BACKUPに設定することでしたpriority 51を持つ1つのサーバー5および設定nopreempt。次に設定例を示します。
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 51
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass XXXXXXXX
}
virtual_ipaddress {
192.168.69.100/28
}
}
2番目のサーバーで優先度を50に設定するだけで、すべてが機能するはずです。
Vrrpスクリプトで「fall」および「rise」オプションを設定する必要があります。実行構成の例:
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
track_interface {
eth0
eth1
}
state BACKUP # same as other node
priority 101 # your choice
virtual_router_id 53
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 8CHARPASS
}
unicast_src_ip 172.31.10.11 # other node: 172.31.10.12
unicast_peer {
172.31.10.12 # other node: 172.31.10.11
}
virtual_ipaddress {
172.31.20.20 dev eth1
}
track_script {
chk_haproxy
}
}