30
26

More than 5 years have passed since last update.

keepalivedのstateとpriority、nopreemptの関係

Last updated at Posted at 2015-08-22

はじめに

keepalivedがvrrpで冗長化を行う際にkeepalived.confの中で設定する、 statepriority、あとnopreempt について挙動を調べてみました。

こちらに各ノードでstateの設定を行った際に発生する挙動をまとめて頂いていますが、これとpriorityの関係がよくわからなかったのがきっかけです。
http://dev.tapweb.co.jp/2010/12/294

keepalivedのバージョンは以下です。

Keepalived v1.2.7 (09/26,2012)

それぞれの値の意味について

まずはおおまかな意味から。

STATE [MASTER|BACKUP]

keepalived起動時に、どちらのstateで起動しようとするか。ただし、一旦起動してもすぐにコンバージョンが行われ、結果的には priority の優先順序に従う。

priority (数値)

より値が高いものがMASTERに選出される。

nopreempt

よりpriorityの高いノードがVRRPに参加した時に、MASTER/BACKUPの状態を維持するかどうか。このオプションを設定していると、状態を維持し続ける。設定しないと、より高いpriorityのノードへMASTER stateが移る。state設定をBACKUPにしないと効果がない。

それぞれの値を併用した時の挙動について

全部のパターンを網羅できないので、おおまかに記載します。

Server1: MASTER 100 , Server2: BACKUP 50

操作 Server1 Server2
server1:keepalived起動 MASTER (DOWN)
server2:keepalived起動 MASTER BACKUP
server1:keepalived停止 (DOWN) MASTER
server1:keepalived起動 MASTER BACKUP

よりpriorityの高いServer1が参加した時に、MASTERが移動しています。

Server1: BACKUP 100 , Server2: BACKUP 50

どちらのサーバもBACKUP設定に変更します。

操作 Server1 Server2
server1:keepalived起動 MASTER (DOWN)
server2:keepalived起動 MASTER BACKUP
server1:keepalived停止 (DOWN) MASTER
server1:keepalived起動 MASTER BACKUP

こちらも同様。よりpriorityの高いサーバ側にMASTERが移動します。

Server1: BACKUP 100 nopreempt, Server2: BACKUP 50 nopreempt

nopreemptオプションを追加します。

操作 Server1 Server2
server1:keepalived起動 MASTER (DOWN)
server2:keepalived起動 MASTER BACKUP
server1:keepalived停止 (DOWN) MASTER
server1:keepalived起動 BACKUP MASTER

前回と違い、サーバが復旧してもMASTER状態だったノードは状態を維持し続けます。

ここまでが概ね通常利用するパターンでしょうか。

Server1: MASTER 50 , Server2: BACKUP 100

普通はやらないようなパターンです。
MASTERの方がpriorityが低く、BACKUPの方を高く設定しています。

操作 Server1 Server2
server1:keepalived起動 MASTER (DOWN)
server2:keepalived起動 BACKUP MASTER
server1:keepalived停止 (DOWN) MASTER
server1:keepalived起動 BACKUP MASTER

よりpriorityの高いサーバが参加した時にMASTERが移動します。その後、MASTER設定のサーバ1が参加しても、サーバ1はすぐにBACKUP stateに移行します。

conf上のstate MASTER設定は意味があるのか?

こうして見ると、state設定がMASTERだったとしても、結局priorityで判断されるので、果たしてstate MASTERは意味があるのだろうか?と思えてきます。

と思ったら、man 5 keepalived.confにこんな記述が。

Initial state, MASTER|BACKUP
As soon as the other machine(s) come up,
an election will be held and the machine
with the highest "priority" will become MASTER.
So the entry here doesn’t matter a whole lot.

そんなに重要じゃないよ、と。

ちなみに、同一priorityの場合は先にkeepalivedを起動していた方がMASTERに選出されます。

30
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
26