Bond 模式下遠程安裝linux系統的理論和實踐
文件服務器是企業網絡中的核心服務器。如何確保其安全、穩定及高速訪問,是管理員最重要的工作之一。運用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模式,可以大幅度提高應用系統的網絡訪問性能。
【編輯推薦】