互联网从诞生开始,就打破了计算机各自独立的局面,将无数的计算机连接成巨大的信息交互网络一方面网络中的每一个节点都需要提供稳定的服务,一个节点可能就是由数十上百台的服务器构成,如果这些服务器需要完全一致的安装设置和软件配置,靠人员手动操作效率太低和难免出错
另一方面,网络的一端到另一端可能跨越半个地球,要想对相距遥远的两台服务器进行统一的安装和初始化,除了派送人员安装,另外一个不错的方法就是利用覆盖全球的网络进行远程安装
这就引出2个系统安装的需求:能全自动地对数十台服务器做统一的安装设置;能通过网络对远程的服务器进行安装
pxe技术就完全满足了这2个需求,pxe相较于前者有着不少的优势,使用pxe不需要额外添加硬件设备,在原有的网卡固件上就能实现它解决了tftp+b00tp+dhcp方案不能提供定制设置的问题另外小型化的pxe占用的资源很少其能支持的客户端很多,从功能完备算力强大的大型计算机到功能专一且小巧的单片机,都有很好的支持,本研究有一定的现实意义
一整体方案
pxe需要dhcp服务的支持,dhcp给客户端分配一个合法ip地址并告知tftp的ip地址,使客户端能从tftp获取引导文件pxelinux.0内核文件vmlinuz和initrd.img等再根据菜单配置文件defau11提供的光盘镜像文件和应答文件在网络中的位置,客户端取得光盘镜像,并根据应答文件的设置进行自动安装最后运行应答文件中的初始化脚本,完成初始化服务器响应服务图如图1所示
二pxe各个服务的具体部署
(1)pxe服务器提供dhcp服务
用命令yum-y install dhcp进行dhcp服务的安装,安装后用命令rpm-qdhcp进行确认dhcp配置文件的路径/etc/dhcp/dhcpd.conf,下面几个是配置dhcp的重要参数以及说明
range
dynamic-bootp192.168.233.26192.168.233.30,可分配给客户端的ip范围,将192.168.233.0网段中的26~30作为ip池optionrouters192.168.233.2,指定客户端的网关optiondomain-name-servers223.5.5.5,指定客户端的dns
default-lease-time21600,默认租约时间,单位为smax-lease-time43200,最大租约时间,单位为snext-server192.168.233.50,tftp服务器在内网中的位置,即ip地址filename"pxelinux.0",引导文件的名称客户端从dhcp服务器(pxe服务器)中获得ip地址192.168.233.26,并得知dhcp服务器的ip地址192.168.233.50和网关地址192.168.233.2。
(2)pxe服务器提供tftp服务
用命令yum-yinstalltftp-server进行tftp服务的安装,安装后用命令rpm-qtftp-server进行确认tftp的配置文件为/etc/xinetd.d/tftp,其中参数server一args=-s/var/lib/tftpboot,其含义为安装所用到的引导文件和内核文件等都是放在此目录下的安装syslinux服务,将
usr/share/syslinux/pxelinux.0复制到tftp根目录挂载光盘到空目录,将内核文件vmlinuz和initrd.img,菜单样式文件vesamenu.c32,窗口提示信息文件boot.msg复制到tftp根目录最后将菜单配置文件isolinux.dg复制到tftp根目录下的pxelinux.cfg目录中,并重命名为default
(3)pxe服务器提供安装源
1、http方式
用命令yum-y install httpd进行安装,安装后用命令rpm-q httpd进行确认。默认的http的主配置文件的路径是/etc/httpd/conf/httpd. conf , http 文件根目录的位置是/var/www/html,此位置为挂载光盘镜像的目录,客户端也从该目录读取镜像文件来进行安装操作
接着用命令
mount-bind/media//var/www/html/centos7/将/media的光盘映射再映射到空目录centos7客户端通过http服务器的ip地址就能进入服务器,并且进入的是文件根目录/var/www/html/,在这个目录下就有一个放着光盘镜像的目录centos7/
只需在网络位置后指定centos7/目录,即
http://192.168.233.50/centos7/用命令systemctl start httpd.service和systemctl enable httpd.service,将htip服务启动并设为开机自启动进入配置文件default修改指定安装源,替换原来的安装源
append initrd=initrd.img inst.stage2=hd:label=centos \ x207 \x20x86_64 quiet 将上面内容改为:append initrd=initrd.img inst.repo=
http://192.168.233.50/centosOS。
2、ftp方式
用命令yum-yinstallvsftpd进行安装,安装后用命令rpm-qvsftpd进行确认,用命令systemctl restart vsftpd启动vsftp服务,并设置为开机自启动systemctl enable vsftpdvsftp服务默认的根目录在/var/ftp/,使用命令\
cp-r/media//var/ftp/centos7/将光盘镜像文件全部复制到vsftpd服务的根目录的centos7/目录下
与http方式相同,通过ftp服务器获取光盘镜像的网络位置为
ftp://192.168.233.50/centos7/修改default的指定安装源的参数,append initrd=initrd.img inst.repo=ftp://192.168.233.50/CentOS7。
3、nfs方式
用命令yum-yinstall nfs-utils进行安装,安装好后用命令rpm-q nfs-utils进行确认。
设置共享目录,在系统根目录新建/data/nfs/用 于共享文件,接下来同FTP 一样复制光盘镜像文件 进/data/nfs/CentOS7/目录。为了让这个共享目录生 效,需要在配置文件/etc/exports中声明共享目录的 位置、可以访问共享目录的网段以及对应的权限。 写出光盘镜像文件的完整路径/data/nfs/CentOS7。歌 式为nfs: [NFS服务器IP地址]:]光盘镜像文件的 绝对路径],依照此格式将inst. stage2 = hd: LABEL =CentOS \ x207 \ x20x86_64 修改为 inst. repo = nfs: 192. 168. 233 . 50 : /data/nfs/CentOS7 。
客户端使用快照还原回刚配置好硬件的状态。 还原好后启动客户端,等待请求IP、获取引导文件、 获 取 菜 单 配 致 文 件 , 金 入 到 菜 单 后 选 择I n s t a l l CentOS 7,选择语言后,NSTALLATION SOURCE (安装源)变成了 NFS Server 192.168. 233.50,虽然 在default中写了光盘镜像的绝对路径,但这里也不会显示出来。接下来进行正常的安装流程就可以了。
三、应答文件设计
Kickstart作为应答文件无需额外安装服务,真正 做到轻便°且Kickstart的功能十分强大,在Kickstart 里面不仅能替代手工自动完成在安装页面的设置, 如设置语言、门必用户密码、磁盘分区,还能利用安 装源自定义安装所需服务。思至能携带脚本,并在 系统安装完成后自动运行这些脚本,这就给管理人 员减少了很多不必要的重复工。
四、客户端初始化设计
系统初始化要做的事主要有设置时间同步、安全策略、配置网卡、优化内核。这些都可以写在应 答文件里面,在系统安装完成后自动执行。也可以 写成一个独立的初始化脚本,通过应答文件下我和 设置运行时间。
五、客户端SSH免密设计
无 论是通过S S H登录客户端,还是通过scp传输文件给客户端,都需要输入密码,这是一种保障 客户端安全的措施。管理人员通过一台管理终端管 理数十台客户端,登录管理终端这个过程已经有足 够的安全保障,但批量管理客户端还要反第输入数 十次密码,这反倒降低了管理效率,所以需要客户端对管理终端开启SSH免密。
将ssh-keygen生成的密钥写进一个文件, 再将文件发送给管理终端。先测试了 scp命令在 Kickstart脚本执行的时候可以正常使用,再将文件里 面的内容写进管理终端的“密钥库”里面,这样就完成了与 ssh-copy-id 192. 168. 233. 50 相同的功能, 实现了 S5H免密。
本文使用经典的PXE + Kickstart方式实现网络自动部署服务器,并使用HTTP、FTP和NFS作为安装源,丰富了客户端获取光盘镜像的来源,可以根据不同的服务需求和实际情况灵活选取安装源。
另外在应答文件Kickstart中添加初始化脚本和SSH免密脚本,让服务器在系统安装完成后,自动实现系统初始化,使服务器在短时间内便可投入生产环境。 |