天天看點

《建構高可用Linux伺服器 第3版》—— 1.1 使用PXE+DHCP+Apache+Kickstart無人值守安裝CentOS 5.8 x86_64

本節書摘來自華章出版社《建構高可用linux伺服器 第3版》一 書中的第1章,第1.1節,作者:餘洪春 ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

centos 5.8 x86_64的安裝方法挺多的,最常見的有CD光牒安裝、kickstart無人值守安裝、優盤安裝及iso硬碟安裝等。現階段的工作由于需要大規模将centos 5.8 x86_64系統應用于叢集環境,是以這種無人值守安裝的方法主要用于在公司内網批量安裝新伺服器系統,這種方法極大地簡化了用CD光牒重複安裝centos 5.8 x86_64的過程,再加上通過應用分布式自動化運維工具puppet進行批量部署,達到了自動化運維的目的,避免了重複性勞動,極大地提高了工作效率。

首先,我們來介紹一下與之相關的原理和概念。

1.什麼是pxe

嚴格來說,pxe并不是一種安裝方式,而是一種引導方式。進行pxe安裝的必要條件是在要安裝系統的計算機中包含一個pxe支援的網卡(nic),即網卡中必須有pxe client。pxe(pre-boot execution environment)協定可以使計算機通過網絡啟動。此協定采用的是c/s結構,即大家熟知的客戶機和伺服器結構,其中pxe client在網卡的rom中。當計算機處于引導過程時,bios把pxe client調入記憶體中執行,然後由pxe client将放置在遠端的檔案通過網絡下載下傳到本地運作。運作pxe協定需要設定dhcp伺服器和tftp伺服器。dhcp伺服器會給pxe client(将要安裝系統的主機)配置設定一個ip位址,由于是給pxe client配置設定ip位址,是以在配置dhcp伺服器時需要增加相應的pxe設定。此外,在pxe client的rom中,已經存在了tftp client,那麼它就可以通過tftp協定到tftp server上下載下傳所需的檔案了。

2.什麼是kickstart

kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工幹預填寫的各種參數,并生成一個名為ks.cfg的檔案。如果在安裝過程中(不隻局限于生成kickstart安裝檔案的機器)出現要填寫參數的情況,安裝程式首先會去查找kickstart生成的檔案,如果找到合适的參數,就采用這些參數;如果沒有找到合适的參數,便需要安裝者手工幹預了。是以,如果kickstart檔案涵蓋了安裝過程中可能出現的所有需要填寫的參數,那麼安裝者完全可以隻告訴安裝程式從何處取ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重新開機系統,并結束安裝。

3.pxe+kickstart的安裝條件和詳細步驟

執行pxe+kickstart安裝需要的裝置為:

dhcp伺服器。

tftp伺服器。

kickstart所生成的ks.cfg配置檔案。

一台存放系統安裝檔案的伺服器,如nfs、http或ftp伺服器。

一台帶有pxe支援網卡的主機。

系統環境介紹如下:伺服器系統為centos 5.8 x86_64,ip為192.168.11.29。由于是最小化安裝的,我們在後面要用到system-config-kickstart工具,它必須依賴于x windows,是以我們要提前安裝好x windows及gnome并重新開機系統。

安裝x windows及gnome的步驟如下所示。

先裝x windows和gnome桌面環境,指令如下所示:

yum-y groupinstall 'x window system'

yum-y groupinstall 'gnome desktop environment'

然後修改/etc/inittab檔案并重新開機伺服器,使其運作在圖形模式下,主要修改的檔案内容如下所示:

重新開機伺服器指令如下:

完成上述準備工作後,就可以進行pxe+dhcp+apache+kickstart無人值守安裝centos 5.8了,安裝的步驟如下。

1)首先下載下傳centos5.8 x86_64CD光牒iso檔案至/usr/local/src下,并挂載至/mnt/cdrom目錄下,并确認系統已安裝好httpd服務,如下:

接下來我們挂載CD光牒iso檔案至/mnt/cdrom目錄下,指令如下:

cetnos 5.8 x86_64系列已預設安裝apache,我們可以用指令看下其版本号,如下所示:

指令顯示結果如下所示:

2)接下來複制CD光牒iso檔案下的所有内容(檔案和檔案夾)到/var/html/www(此目錄為apache預設documentroot目錄)下,無論是紅帽系統還是centos 5.8系統,如果是最小化安裝,基本上第一張dvdCD光牒檔案就足夠了,複制指令如下所示:

3)安裝tftp-server,并啟用tftp服務,同時啟動xinetd程序,步驟如下所示。

a)我們用指令安裝tftp-server,指令如下:

b)接着修改/etc/xinetd.d/tftp檔案,将disable的值由yes變為no,内容如下所示:

c)接着重新開機xinetd程序,指令如下所示:

4)配置支援pxe的啟動程式(注意:前面已經将centos 5.8 x86_64第一張CD光牒的内容複制到/var/www/html目錄中了,是以隻要從/var/www/html目錄中複制需要的檔案就行了)。

a)建立tftpboot檔案夾,指令如下所示,若該檔案夾已經存在則不用建立:

b)複制pxelinux.0檔案至tftpboot檔案夾中,指令如下所示:

c)把dvdCD光牒上的/image/pxeboot/initrd.img和vmlinuz複制到/tftpboot/中,指令如下所示:

d)複制dvdCD光牒上的isolinux/*.msg到/tftpboot目錄下,指令如下所示:

e)在tftpboot中建立一個pxelinux.cfg目錄:

f)将isolinux目錄中的isolinux.cfg複制到pxelinux.cfg目錄中,同時更改檔案名稱為default,指令如下所示:

g)在上一個步驟,即f)中,暫時不要修改default檔案,進行到這一步時,雖然已經可以通過網絡來引導并手動安裝kickstart了,但是由于這裡讨論的是無人值守安裝,是以先不修改這個default檔案。

5)安裝dhcp服務,同時修改如下配置:

然後複制配置模闆檔案到指定的目錄中,并重命名。

接着修改/etc/dhcpd.conf配置檔案,檔案最後修改内容如下所示:

最後啟動dhcp服務:

注意 如果機器數量過多,注意dhcp伺服器的位址池,不要出現因為耗盡ip而導緻dhcp伺服器沒有ip位址release的情況。

6)用yum工具自動安裝kickstart,同時配置system-config-kickstart。

a)首先我們需要安裝kickstart工具包,在centos 5.8 x86_64最小化安裝系統時,此軟體包預設沒有安裝,yum安裝指令如下所示:

b)在gnome環境下配置kickstart,指令如下所示:

運作上面的指令後可以對系統的一些基本配置進行設定,例如選擇時區、設定root密碼等。

c)接下來便要進行安裝了,建議選擇httpd安裝,切記不要輸入任何賬号,而是采用匿名安裝。

在安裝過程中,根據引導選擇安裝選項,不需要做更改。

d)kickstart會讓我們選擇需要批量安裝的centos 5.8分區資訊,我們建立四個分區,即/、/boot、/data和swap。

e)在進行網絡配置時,使用動态配置設定位址。

f)設定顯示配置時可以按照我們的習慣進行。

g)大家可以根據實際的工作需求來選擇自己需要的軟體包,由于伺服器安裝後會根據用途不一而安裝各種不同的軟體包,是以建議大家這裡選擇最小化安裝。

h)其他都選擇預設設定,不需要修改。

i)最後将生成的檔案ks.cfg儲存到/var/www/html下。ks.cfg檔案的配置方法為自動化無人值守安裝的重點和難點,此檔案稍有配置不當就需要人為幹預,如果大家遇到問題,建議參考我下面的ks.cfg配置檔案。

7)修改/tftpboot/pxelinux.cfg/default檔案,指定讀取ks.cfg的方法,即修改檔案第一行内容,改動後檔案第一行内容如下所示:

另外,也建議将timeout時間由原先的600改為1,timeout時間是引導時等待使用者手動選擇的時間,設為“1”表示直接引導。

8)/var/www/html/ks.cfg檔案内容如下所示(此内容是整個實驗過程的重點和難點,請關注):

此配置過程中的重點和難點說明如下:

分區操作按照目前線上分區來操作,即分成/、/boot、/data及swap四個分區,這裡的數值是以mb為機關的,大家可以根據自己伺服器的實際情況來規劃;其中/data分區是存放資料的,我們這裡用--grow --size=1參數來将其餘的剩餘空間全部配置設定給/data分區。

key --skip,如果是紅帽rhel系統,此選項可以跳過輸入序列号過程;如果是centos 5.8系統,則可以不保留此項内容。

reboot,此選項必須存在,也必須按照前面提到的方式設定位置,否則kickstart顯示一條消息,并等待使用者按任意鍵後才重新開機,此問題是很多讀者朋友在論壇上發言提問的,我在實驗過程中也遇到了此問題,建議多做幾次實驗。

clearpart --all --initlabel,此指令必須添加,否則系統會讓使用者手動選擇是否清除所有資料,這就需要人為幹預了,進而導緻自動化過程失敗。

其他方面的選項較容易看懂,這裡不再重複。

9)啟動kickstart需要的所有伺服器後,至此自動化安裝系統的過程就完成了,接下來我們就可以将内網機櫃中的幾十台機器全自動同時安裝centos 5.8 x86_64系統了。伺服器端對應服務啟動指令如下:

系統完成最小化後安裝後,大家可以根據自己公司的實際情況來進行系統優化。這裡用到的最小化優化腳本為init.sh,這個腳本還可以讓puppet伺服器進行推送。init.sh腳本的内容如下所示:

注意:

<code>#tune kernel parametres</code>選項:為核心優化部分,在這裡我隻做了基礎處理,大家有需求可以自行修改,記住:一切以系統穩定為最高原則。

<code>#vim setting</code>選項:為vim的個性化配置,如果想vim文法高亮,則必須安裝vim-enhanced包,另外,在使用vim的搜尋功能時,搜尋選中内容為高亮,感覺不是特别舒服,是以我這裡用了set nohlsearch選項,如果大家不介意此項功能,則不需要添加此語句。

<code>#disable ipv6</code>選項:我在測試時發現,在centos 5.8 x86_64系統下,如果不添加install ipv6 /bin/true語句到/etc/modprobe.conf檔案裡,是無法關閉ipv6選項的,而測試centos 5.5或5.6時不添加此句卻可以順利關閉ipv6,這點請大家注意。

當然,最後要reboot系統讓此配置生效。

以上就是用pxe+dhcp+apache+kickstart無人值守安裝centos 5.8 x86_64的完整步驟,如果在工作中有此需求的話,可以結合文檔進行相關操作,如果是在公司内部區域網路中操作,建議單獨劃分出一個網段,以免對公司内部的開發環境或辦公環境造成影響。

繼續閱讀