温馨提示×

Ubuntu DHCP如何配置负载均衡

小樊
41
2025-12-24 04:27:51
栏目: 云计算

Ubuntu DHCP负载均衡与高可用实践

一、方案选型与总体建议

  • DHCPv4 中,协议本身不提供多服务器协同的“会话黏连”,生产上常用“地址池拆分 + 故障转移”来同时实现负载分担与高可用。拆分地址池简单有效,但无法动态均衡;ISC DHCP 的 failover 对等体 能在主备或负载分担模式下同步租约,是更完善的方案。跨网段需配置 DHCP 中继 将请求转发给服务器。避免在同一二层网段运行多台未协同的 DHCP 服务,以免地址冲突与重复发放。

二、方案一 地址池拆分实现简单负载分担(快速落地)

  • 适用:同网段、对“严格均衡”要求不高、希望快速上线的场景。
  • 思路:两台(或多台)DHCP 服务器各自负责同一子网中不重叠的 IP 段,客户端按“先到先得”自然分担。
  • 示例(两台服务器,子网 192.168.1.0/24):
    • 服务器A /etc/dhcp/dhcpd.conf
      • subnet 192.168.1.0 netmask 255.255.255.0 {
        • range 192.168.1.10 192.168.1.150;
        • option routers 192.168.1.1;
        • option subnet-mask 255.255.255.0;
        • option domain-name-servers 8.8.8.8, 8.8.4.4;
        • default-lease-time 600; max-lease-time 7200;
        • authoritative;
        • }
    • 服务器B /etc/dhcp/dhcpd.conf
      • subnet 192.168.1.0 netmask 255.255.255.0 {
        • range 192.168.1.151 192.168.1.254;
        • option routers 192.168.1.1;
        • option subnet-mask 255.255.255.0;
        • option domain-name-servers 8.8.8.8, 8.8.4.4;
        • default-lease-time 600; max-lease-time 7200;
        • authoritative;
        • }
  • 说明:两台服务器其他网络参数(网关、DNS、租期)保持一致;为关键设备预留静态绑定时应避开两段动态池。该方式实现简单,但无法在运行时根据负载动态调整分配比例。

三、方案二 ISC DHCP 故障转移对等体(推荐,负载分担+高可用)

  • 适用:需要高可用与更平滑的负载分担的生产环境。
  • 拓扑:两台服务器(示例 192.168.1.2/24192.168.1.3/24),同一二层网段或经中继转发同网段请求。
  • 安装与启用
    • sudo apt update && sudo apt install isc-dhcp-server
    • 编辑 /etc/default/isc-dhcp-server,指定监听接口(示例):INTERFACESv4=“eth0
  • 主服务器 /etc/dhcp/dhcpd.conf(片段)
    • failover peer “dhcp-failover” {
      • primary; # 标识为主
      • address 192.168.1.2; port 647;
      • peer address 192.168.1.3; peer port 647;
      • max-response-delay 30;
      • max-unacked-updates 10;
      • load balance max seconds 3;
      • mclt 600;
      • }
    • subnet 192.168.1.0 netmask 255.255.255.0 {
      • range 192.168.1.10 192.168.1.254;
      • option routers 192.168.1.1;
      • option subnet-mask 255.255.255.0;
      • option domain-name-servers 8.8.8.8, 8.8.4.4;
      • default-lease-time 600; max-lease-time 7200;
      • authoritative;
      • failover peer “dhcp-failover”;
      • }
  • 备服务器 /etc/dhcp/dhcpd.conf(片段)
    • failover peer “dhcp-failover” {
      • secondary; # 标识为备
      • address 192.168.1.3; port 647;
      • peer address 192.168.1.2; peer port 647;
      • max-response-delay 30;
      • max-unacked-updates 10;
      • load balance max seconds 3;
      • }
    • subnet 192.168.1.0 netmask 255.255.255.255.0 {
      • range 192.168.1.10 192.168.1.254;
      • option routers 192.168.1.1;
      • option subnet-mask 255.255.255.0;
      • option domain-name-servers 8.8.8.8, 8.8.4.4;
      • default-lease-time 600; max-lease-time 7200;
      • authoritative;
      • failover peer “dhcp-failover”;
      • }
  • 生效与验证
    • sudo systemctl restart isc-dhcp-server && sudo systemctl status isc-dhcp-server
    • 观察日志:journalctl -u isc-dhcp-server -f
    • 租约文件:/var/lib/dhcp/dhcpd.leases(两台都会写入/同步关键租约状态)
  • 提示:failover 的端口 647 需放通防火墙;mclt 建议与租期同量级(示例 600 秒);两台服务器时间需同步(建议 NTP)。

四、跨网段与运维要点

  • 跨网段部署:在三层边界或各 VLAN 上配置 DHCP 中继(ip helper / DHCP Relay),将 DHCP 广播转换为单播并指向两台服务器地址,中继所在网段需有相应的子网声明与网关选项。
  • 单台服务器多网卡:不要指望在多个接口上“同时应答同一广播域”的 DHCP 请求;应确保 DHCP 监听在正确的 VLAN/网段接口,避免回包路由错误导致客户端拿不到地址。
  • 观测与排障:查看服务状态与日志(systemctl、journalctl)、核对 /var/lib/dhcp/dhcpd.leases 租约分配与更新;必要时降低日志级别并抓取 UDP 67/68 端口流量进行分析。

0