• ホーム
  • サーバ
  • ISC DHCPサーバ
  • failover
  • DHCPサーバの2重化(failover)の設定

    DHCPサーバを2重化することで、片方のDHCPサーバが停止してもサービスを継続できるのが最大のメリット
    ただしリレーエージェントにて、両方のサーバに問い合わせするように設定しておくこと
    
    まずはもう一台のサーバに同じバージョンのISC DHCPサーバをインストールしておく
    ※注意※ 2つのDHCPサーバのシステム時間が厳密に一致している必要がある(60秒以内)
         よってNTPなどを使用すること
    	 なおバージョンは3より4以上の方が安定している様子
    
    ■設定内容(dhcpd.confのグローバルスコープに記述)
    failover peer "test" {	ここで使用する名前がfailoverを使用するsubnet内で指定される
    primary;			又はsecondary (必ず始めに記載)。
    
    address 192.168.1.254;	failoverプロトコルのパケットを送受信する為に使用するインターフェースのIP
    port 519;			failoverプロトコルのパケットを送受信する為に使用するポート番号を指定
    
    peer address 192.168.1.253; ピア側(自分がプライマリならセカンダリ又はその逆)のIPアドレスを指定
    peer port 520;		ピア側のポート番号を指定
    
    max-response-delay 60;	応答遅延の最大時間を指定。(ピアとの接続が切れたと考えられるまでの時間)秒
    max-unacked-updates 10;	ピアから応答確認なしに送信できる最大データベース更新メッセージ数(推奨 10)
    			(フェイルリカバリ後に行うリース情報同期の最大転送データ数)
    mclt 3600;	※プライマリ側のみに記載。プライマリに障害が発生した際、正規のリース期限を越えて
    		 リースを延長できる最大時間(推奨 3600) Maximum Client Lead Time
    split 128;	※プライマリ側のみに記載。ロードバランス(負荷分散)のために指定する値。分担の割合
    	DHCPクライアント識別子のハッシュ値が指定した値未満であればプライマリが応答(推奨値 128)
    	split 255;とした場合は、異常が無い限り全てプライマリ側が処理するという意味になる
    	そうするとアクティブ、スタンバイ構成となりわかりやすいといえばわかりやすい。
    load balance max seconds 3;	(推奨値 3〜5)
    	ピア側がDHCPクライアントの要求に答えない場合でfailoverメッセージのやり取りが出来る場合、
    	ロードバランスのルールを破り自分がサービスを引き受けるようになるまでの待ち時間
    }
    ...その後には通常の設定が続く。(または別ファイルとしてincludeしても良い)
    
    
    □セカンダリ側の設定例(上記をプライマリ設定とした場合)
    failover peer "test" {
    secondary;
    address 192.168.1.253;
    port 520;
    peer address 192.168.1.254;
    peer port 519;
    max-response-delay 60;
    max-unacked-updates 10;
    load balance max seconds 3;
    }
    ...その後には通常の設定
    
    ■failoverを適応する為の設定
    failoverを使用するサブネットに追加設定を行う
    
    failoverを適応するリースのスコープに下記を記述する
     pool {
      failover peer "test";
      deny dynamic bootp clients;	ダイナミックなBOOTPリースはフェイルオーバーと互換性が無い。
      通常のrange設定
      ・・・
     ・・・
     }
    
    □例
        subnet 192.168.1.0 netmask 255.255.255.0 {
            pool {
            failover peer "test";
            range 192.168.1.2 192.168.1.250;
            option broadcast-address 192.168.1.255;
            option routers 192.168.1.1;
            option subnet-mask 255.255.255.0;
            deny dynamic bootp clients;
            }
        }
    
    
    ■■■設定完成例■■■
    自分のホスト(DHCPサーバ)のIPは192.168.1.254のプライマリの場合で、
    192.168.100.0/24と192.168.101.0/23 のIPをクライアントに割り当てる
    
    server-name "host1.example.com";
    ddns-update-style none;
    
    ###Failover Setting Primary
    failover peer "p1" {
    primary;
    address 192.168.1.254;
    port 519;
    
    peer address 192.168.1.253;
    peer port 520;
    
    max-response-delay 60;
    max-unacked-updates 10;
    
    mclt 3600;
    split 128;
    
    load balance max seconds 3;
    }
    
    ###global scope setting
    option domain-name-servers 192.168.1.250,192.168.1.251;
    default-lease-time 3600;
    max-lease-time 7200;
    
    ###DHCP range Setting
    #My host network,no dhcp release
    subnet 192.168.1.0 netmask 255.255.255.0 {
            not authoritative;
    }
    
    #range setting
    shared-network test-net {
        subnet 192.168.100.0 netmask 255.255.255.0 {
            pool {
            failover peer "p1";
            range 192.168.100.1 192.168.100.254;
            option broadcast-address 192.168.100.255;
            option routers 192.168.100.1;
            option subnet-mask 255.255.255.0;
            deny dynamic bootp clients;
            }
        }
        subnet 192.168.101.0 netmask 255.255.254.0 {
            pool {
            failover peer "p1";
            range 192.168.101.2 192.168.102.254;
            option broadcast-address 192.168.102.255;
            option routers 192.168.101.1;
            option subnet-mask 255.255.254.0;
            deny dynamic bootp clients;
            }
        }
    }
    
    
    
    ■エラー peer holds all free leases
    ログにこのようなエラーログが出てIPを払い出さない場合
    またセカンダリ側のdhcpdが落ちてしまう場合、どうもフェイルオーバー機能に問題があるようです。
    
    まだ未確認ですが、DHCP 4.1.1-P1 のリリースノート等にこのエラーの記述があります。
    3系なら3.1.1以上か、4系なら4.1.0a1以上ならこのエラーは出ないようです。
    よってこれ以上のバージョンにバージョンアップするか、とりあえずフェイルオーバー機能の
    記述部分をコメントアウトして、フェイルオーバーを無効にすると良いでしょう。
    
    

    前へ  トップへ inserted by FC2 system