[Linux][DHCP] ISC DHCPの冗長化設定。

AIX、UNIX、Linux
DHCPサーバの2重化(failover)の設定

まぁご家庭レベルだと問題無いと思いますが、例えばLinuxでDHCPサーバを構築していた場合、1台のみだとそのサーバが落ちていた際は勿論IPアドレスが払い出されません。とりあえず2台にして、払い出すIPアドレスレンジを分けて設置するというのが一般的かなぁと思います。

しかしながら、どうやらISC DHCPには冗長化プロトコルが用意されています。

DHCP Failover Protocol

ということで、これに従ってDHCPサーバの冗長化設定を行ってみることにしました。

確認環境:

  • Internet Systems Consortium DHCP Server 4.2.2
dhcp_failover.png

設定について

failover peer "test" {
  primary;
  address 192.168.0.1;
  port 519;
  peer address 192.168.0.2;
  peer port 520;
  max-response-delay 60;
  max-unacked-updates 10;
  mclt 300;
  split 128;
  load balance max seconds 3;
}

プライマリ側の設定はこういう感じで記述します。

POINT

  • failover peer: ここで使用する名称が、subnetで使用
  • primary: プライマリまたはセカンダリ(secondary)を指定
  • address: failoverプロトコルを送受信する為に使用するインターフェースのIP
  • port: failoverプロトコルを送受信する為に使用するポート番号
  • peer address: 自分がプライマリならセカンダリまたはその逆のIPアドレスを指定
  • peer port: ピア側のポート番号を指定
  • max-response-delay: 応答遅延の最大時間を指定(秒)
  • max-unacked-updates: ピアから応答確認なしに送信できる最大データベース更新メッセージ数
  • mclt: プライマリ側のみに記載。プライマリに障害が発生した際、正規のリース期限を越えてリースを延長できる最大時間。Maximum Client Lead Time
  • split: プライマリ側のみに記載。ロードバランス(負荷分散)のために指定する値。分担の割合。
  • load balance max seconds: ピア側がDHCPクライアントの要求に答えないとき、failoverメッセージのやり取りが出来る場合、ロードバランスのルールを破り自分がサービスを引き受けるようになるまでの待ち時間。

セカンダリ側の構成は以下の様な感じ。

failover peer "test" {
  secondary;
  address 192.168.0.2;
  port 520;
  peer address 192.168.0.1;
  peer port 519;
  max-response-delay 60;
  max-unacked-updates 10;
  load balance max seconds 3;
}

あとは、通常通り、subnetセクションに以下のようにfailoverすることを明記します。

subnet 192.168.0.0 netmask 255.255.255.0 {
pool {
    failover peer "test";

確認

うまくいっていると以下のようなlogが出力されると思います。

Apr 18 02:32:43 dns3 dhcpd: failover peer test: I move from recover to startup
Apr 18 02:32:58 dns3 dhcpd: failover peer test: I move from startup to recover
Apr 18 02:33:44 dns3 dhcpd: failover peer test: peer moves from unknown-state to recover
Apr 18 02:33:44 dns3 dhcpd: failover peer test: requesting full update from peer
Apr 18 02:33:44 dns3 dhcpd: Sent update request all message to test
Apr 18 02:33:45 dns3 dhcpd: failover peer test: peer moves from recover to recover
Apr 18 02:33:45 dns3 dhcpd: failover peer test: requesting full update from peer
Apr 18 02:33:45 dns3 dhcpd: Update request all from test: sending update
Apr 18 02:33:45 dns3 dhcpd: Sent update done message to test
Apr 18 02:33:45 dns3 dhcpd: failover peer test: peer update completed.
Apr 18 02:33:45 dns3 dhcpd: failover peer test: I move from recover to recover-done
Apr 18 02:33:45 dns3 dhcpd: failover peer test: peer moves from recover to recover-done
Apr 18 02:33:45 dns3 dhcpd: Both servers have entered recover-done!
Apr 18 02:33:45 dns3 dhcpd: failover peer test: I move from recover-done to normal
Apr 18 02:33:45 dns3 dhcpd: balancing pool b7926b08 192.168.0.0/24 total 20 free 14 backup 0 lts 7 max-own (+/-)1
Apr 18 02:33:45 dns3 dhcpd: balanced pool b7926b08 192.168.0.0/24 total 20 free 6 backup 8 lts -1 max-misbal 2

参考:

ISC DHCPメモ - とあるSIerの憂鬱
仕様 RFC IPv4用: RFC 2131(RFC 2131 - Dynamic Host Configuration Protocol), RFC 2132(RFC 2132 - DHCP Options and BOOTP Vendo...
この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました