KEA-DHCP+MariadbのHA構築方法

# はじめに

本記事では、UbuntuにKeaインストール、ファイル構成を説明します。Keaについてはこの記事では説明しません。

## 手順

Keaインストール

    apt-get install -y isc-kea-*
    apt-get update

Keaコンフィグ設定(/etc/kea/kea-dhcp4.conf)

    {
    "Dhcp4": {
        "interfaces-config": {
            // interface name (e.g. "eth0" or specific IPv4 address on that
            // interface name (e.g. "eth0/192.0.2.1").
            "interfaces": [ "eth0" ] //インターフェイスで変更
    
        },
    
        "control-socket": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea4-ctrl-socket"
        },
    
        "lease-database": {
            "type": "memfile",
            "lfc-interval": 3600
        },
        
        //リースをデータベースで管理する用
        //  "lease-database": {
        //  "type": "mysql",
        //  "name": "kea",
        //  "user": "kea",
        //  "password": "database_password",
        //  "host": "192.168.0.0",
        //  "port": 3306
        //  },

        //  "hosts-database": {
        //  "type": "mysql",
        //  "host": "localhost",
        //  "name": "kea",
        //  "user": "kea",
        //  "password": "password"
        //  },
        
        "expired-leases-processing": {
            "reclaim-timer-wait-time": 10,
            "flush-reclaimed-timer-wait-time": 25,
            "hold-reclaimed-time": 3600,
            "max-reclaim-leases": 100,
            "max-reclaim-time": 250,
            "unwarned-reclaim-cycles": 5
        },
    
        "renew-timer": 900,
        "rebind-timer": 1800,
        "valid-lifetime": 3600,
    
        "option-data": [
            {
                "name": "domain-name-servers",
                "data": "8.8.8.8" //DSNアドレスに変更
            },
    
        ],
    
        //ホットスタンバイのフック
        "hooks-libraries": [
            {    //hookが入っているLinkに変更
               "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so", 
               "parameters": {}
           },
           {
               "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so",
               "parameters":  {
                    "high-availability": [ { //サブのサーバー情報など
                            "this-server-name": "kea_1", //このサーバーの名前
                            "mode": "hot-standby", //HAやL
                            "hearbeat-delay": 10000,
                            "max-response-delay": 10000,
                            "max-ack-delay": 5000,
                            "max-unacked-clients": 5,
                            "peers": [
                            {
                                    "name": "kea_1",
                                    "url": "http://192.168.0.0:8080/", //primary用のアドレス
                                    "role": "primary",
                                    "auto-failover": true
                            },
                            {
                                    "name": "kea_2",
                                    "url": "http://192.168.0.0:8080/", //secondar用のアドレス
                                    "role": "standby",
                                    "auto-failover": true
                            }
                    ]
                    }]
              }
           }
        ],
    
        "subnet4": [
            {
                "id": 1,
                "subnet": "192.168.0.0/0",  //サブネット変更
                "pools": [ { "pool": "192.168.0.50 - 192.168.0.100" } ], //DHCPプールに変更
            "option-data": [
            {
                    "name": "routers",
                    "data": "192.168.0.1" //ゲートウェイに変更
            }
            ]
            },
            //DHCPプールを複数にする用
            //{
            //    "id": 2,
            //    "subnet": "192.168.200.0/0",
            //    "pools": [ { "pool": "192.168.200.100 - 192.168.200.150" } ],
            //"option-data": [ {
            //        "name": "routers",
            //        "data": "192.168.200.1"
            //                } ]
            //},
    
        ],
    
        "loggers": [
        {
            "name": "kea-dhcp4",
            "output-options": [
                {
                    "output": "/var/log/kea/kea-dhcp4.log", //ログファイルの場所に変更
                    "maxver": 8,
                    "maxsize": 204800,
                    "flush": true
                }
            ],
            "severity": "INFO", //デバッグの場合"DEBUG"に変更
    
            // If DEBUG level is specified, this value is used. 0 is least verbose,
            // 99 is most verbose. Be cautious, Kea can generate lots and lots
            // of logs if told to do so.
            "debuglevel": 0 //デバッグは"99"にしてください
        }
      ]
    }
    }

DHCP4再起動

    sudo systemctl enable isc-kea-dhcp4-server
    sudo systemctl restart isc-kea-dhcp4-server

mariadbインストール

    sudo apt-get install -y mariadb-server
    sudo systemctl enable mariadb-server

mariadbの初期設定

    mysql_secure_installation

DHCP4用のデータベース作成

    mysql -u root -p
    
    CREATE DATABASE kea;
    GRANT ALL ON kea.* TO keauser@localhost IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    QUIT;
    
    kea-admin lease-init mysql -u kea -p password -n kea

Keaのコンフィグに書き込む

    "lease-database": {
        "type": "mysql",
        "name": "kea",
        "user": "kea",
        "password": "password",
        "host": "192.168.0.0",
        "port": 3306
    },
    
    "hosts-database": {
    "type": "mysql",
    "host": "localhost",
    "name": "kea",
    "user": "kea",
    "password": "password"
    },

kea-dhcp4再起動

    sudo systemctl restart isc-kea-dhcp4-server

## エラーが発生した場合
エラー文があるか確認

    sudo systemctl status mariadb

プライマリーセカンダリーが通信出来てるか確認

    sudo journalctl -xe

### データベースのリース確認用

公式ページ参照:https://ftp.iij.ad.jp/pub/network/isc/kea/1.6.0/doc/html/man/kea-admin.8.html