Bond 模式下遠(yuǎn)程安裝linux系統(tǒng)的理論和實(shí)踐
文件服務(wù)器是企業(yè)網(wǎng)絡(luò)中的核心服務(wù)器。如何確保其安全、穩(wěn)定及高速訪問(wèn),是管理員最重要的工作之一。運(yùn)用Bond技術(shù),可以有效解決服務(wù)器網(wǎng)絡(luò)壓力過(guò)大,以及單個(gè)網(wǎng)卡失效導(dǎo)致的網(wǎng)絡(luò)服務(wù)中斷等的問(wèn)題。從而確保文件服務(wù)器的安全、穩(wěn)定及高速訪問(wèn)運(yùn)行。
本文就是從一位管理員的角度,教您怎樣利用 PXE 服務(wù)器遠(yuǎn)程安裝擁有網(wǎng)卡綁定技術(shù)的實(shí)現(xiàn)了負(fù)載均衡和失效保護(hù)功能的服務(wù)器。
Bond技術(shù)介紹
Bond技術(shù)原理
Bond就是將多塊網(wǎng)卡虛擬成為一塊網(wǎng)卡的技術(shù),通過(guò)Bond技術(shù)讓多塊網(wǎng)卡看起來(lái)是一個(gè)單獨(dú)的以太網(wǎng)接口設(shè)備并具有相同的 IP 地址。
Bond的原理是網(wǎng)卡在混雜 (promisc) 模式下運(yùn)行;在這種模式下,網(wǎng)卡不像在通常情況下,只接收目的硬件地址是自身 Mac 的以太網(wǎng)幀,對(duì)于別的數(shù)據(jù)幀都濾掉,以減輕驅(qū)動(dòng)程序的負(fù)擔(dān);而是接收網(wǎng)絡(luò)上所有的數(shù)據(jù)幀,而且修改了驅(qū)動(dòng)程序中的 mac 地址,將兩塊網(wǎng)卡的 Mac 地址改成相同,可以接收特定 mac 的數(shù)據(jù)幀,然后把相應(yīng)的數(shù)據(jù)幀傳送給Bond驅(qū)動(dòng)程序處理。
Bond網(wǎng)卡的工作模式
網(wǎng)卡Bond后的工作模式有兩種:主備的工作方式和負(fù)載均衡方式。
雙網(wǎng)卡Bond拓?fù)鋱D如下所示:
圖 1. 雙網(wǎng)卡Bond拓?fù)鋱D
在主備模式下 , 只有主網(wǎng)卡 eth0 工作,eth1 作為備份網(wǎng)卡是不工作的,只有當(dāng)一個(gè)網(wǎng)絡(luò)接口失效時(shí) ( 例如主交換機(jī)掉電等 ),為了不會(huì)出現(xiàn)網(wǎng)絡(luò)中斷,系統(tǒng)會(huì)按照配置指定的網(wǎng)卡順序啟動(dòng)工作,保證機(jī)器仍能對(duì)外服務(wù),起到了失效保護(hù)的功能。
在負(fù)載均衡工作模式下,由于兩塊網(wǎng)卡都正常工作,它能提供兩倍的帶寬,在這種情況下出現(xiàn)一塊網(wǎng)卡失效,僅僅會(huì)是服務(wù)器出口帶寬下降,也不會(huì)影響網(wǎng)絡(luò)使用。
Linux下通過(guò)網(wǎng)卡邦定技術(shù)既增加了服務(wù)器的可靠性,又增加了可用網(wǎng)絡(luò)帶寬,為用戶提供不間斷的網(wǎng)絡(luò)服務(wù)。
Bond模式下遠(yuǎn)程安裝 Linux 的難點(diǎn)
為了實(shí)現(xiàn)多塊網(wǎng)卡的協(xié)同工作,Bond模式將自己的 MAC 地址復(fù)制到各個(gè)物理網(wǎng)卡上,讓所有的網(wǎng)卡共享同一個(gè) MAC 地址。這個(gè)方式就要求所有的網(wǎng)卡都要支持 BIOS,這樣才能夠讓操作系統(tǒng)將 MAC 地址寫到網(wǎng)卡上;對(duì)于不支持 BIOS 讀寫的網(wǎng)卡而言,重起以后就恢復(fù)到網(wǎng)卡上 MAC 地址,PXE 服務(wù)器可能無(wú)法根據(jù)記錄的 MAC 地址找到相對(duì)應(yīng)的網(wǎng)卡。
對(duì)于網(wǎng)卡配置成Bond模式的 Linux 而言,在使用 PXE 服務(wù)器進(jìn)行安裝的過(guò)程中,我們不但需要指定物理網(wǎng)卡的配置信息,還需要指定Bond網(wǎng)卡的配置信息,才能夠讓 PXE 服務(wù)器正確找到和識(shí)別目標(biāo)機(jī)器的網(wǎng)卡,在目標(biāo)機(jī)器重起后依然能夠找到網(wǎng)絡(luò),并執(zhí)行進(jìn)一步 Linux 的安裝。這里我們對(duì)Bond網(wǎng)卡后面的物理網(wǎng)卡數(shù)量做一個(gè)進(jìn)一步討論:
對(duì)于單物理網(wǎng)卡的Bond網(wǎng)卡而言,Bond網(wǎng)卡的 MAC 地址和物理網(wǎng)卡的物理地址是一致的;對(duì)于多物理網(wǎng)卡的Bond網(wǎng)卡而言,其中一塊物理網(wǎng)卡會(huì)被設(shè)置為 Master,其他的網(wǎng)卡都是 Slave,Bond網(wǎng)卡的 MAC 地址取自標(biāo)志為 Master 的物理網(wǎng)卡,然后將這個(gè) MAC 地址復(fù)制到其他物理網(wǎng)卡上。所以在指定用于安裝 Linux 的網(wǎng)卡時(shí),我們需要指定Bond網(wǎng)卡,以及Bond網(wǎng)卡所對(duì)應(yīng)的標(biāo)志為 Master 的物理網(wǎng)卡。(如果沒(méi)有人為干預(yù),一般情況下 Linux 所識(shí)別到的***塊網(wǎng)卡會(huì)被標(biāo)志為 Master,也即使 eth0;對(duì)于有特殊配置的Bond網(wǎng)卡,需要根據(jù)具體的Bond配置情況來(lái)進(jìn)行指定。)
PXE 服務(wù)器的安裝與配置
PXE 服務(wù)器安裝
安裝 SLES 10 做為 PXE 服務(wù)器的操作系統(tǒng),同時(shí)必須安裝如下的幾個(gè)服務(wù)器包:PXE 服務(wù)器包(RPM 包名:pxe)、NFS 服務(wù)器包(RPM 包名:nfs-utils)、TFTP 服務(wù)器包(RPM 包名:tftp)、DHCP 服務(wù)器包(RPM 包名:dhcp-server,dhcp-tools 和 dhcp)。以上安裝檢查無(wú)誤后,我們即刻開始 PXE 的安裝配置 。
DHCP 服務(wù)器的配置
1)配置 /etc/dhcpd.conf,內(nèi)容如下 :
- 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";
- }
在配置文件中,根據(jù)實(shí)際環(huán)境修改相應(yīng)的參數(shù)值(subnet,broadcast,IP addresses,next-server)。
注意:next-server 的值必須是 PXE 啟動(dòng)服務(wù)器的 IP 地址 ,客戶端根據(jù)這項(xiàng)的值找到 PXE啟動(dòng)服務(wù)器的 bootstrap 文件 (pxelinux.0),并將此文件作為安裝啟動(dòng)映像;最終此啟動(dòng)映像被網(wǎng)卡 ROM 里的 PXE客戶端載入內(nèi)存并運(yùn)行 。
2)DHCP 服務(wù)器使用 192.168.0.0 子網(wǎng),而且只為在 /etc/bond_hosts.inc 文件里面注冊(cè)的需要網(wǎng)絡(luò)啟動(dòng)尋找 PXE DHCP 的機(jī)器提供 DHCP 服務(wù),同時(shí)忽略所有其他正常的 DHCP 請(qǐng)求,這樣就可以避免在企業(yè)網(wǎng)絡(luò)中與其他 DHCP 服務(wù)器發(fā)生沖突。
在 /etc/bond_hosts.inc 文件里記錄每個(gè)機(jī)器的主機(jī)名、IP 地址和 MAC 地址。配置內(nèi)容如下:
- host client1{
- fixed-address 192.168.0.159;
- hardware ethernet 00:1A:64:98:A3:A6;
- }
3)配置 /etc/sysconfig/dhcpd,內(nèi)容如下 :
- DHCPD_CONF_INCLUDE_FILES="/etc/bond_hosts.inc"
這將可以保證文件 /etc/bond_hosts.inc 能夠被 DHCP 服務(wù)器正確的使用。
如果 PXE 啟動(dòng)服務(wù)器有兩個(gè)網(wǎng)卡,我們?cè)?/etc/sysconfig/dhcpd 文件里需要指定一塊網(wǎng)卡監(jiān)聽(tīng) DHCP 請(qǐng)求。配置內(nèi)容如下:
- DHCPD_INTERFACE="eth0"
4)重啟 DHCP 服務(wù)器。
- # rcdhcpd restart
5)確保 DHCP 服務(wù)為啟動(dòng)項(xiàng)。
- # chkconfig --add dhcpd
TFTP 服務(wù)器的配置
1)配置 /etc/xinetd.d/tftp 文件,內(nèi)容如下:
- 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 服務(wù)是激活狀態(tài)
server_args = -s /tftpboot 是檢查 TFTP 根目錄存在
2)重啟TFTP服務(wù)器。
- # rcxinetd restart
3)確保 TFTP 服務(wù)為啟動(dòng)項(xiàng)。
- # chkconfig --add xinetd
#p#NFS 服務(wù)器的配置
1)創(chuàng)建存放安裝介質(zhì)的目錄。
- # mkdir – p /images/boot
2)在 /etc/exports 文件里增加如下的一行配置信息。
- /images/boot *(rw,no_root_squash,sync)
3)重啟 NFS 服務(wù)器。
- # service nfsserver restart
4)確保 NFS 服務(wù)為啟動(dòng)項(xiàng)。
- # chkconfig --add nfs
- # chkconfig --add nfsserver
- # chkconfig --add nfsboot
- # chkconfig --add portmap
配置 PXE 啟動(dòng)環(huán)境
PXE 引導(dǎo)文件的配置
在 TFTP root 目錄下創(chuàng)建 PXE 的目錄結(jié)構(gòu)。
1.創(chuàng)建目錄 pxelinux.cfg。
- # mkdir -p /tftpboot/pxelinux.cfg
1.拷貝 PXE bootstrap 文件到 /tftpboot 目錄下。
- # cp /usr/share/syslinux/pxelinux.0 /tftpboot
3) 創(chuàng)建 /tftpboot/pxelinux.cfg/default 文件 。內(nèi)容如下 :
- 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=”的值與實(shí)際環(huán)境一致 。
在 linux 安裝介質(zhì)的 /boot/isolinux/ 目錄下 ,可以抓取到內(nèi)核安裝引導(dǎo)文件 bzimage 和 initrd。
為抓取到的內(nèi)核安裝引導(dǎo)文件增加權(quán)限 。
- # chmod 777 bzimage
- # chmod 777 initrd
1.最終TFTP服務(wù)器的目錄結(jié)構(gòu)如下:
- /tftpboot
- /tftpboot/pxelinux.0
- /tftpboot/initrd
- /tftpboot/bzimage
- /tftpboot/pxelinux.cfg
- /tftpboot/pxelinux.cfg/default
目標(biāo)系統(tǒng)引導(dǎo)頁(yè)面的定義
創(chuàng)建 /tftpboot/message.txt,用來(lái)定義PXE引導(dǎo)頁(yè)面。
- 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
這里我們特別設(shè)置了 bonddev=bond0 用來(lái)指定網(wǎng)卡使用Bond模式安裝。#p#
實(shí)踐
這里我們講述一個(gè)基于 IBM x3650 上的真實(shí)遠(yuǎn)程安裝Bond模式下的 Linux 系統(tǒng)的實(shí)踐。
1.按照上述過(guò)程搭建 PXE 服務(wù)器。
2.拷貝安裝介質(zhì)文件到 PXE 服務(wù)器上的 /images/boot 目錄下,更改安裝介質(zhì)名字為 ubuntu.904。
3.重啟 x3650,進(jìn)入自檢頁(yè)面。
圖 2. 自檢頁(yè)面
4.在自檢界面按“F12”。
圖 3. 按“F12”
5.選擇“Network”讓機(jī)器從網(wǎng)絡(luò)引導(dǎo)模式啟動(dòng)。
圖 4. 選擇“Network”
6.進(jìn)入網(wǎng)絡(luò)啟動(dòng)模式。
圖 5. 進(jìn)入網(wǎng)絡(luò)模式
7.網(wǎng)絡(luò)啟動(dòng)后,看到系統(tǒng)引導(dǎo)頁(yè)面。
圖 6. 系統(tǒng)引導(dǎo)頁(yè)面#p#
8.在屏幕上輸入“ubuntu build=.904 ip=192.168.0.159 ethdev=eth0 bonddev=bond0”。這里注意一定要加入“bonddev=bond0”設(shè)定Bond模式。
圖 7. 系統(tǒng)引導(dǎo)頁(yè)面
9.敲入回車后,安裝開始。
圖 8. 安裝開始
10.安裝過(guò)程中,測(cè)試機(jī)會(huì)遠(yuǎn)程到 PXE 服務(wù)器上 mount 安裝介質(zhì)。
圖 9. 遠(yuǎn)程 mount 安裝介質(zhì)
圖 10. 進(jìn)行網(wǎng)絡(luò)安裝
11.安裝成功,運(yùn)行“ifconfig | more”來(lái)查看在 bond0 下綁定了 IP 地址 192.168.0.159
圖 11. 查看 IP 地址
總結(jié)
本文主要介紹了基于Bond模式下遠(yuǎn)程安裝 linux 系統(tǒng)的理論和實(shí)踐,網(wǎng)卡通過(guò)應(yīng)用Bond模式,可以大幅度提高應(yīng)用系統(tǒng)的網(wǎng)絡(luò)訪問(wèn)性能。
【編輯推薦】