页面

2010年4月1日星期四

DHCP 与负载平衡

DHCP与负载平衡

一般中小企业为因应公司成长,逐渐建置二或三条以上的 Internet 线路后,原先的 DHCP 伺服器,往往会将客户端电脑的预设闸道( Default Gateway ),都指向到其中一个线路上去。这样的情况,会使得某一条线路的使用率很高,而其他条线路却使用率很低!本文将介绍读者,以『设定 DHCP 伺服器,平均分配客户端电脑的预设闸道。 』,轻松达到负载平衡的目地。

示意图:之前(左)之后(右)

DHCP 伺服器建置流程

以下将示范如何建置 DHCP 伺服器,并使其平均分配客户端电脑的预设闸道。

安装 DHCP 伺服器套件

第1步:开启终端机程式,输入指令『 rpm -qa | grep dhc 』查询是否已经安装了 DHCP 伺服器套件。如果发现系统内还没有安装相关套件,请由安装光碟或网路下载,取得相关套件安装。其中包含伺服端套件『 dhcp 』及客户端套件『 dhclient 』。若是读者已经装好相关套件则可略过第2步与第3步。

第2步:从安装光碟或网路下载,取得相关套件安装。笔者以 Fedora Core 3 为例,相关套件在安装光碟『 Fedora/RPMS/ 』的目录下。或可使用 wget 指令透过网路下载即可
wget ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS/dhcp-3.0.1-11.i386.rpm

wget ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS/dhclient-3.0.1-11.i386.rpm

第3步:使用 rpm 指令或图形介面安装相关套件。使用 rpm 指令安装套件的用法为『 rpm -ivh 套件名称』,详细指令如下
rpm -ivh dhcp-3.0.1-11.i386.rpm dhclient-3.0.1-11.i386.rpm

如果要使用图形介面安装,请依序点选桌面上的【应用程式】 【系统设定】 【新增╱移除应用程式】开启『套件管理』对话盒。对话盒出现后,利用垂直卷轴往下拖拉对话盒画面,找到『网路伺服器』将左边的核取方块选取。

接着在右边的『详细资讯』上按一下滑鼠左键。然后在『网路伺服器套件详细资讯』对话盒内勾选『 dhcp -一个 DHCP Dynamic Host Configuration Protocol )伺服器与中继代理( relay agent )。 』最后按下〔关闭〕回到『套件管理』视窗,再按一下〔更新〕。接下来依照指示放入光碟片即可。

设定 DHCP 设定档『 dhcpd.conf

第1步: DHCP 伺服器的设定包含在『 /etc/dhcpd.conf 』设定档案,接下来执行『 vi /etc/dhcpd.conf 』指令来设定 DHCP 伺服器。

第2步:将内容设定如下

 ddns-update-style ad-hoc; 
 
 option domain-name "localdomain"; 
 option domain-name-servers 168.95.1.1, 168.95.192.1; 
 
 subnet 192.168.2.0 netmask 255.255.255.0 { 
  pool { 
  range 192.168.2.10 192.168.2.59; 
  option routers 192.168.2.1; 
  } 
  pool { 
  range 192.168.2.60 192.168.2.109; 
  option routers 192.168.2.2; 
  } 
  pool { 
  range 192.168.2.110 192.168.2.159; 
  option routers 192.168.2.3; 
  } 
 } 

设定档案内容解释如下:

动态 dns 的更新方式,在此使用 ad-hoc 的方式:

 ddns-update-style ad-hoc; 

分配给客户端电脑的网域名称,在此以 localdomain 为例:

 option domain-name "localdomain"; 

分配给客户端电脑的名称解析伺服器,在此以 dns.hinet.net 168.95.1.1 )与 hntp1.hinet.net 168.95.192.1 )为例:

 option domain-name-servers 168.95.1.1, 168.95.192.1; 

管理 192.168.2.0/255.255.255.0 这个网段

 subnet 192.168.2.0 netmask 255.255.255.0 { 
 ... 
 ... 
 ... 
 } 

这就是本文的重心:将客户端电脑的 IP 分三段,分别走向不同的预设闸道。

192.168.2.10 192.168.2.59 这段的主机预设闸道为 192.168.2.1 IP 分享器 -A 的内部 IP

192.168.2.60 192.168.2.109 这段的主机预设闸道为 192.168.2.2 IP 分享器 -B 的内部 IP

192.168.2.110 192.168.2.159 这段的主机预设闸道为 192.168.2.3 IP 分享器 -C 的内部 IP

  pool { 
  range 192.168.2.10 192.168.2.59; 
  option routers 192.168.2.1; 
  } 
  pool { 
  range 192.168.2.60 192.168.2.109; 
  option routers 192.168.2.2; 
  } 
  pool { 
  range 192.168.2.110 192.168.2.159; 
  option routers 192.168.2.3; 
  } 

启动 DHCP 伺服器

在设定档案撰写好后,需要启动 DHCP 伺服器,这样才会使设定生效。此时,可以执行『 service dhcpd start 』或『 /etc/init.d/dhcpd start

设定开机时自动启动 DHCP 伺服器

可使用命令模式,执行『 chkconfig dhcpd on 』设定开机时自动启动 DHCP 伺服器并可利用『 chkconfig --list dhcpd 』检查是否设定成功。

或使用选单模式,执行『 ntsysv 』进入设定介面后,随后利用〔 〕键移动游标选择〔 dhcpd 〕,然后按一下空白键进行选取,再按下〔 Tab 〕键将游标移动到〔确定〕并按下〔 Enter 〕键离开。

@TIPS :以上的两个方式,都可以用来设定 daemon/service 是否要在开机时自动启动。

DHCP 客户端电脑测试流程

要测试 DHCP 伺服器是否运作得宜,需要使用到客户端电脑,接下来就以常见的 Windows Linux 做示范。

NOTE :另一种常见的作业系统 MAC OS X ,因笔者身边暂时无此种类型的电脑,故无法一一做介绍,请读者自行查询 MAC OS X 相关使用手册,进行测试。

Windows 客户端电脑测试流程

第1步:开启『控制台』中『网路和拨号连线』『区域连线内容』对话盒,双击〔 Internet Protocol(TCP/IP) 〕。接着在『 Internet Protocol(TCP/IP) 内容』对话盒中,勾选〔自动取得 IP 位址 (0) 〕及〔自动取得 DNS 伺服器位址 (B) 〕,之后皆按下〔确定〕离开。

第2步:透过【开始功能表】 【执行】 cmd 】,呼叫出 cmd.exe 程式,接着执行『 ipconfig /all 』,可以看到比较详细的资讯。以此例来说:这台电脑的使用 IP 为『 192.168.2.26 』,预设闸道为『 192.168.2.1

Linux 客户端电脑测试流程

第1步:开启终端机程式,输入指令『 netconfig

按下〔 Enter 〕回答〔是〕

按下〔空白键〕勾选〔使用动态分配 IP(BOOTP/DHCP) 〕,接着按下〔 Tab 〕键使游标移动到〔确定〕,按下〔 Enter 〕离开选单画面

第2步:输入指令『 service network restart 』重新启动网路

第3步:输入指令『 ifconfig 』查询 IP 相关资讯。以此例来说:这台电脑的使用 IP 为『 192.168.2.62 』。

接着输入指令『 route -n 』查询预设闸道资讯。以此例来说:这台电脑使用的预设闸道为『 192.168.2.2

其他相关资讯及结语

底下就 DHCP 伺服器该如何查询发配纪录,以及实际运作的情形,加以介绍。

DHCP 伺服器的发配纪录『 dhcpd.leases

DHCP 伺服器的发配客户端电脑的纪录会写在『 dhcpd.leases 』,可执行『 less /var/lib/dhcp/dhcpd.leases 』观看其内容。

内容范本如下:

 ... 
 lease 192.168.2.26 { 
  starts 6 2005/06/25 17:03:25; 
  ends 0 2005/06/26 05:03:25; 
  tstp 0 2005/06/26 05:03:25; 
  binding state active; 
  next binding state free; 
  hardware ethernet 00:01:02:73:70:b1; 
  uid "\001\000\001\002sp\261"; 
  client-hostname "sunnylin_desk"; 
 } 
 ... 

可得知的相关资讯包括:

发送出去的 IP 192.168.2.26

 ... 
 lease 192.168.2.26 { 
 ... ... ... 
 } 
 ... 

租约开始与结束的日期

  starts 6 2005/06/25 17:03:25; 
  ends 0 2005/06/26 05:03:25; 

客户端主机的硬体 MAC 位址

  hardware ethernet 00:01:02:73:70:b1; 

客户端主机的主机名称

  client-hostname "sunnylin_desk"; 

IP 范围配置注意事项

在实际运作的情形下, DHCP 伺服器在刚刚启动时并不一定会很平均的发配区段。举例来说:若是企业内部有 100 台电脑,皆使用 DHCP 自动取得 IP ,建议将区段设定成 3 段各 34 台( 3 x 34 = 102 > 100 )的方式。避免因为范围设定太大造成多数主机都取得同一预设闸道的 IP 区段,或是范围设定太小造成有些主机无法取得 IP 的问题。

结论

以上的设定经验,其实是笔者在实务工作上,想要更『人性化』及更『方便管理』而实验出来的方式。若读者用比较技术关点的『负载平衡』来看,说实在的是有些差异。毕竟『负载平衡』包含『 InBound (进)』与『 OutBound (出)』两方面,本例其实只做到『 InBound 』的部份,而且并未提及『备援机制』。

若读者对于专业等级的『负载平衡』解决方案有兴趣,其实是可以朝向研究像是『负载平衡理论』及『 Linux 在负载平衡上的应用』,其实市场上有许多的负载平衡主机,皆是以 Linux 为基础的喔。



没有评论:

发表评论