天天看点

《构建高可用Linux服务器 第3版》—— 1.1 使用PXE+DHCP+Apache+Kickstart无人值守安装CentOS 5.8 x86_64

本节书摘来自华章出版社《构建高可用linux服务器 第3版》一 书中的第1章,第1.1节,作者:余洪春 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

centos 5.8 x86_64的安装方法挺多的,最常见的有光盘安装、kickstart无人值守安装、优盘安装及iso硬盘安装等。现阶段的工作由于需要大规模将centos 5.8 x86_64系统应用于集群环境,所以这种无人值守安装的方法主要用于在公司内网批量安装新服务器系统,这种方法极大地简化了用光盘重复安装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_64光盘iso文件至/usr/local/src下,并挂载至/mnt/cdrom目录下,并确认系统已安装好httpd服务,如下:

接下来我们挂载光盘iso文件至/mnt/cdrom目录下,命令如下:

cetnos 5.8 x86_64系列已默认安装apache,我们可以用命令看下其版本号,如下所示:

命令显示结果如下所示:

2)接下来复制光盘iso文件下的所有内容(文件和文件夹)到/var/html/www(此目录为apache默认documentroot目录)下,无论是红帽系统还是centos 5.8系统,如果是最小化安装,基本上第一张dvd光盘文件就足够了,复制命令如下所示:

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第一张光盘的内容复制到/var/www/html目录中了,所以只要从/var/www/html目录中复制需要的文件就行了)。

a)建立tftpboot文件夹,命令如下所示,若该文件夹已经存在则不用创建:

b)复制pxelinux.0文件至tftpboot文件夹中,命令如下所示:

c)把dvd光盘上的/image/pxeboot/initrd.img和vmlinuz复制到/tftpboot/中,命令如下所示:

d)复制dvd光盘上的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的完整步骤,如果在工作中有此需求的话,可以结合文档进行相关操作,如果是在公司内部局域网中操作,建议单独划分出一个网段,以免对公司内部的开发环境或办公环境造成影响。

继续阅读