-
DHCP
服务器的灾难备份
概述
动态主机设置协议
(DHCP)
用于为用户提供网络参数配置,其最重要的功能就是动态分配
IP
地址。作为一种核心的网络服务,要求其具有高鲁棒性,
高灵活性,简单说就是具有冗
余备份功能。传统的简单冗余实现,往往会带来
IP
地址空间不足,无法实现在线切换等问<
/p>
题。目前由
ISC
(Internet Software Consortium)
提供的开源
DHCP
软件实现了
Failover(
灾难备份
)
的功能
,
很好地解决了传统方法带来的问题
,
在业界得到广泛地应用,<
/p>
特别是
Linux
< br>平台,很早就采用了该实现方法。但实践中由于客户对该功能的理解不够深
入,影
响了工程中使用,
本文归纳了灾难备份中的几个主要概念:
服务
器状态机转移,
IP
地
址绑定状态的变更等
,
着重对灾备的原理进行详细介绍
,
有利于用户在工程中充分发挥
灾备
的强大功能。
灾备中
DHCP
服务器的状态机切换
IETF
的
文档中描述了
DHCP
灾备协议,
ISC
DHCP 4.1
服
务器对这一协议进行了实现,它允许两台
服务器共享公共地址池,
每个服务器可以分配地址
池中一半的地
址,这时候我们说两个服务器都处于
NOMAL
状态下。如果其中一台服务器
S1
出现故障
,
虽然两台机子的通信失败<
/p>
,
但另外一台
S2
的
DHCP
服务不会有任何影响,
他可
以响应已分配地址客户端的
renew
消息,也可以接收新客户端的
discovery
消息,然
后基于
自己管理的一半地址池,分配给他们可用的地址,这种情况下
S2
会自动切换到
COMMUNICATION-INTERRUPTED
状态。
如果故障服务器
S1
长期无法恢复,我们就需要将
S1
宕机的消息告知
S2
(通常是向
S2
发送
omshell
外部命令)
,
这时候
S2
会等待一个安全期
(由配置文件中的
MCLT
定义)
,
保证
S1
服务的
IP
地址都已过期,然后
S2
将会回收先前由
S1
管理的另外一半地址池,
对整个
地址池进行管理和分配,同时
S2
会自动切换到
PARTNER-
DOWN
状态。之后当
S1
恢复时,它会自动检测网络,与
S1
进行通信,然后向
S1
发出同步地址数据库的请
求
,
等同步完成后
,
两个服务器就会像以前一样各自管理一半的
地址池
,
自动进入
NORMAL
状态。
总之,
NORMAL, COMMUNICATION-
INTERRUPTED, PARTNER-DOWN
是
DHCP
灾
备机制中的三种主要状态
机,事实上,灾备切换是一个复杂的过程,其中还包含很多中间状
态,比如,
RECOVER
状态、
RECOVER-
DONE
状态、
POTENTIAL-CONFLICT
状态,
等等。下图是灾备中主要状态机的切换。
图
1.
灾备中的主要状态机切换
?
NORMAL
状态下的
DHCP
服务操作
当
DHCP
服务器处于
NORMAL
状态时,
每个服务器都会响应所有的
DISCOVERY
消息,响应来至于自己已分配地址客户<
/p>
端的
REQUEST
消息
(
REQUEST/RENEWAL
和
REQUEST/REBINDING
除外)
,
而对于地址池中任何客户端的
REQUEST/RENEWAL
和
REQUEST/REBINDING
消息,每个服务器都可以响应。另外,一个服务器
S1
对
客户端的消息响应可能会引起
其地址数据库的数据更新,比如新分配了地址,时间
戳发生变化,或客户端地址过期,这
时
S1
会将更新消息(
BNDUPD
)及更新内容
发送给它的
PARTNER
服务器
S2
,
S2
完成对自己的地址数据库更新后
,
会向
S1
回复消息(
BNDACK
);
?
COMMUNICATIONS-
INTERRUPTED
状态下的
DHCP
服务操作
当两个服务器
处于
COMMUNICATIONS-INTERRUPTED
状态下时,每个服务器都独立地提供
DHCP
服务,而并不假定
PARTNER
服务器已经宕机。事实上,它的
PARTNER
服务器也许工作正常只是通信发生了问题
p>
,
或者是真的不工作了
。
< br>在这样的情形下,
每个服务器都会响应来自任意客户端的请求消息,而当它们之间
的通信恢复后,双
方服务器会自动地进行一个地址数据库的同步整合操作;
?
PARTNER-DOWN
状态下的
DHCP
服务操作
当一个服务器处于
COMMUNICATIONS-INTERRUPTED
状态下时,该服务器假定它的
PARTNER
处于宕机状态,并基于整个地址池为所有的
DHCP
客户端提供服务。
DHCP
地址数据库中
IP
地址的状态切换
大多数
DHCP
服务器中,一个
IP
地址能呈现多种状态。灾备工作模式下,对于管辖范围
内的所有
IP
,
一个服务器和它的
PARTNER
需要共同维护了一份信息一致的地址池数据
库,因此在两个服务
器之间会进行很多的数据同步工作。一个服务器
S1
的任何地址状态
发生变化,比如租约更新,地址过期,地址释放等,都
需要
PARTNER S2
同步变化,具
体的流程是:
S1
p>
将更新消息(
BNDUPD
)发送到
S2
,
S2
p>
根据消息对数据库进行相应的
更新,完成后再向
S1
回复确认消息(
BNDA
CK
)。以下是主要地址状态机的简介以及状
态机切换。
?
?
ACTIVE
–
客户端已经获取了该
IP
的租约。
EXPIRED
–
意味着该
IP
的租约已经过期
。
在这种状态下
,
服务器会向
PARTNER
发送更新信息,当收到
PARTNER
端的确认消息(
BN
DACK
)后,服务器把该
IP
的状态进一步置为
FREE
,这样就可以对它重新分配了。
?
RELEASED
–
意味着客户端向服务器发送了
DHCPRELEASE
的消息。在这种状
态下,服务器会向
PARTNER
发送更新信息,当收到
PARTNER
端的更新确认消
息(
BNDACK
)后,服务器把该
IP
的状态进一步置为
FREE
。
?
FREE
–
当
DHCP
服务器通过
ICMP
探测到某
IP
地址未被使用,并且也不是刚
刚被释放或过期的地址,它就将该
IP
设置为
FREE
,然后向
PARTNER
发送同
步请求,这样该
IP
就可以重新分配了。(注意:如果在
PARTNER-DOWN
状态
下<
/p>
,
需要等待
MCLT (Maximum Client Lead Time,
该延迟确保其
PARTNER
上维
护的地址租约已经过期
)
,然后将其
PARTNER
所维护的地址置为
FREE
)。
图
2. IP
地址的状态转换