文件服务器是企业网络中的核心服务器。如何确保其安全、稳定及高速访问,是管理员最重要的工作之一。运用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,内容如下 :
- default-lease-time 14400;
- ddns-update-style none;
- # define rules to identify DHCP Requests from PXE and Etherboot clients.
- class "pxe" {
- match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
- }
- class "etherboot" {
- match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";
- }
- subnet 192.168.0.0 netmask 255.255.255.0 {
- pool {
- range 192.168.0.191 192.168.0.191;
- default-lease-time 14400;
- max-lease-time 172800;
- option broadcast-address 192.168.0.255;
- allow members of "pxe";
- allow members of "etherboot"; # allow etherboot, too
- deny unknown-clients;
- }
- server-name "pxeserver";
- next-server 192.168.0.191;
- filename "pxelinux.0";
- include "/etc/bond_hosts.inc";
- }
在配置文件中,根据实际环境修改相应的参数值(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 地址。配置内容如下:
- host client1{
- fixed-address 192.168.0.159;
- hardware ethernet 00:1A:64:98:A3:A6;
- }
3)配置 /etc/sysconfig/dhcpd,内容如下 :
- DHCPD_CONF_INCLUDE_FILES="/etc/bond_hosts.inc"
这将可以保证文件 /etc/bond_hosts.inc 能够被 DHCP 服务器正确的使用。
如果 PXE 启动服务器有两个网卡,我们在 /etc/sysconfig/dhcpd 文件里需要指定一块网卡监听 DHCP 请求。配置内容如下:
- DHCPD_INTERFACE="eth0"
4)重启 DHCP 服务器。
- # rcdhcpd restart
5)确保 DHCP 服务为启动项。
- # chkconfig --add dhcpd
TFTP 服务器的配置
1)配置 /etc/xinetd.d/tftp 文件,内容如下:
- service tftp
- {
- socket_type = dgram
- protocol = udp
- wait = yes
- user = root
- server = /usr/sbin/in.tftpd
- server_args = -s /tftpboot
- disable = no
- }
其中
disable = no 是检查 TFTP 服务是激活状态
server_args = -s /tftpboot 是检查 TFTP 根目录存在
2)重启TFTP服务器。
- # rcxinetd restart
3)确保 TFTP 服务为启动项。
- # chkconfig --add xinetd
#p#NFS 服务器的配置
1)创建存放安装介质的目录。
- # mkdir – p /images/boot
2)在 /etc/exports 文件里增加如下的一行配置信息。
- /images/boot *(rw,no_root_squash,sync)
3)重启 NFS 服务器。
- # service nfsserver restart
4)确保 NFS 服务为启动项。
- # chkconfig --add nfs
- # chkconfig --add nfsserver
- # chkconfig --add nfsboot
- # chkconfig --add portmap
配置 PXE 启动环境
PXE 引导文件的配置
在 TFTP root 目录下创建 PXE 的目录结构。
1.创建目录 pxelinux.cfg。
- # mkdir -p /tftpboot/pxelinux.cfg
1.拷贝 PXE bootstrap 文件到 /tftpboot 目录下。
- # cp /usr/share/syslinux/pxelinux.0 /tftpboot
3) 创建 /tftpboot/pxelinux.cfg/default 文件 。内容如下 :
- prompt 1
- display message.txt
- # UBUNTU
- label ubuntu
- kernel bzimage
- append initrdinitrd=initrd init=/var/rammnt/bin/init
- splash=silent showopts
- netinstall=1
- nfsserver=192.168.0.191
- netmask=255.255.255.0 root=/dev/nfs
- gateway=192.168.0.1
修改“nfsserver=, netmask=, and gateway=”的值与实际环境一致 。
在 linux 安装介质的 /boot/isolinux/ 目录下 ,可以抓取到内核安装引导文件 bzimage 和 initrd。
为抓取到的内核安装引导文件增加权限 。
- # chmod 777 bzimage
- # chmod 777 initrd
1.最终TFTP服务器的目录结构如下:
- /tftpboot
- /tftpboot/pxelinux.0
- /tftpboot/initrd
- /tftpboot/bzimage
- /tftpboot/pxelinux.cfg
- /tftpboot/pxelinux.cfg/default
目标系统引导页面的定义
创建 /tftpboot/message.txt,用来定义PXE引导页面。
- Boot Options:
- Currently available build values:
- ubuntu.904
- EXAMPLE:
- To install build .904:
- ubuntu build=.904 ip=192.168.0.159 ethdev=eth0 bonddev=bond0
这里我们特别设置了 bonddev=bond0 用来指定网卡使用Bond模式安装。#p#
实践
这里我们讲述一个基于 IBM x3650 上的真实远程安装Bond模式下的 Linux 系统的实践。
1.按照上述过程搭建 PXE 服务器。
2.拷贝安装介质文件到 PXE 服务器上的 /images/boot 目录下,更改安装介质名字为 ubuntu.904。
3.重启 x3650,进入自检页面。
图 2. 自检页面
4.在自检界面按“F12”。
图 3. 按“F12”
5.选择“Network”让机器从网络引导模式启动。
图 4. 选择“Network”
6.进入网络启动模式。
图 5. 进入网络模式
7.网络启动后,看到系统引导页面。
图 6. 系统引导页面#p#
8.在屏幕上输入“ubuntu build=.904 ip=192.168.0.159 ethdev=eth0 bonddev=bond0”。这里注意一定要加入“bonddev=bond0”设定Bond模式。
图 7. 系统引导页面
9.敲入回车后,安装开始。
图 8. 安装开始
10.安装过程中,测试机会远程到 PXE 服务器上 mount 安装介质。
图 9. 远程 mount 安装介质
图 10. 进行网络安装
11.安装成功,运行“ifconfig | more”来查看在 bond0 下绑定了 IP 地址 192.168.0.159
图 11. 查看 IP 地址
总结
本文主要介绍了基于Bond模式下远程安装 linux 系统的理论和实践,网卡通过应用Bond模式,可以大幅度提高应用系统的网络访问性能。
【编辑推荐】