Bond 模式下远程安装linux系统的理论和实践(1)


文件服务器是企业网络中的核心服务器。如何确保其安全、稳定及高速访问,是管理员最重要的工作之一。运用Bond技术,可以有效解决服务器网络压力过大,以及单个网卡失效导致的网络服务中断等的问题。从而确保文件服务器的安全、稳定及高速访问运行。

本文就是从一位管理员的角度,教您怎样利用 PXE 服务器远程安装拥有网卡绑定技术的实现了负载均衡和失效保护功能的服务器。

Bond技术介绍

Bond技术原理

Bond就是将多块网卡虚拟成为一块网卡的技术,通过Bond技术让多块网卡看起来是一个单独的以太网接口设备并具有相同的 IP 地址。

Bond的原理是网卡在混杂 (promisc) 模式下运行;在这种模式下,网卡不像在通常情况下,只接收目的硬件地址是自身 Mac 的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担;而是接收网络上所有的数据帧,而且修改了驱动程序中的 mac 地址,将两块网卡的 Mac 地址改成相同,可以接收特定 mac 的数据帧,然后把相应的数据帧传送给Bond驱动程序处理。

Bond网卡的工作模式

网卡Bond后的工作模式有两种:主备的工作方式和负载均衡方式。

双网卡Bond拓扑图如下所示:

图 1. 双网卡Bond拓扑图

在主备模式下 , 只有主网卡 eth0 工作,eth1 作为备份网卡是不工作的,只有当一个网络接口失效时 ( 例如主交换机掉电等 ),为了不会出现网络中断,系统会按照配置指定的网卡顺序启动工作,保证机器仍能对外服务,起到了失效保护的功能。

在负载均衡工作模式下,由于两块网卡都正常工作,它能提供两倍的带宽,在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用。

Linux下通过网卡邦定技术既增加了服务器的可靠性,又增加了可用网络带宽,为用户提供不间断的网络服务。

Bond模式下远程安装 Linux 的难点

为了实现多块网卡的协同工作,Bond模式将自己的 MAC 地址复制到各个物理网卡上,让所有的网卡共享同一个 MAC 地址。这个方式就要求所有的网卡都要支持 BIOS,这样才能够让操作系统将 MAC 地址写到网卡上;对于不支持 BIOS 读写的网卡而言,重起以后就恢复到网卡上 MAC 地址,PXE 服务器可能无法根据记录的 MAC 地址找到相对应的网卡。

对于网卡配置成Bond模式的 Linux 而言,在使用 PXE 服务器进行安装的过程中,我们不但需要指定物理网卡的配置信息,还需要指定Bond网卡的配置信息,才能够让 PXE 服务器正确找到和识别目标机器的网卡,在目标机器重起后依然能够找到网络,并执行进一步 Linux 的安装。这里我们对Bond网卡后面的物理网卡数量做一个进一步讨论:

对于单物理网卡的Bond网卡而言,Bond网卡的 MAC 地址和物理网卡的物理地址是一致的;对于多物理网卡的Bond网卡而言,其中一块物理网卡会被设置为 Master,其他的网卡都是 Slave,Bond网卡的 MAC 地址取自标志为 Master 的物理网卡,然后将这个 MAC 地址复制到其他物理网卡上。所以在指定用于安装 Linux 的网卡时,我们需要指定Bond网卡,以及Bond网卡所对应的标志为 Master 的物理网卡。如果没有人为干预,一般情况下 Linux 所识别到的第一块网卡会被标志为 Master,也即使 eth0;对于有特殊配置的Bond网卡,需要根据具体的Bond配置情况来进行指定。)

PXE 服务器的安装与配置

PXE 服务器安装

安装 SLES 10 做为 PXE 服务器的操作系统,同时必须安装如下的几个服务器包:PXE 服务器包RPM 包名:pxe)、NFS 服务器包RPM 包名:nfs-utils)、TFTP 服务器包RPM 包名:tftp)、DHCP 服务器包RPM 包名:dhcp-server,dhcp-tools 和 dhcp)。以上安装检查无误后,我们即刻开始 PXE 的安装配置 。

DHCP 服务器的配置

1)配置 /etc/dhcpd.conf,内容如下 :

  1. default-lease-time 14400;   
  2. ddns-update-style none;   
  3. # define rules to identify DHCP Requests from PXE and Etherboot clients.   
  4. class "pxe" {   
  5. match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";   
  6. }   
  7. class "etherboot" {   
  8. match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";   
  9. }   
  10. subnet 192.168.0.0 netmask 255.255.255.0 {   
  11. pool {   
  12. range 192.168.0.191 192.168.0.191;   
  13. default-lease-time 14400;   
  14. max-lease-time 172800;   
  15. option broadcast-address 192.168.0.255;   
  16. allow members of "pxe";   
  17. allow members of "etherboot"; # allow etherboot, too   
  18. deny unknown-clients;   
  19. }   
  20. server-name "pxeserver";   
  21. next-server 192.168.0.191;   
  22. filename "pxelinux.0";   
  23. include "/etc/bond_hosts.inc";   
  24. }  

在配置文件中,根据实际环境修改相应的参数值subnet,broadcast,IP addresses,next-server)。

注意:next-server 的值必须是 PXE 启动服务器的 IP 地址 ,客户端根据这项的值找到 PXE启动服务器的 bootstrap 文件 pxelinux.0),并将此文件作为安装启动映像;最终此启动映像被网卡 ROM 里的 PXE客户端载入内存并运行 。

2)DHCP 服务器使用 192.168.0.0 子网,而且只为在 /etc/bond_hosts.inc 文件里面注册的需要网络启动寻找 PXE DHCP 的机器提供 DHCP 服务,同时忽略所有其他正常的 DHCP 请求,这样就可以避免在企业网络中与其他 DHCP 服务器发生冲突。

在 /etc/bond_hosts.inc 文件里记录每个机器的主机名、IP 地址和 MAC 地址。配置内容如下:

  1. host client1{   
  2. fixed-address 192.168.0.159;   
  3. hardware ethernet 00:1A:64:98:A3:A6;   
  4. }  

3)配置 /etc/sysconfig/dhcpd,内容如下 :

  1. DHCPD_CONF_INCLUDE_FILES="/etc/bond_hosts.inc" 

这将可以保证文件 /etc/bond_hosts.inc 能够被 DHCP 服务器正确的使用。

如果 PXE 启动服务器有两个网卡,我们在 /etc/sysconfig/dhcpd 文件里需要指定一块网卡监听 DHCP 请求。配置内容如下:

  1. DHCPD_INTERFACE="eth0" 

4)重启 DHCP 服务器。

  1. # rcdhcpd restart  

5)确保 DHCP 服务为启动项。

  1. # chkconfig --add dhcpd  

TFTP 服务器的配置

1)配置 /etc/xinetd.d/tftp 文件,内容如下:

  1. service tftp   
  2. {   
  3. socket_type = dgram   
  4. protocol = udp   
  5. wait = yes   
  6. user = root   
  7. server = /usr/sbin/in.tftpd   
  8. server_args = -s /tftpboot   
  9. disable = no   
  10. }  

其中

disable = no 是检查 TFTP 服务是激活状态

server_args = -s /tftpboot 是检查 TFTP 根目录存在

2)重启TFTP服务器。

  1. # rcxinetd restart  

3)确保 TFTP 服务为启动项。

  1. # chkconfig --add xinetd  


相关内容