发布时间:2026/7/24 18:40:03
bash# 安装DHCP服务器、HTTP服务器和Syslinux(用于PXE引导)yum install -y dhcp httpd syslinux tftp-server# 启动并启用服务systemctl enable --now httpd dhcpd tftp### 2.3 配置DHCP与TFTP编辑/etc/dhcp/dhcpd.conf文件,添加如下内容:confsubnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8; next-server 192.168.1.10; # 管理服务器IP filename "pxelinux.0";}然后配置TFTP服务:将/usr/share/syslinux/pxelinux.0复制到/var/lib/tftpboot/,并创建启动菜单文件/var/lib/tftpboot/pxelinux.cfg/default:bashmkdir -p /var/lib/tftpboot/pxelinux.cfgcat > /var/lib/tftpboot/pxelinux.cfg/default << EOFdefault centoslabel centos kernel vmlinuz append initrd=initrd.img ks=http://192.168.1.10/ks.cfgEOF## 三、编写Kickstart配置文件(ks.cfg)Kickstart文件是自动化部署的核心。以下是一个适用于集群节点的示例:bash# ks.cfg - 自动化安装CentOS 7# 语言和键盘设置lang en_US.UTF-8keyboard ustimezone Asia/Shanghai# 磁盘分区(清除所有数据)zerombrclearpart --all --initlabelpart /boot --fstype=xfs --size=500part pv.01 --size=1 --growvolgroup vg_root pv.01logvol / --fstype=xfs --name=lv_root --vgname=vg_root --size=10000logvol swap --name=lv_swap --vgname=vg_root --size=2048# 网络配置(使用DHCP)network --bootproto=dhcp --device=eth0 --onboot=yes# 设置root密码(加密形式)rootpw --iscrypted $6$random_salt$encrypted_password# 安装源(使用本地HTTP服务器)url --url="http://192.168.1.10/centos7/"# 选择软件包%packages@base@coreopenssh-servervimwget%end# 安装后脚本:配置集群服务%post --log=/root/post_install.log# 添加集群节点hosts记录echo "192.168.1.10 master" >> /etc/hostsecho "192.168.1.101 worker1" >> /etc/hostsecho "192.168.1.102 worker2" >> /etc/hosts# 安装并启动httpd(作为示例服务)yum install -y httpdsystemctl enable --now httpd# 关闭防火墙(开发环境简化)systemctl disable firewalld%end关键点:-%packages段定义了要安装的软件,@base和@core是基础组。-%post段在安装完成后执行,可用于配置集群特定设置。-rootpw中的密码需用grub-crypt或openssl生成加密串。## 四、部署集群节点### 4.1 准备安装源将CentOS ISO文件挂载到HTTP目录:bashmount -o loop /path/to/CentOS-7-x86_64-DVD.iso /var/www/html/centos7/### 4.2 启动PXE引导确保裸机节点的BIOS设置为网络启动(PXE)。当节点启动时,它会从管理服务器获取IP和Kickstart文件,自动完成安装。### 4.3 验证集群状态安装完成后,在管理服务器上测试连通性:bash# 通过SSH访问节点ssh root@192.168.1.101 "hostname && systemctl status httpd"如果所有节点都成功安装并运行了httpd服务,则说明集群基础部署完成。## 五、高级用法:扩展集群与自动化管理### 5.1 使用Ansible进行配置管理对于大型集群,手动修改每个节点不现实。我们可以结合Ansible实现配置的批量下发。以下是一个简单示例:python# ansible_playbook.yml---- name: 配置集群节点 hosts: workers become: yes tasks: - name: 安装Nginx yum: name: nginx state: present - name: 启动Nginx服务 service: name: nginx state: started enabled: yes - name: 复制配置文件 copy: src: /tmp/nginx.conf dest: /etc/nginx/nginx.conf notify: restart nginx handlers: - name: restart nginx service: name: nginx state: restarted### 5.2 实现高可用集群使用Pacemaker和Corosync可以构建高可用集群。首先在所有节点安装:bashyum install -y pacemaker corosync pcs然后配置corosync.conf同步通信,最后通过pcs命令创建资源组(如虚拟IP、服务等)。例如:bash# 在管理节点执行pcs cluster auth node1 node2 -u haclusterpcs cluster setup --name mycluster node1 node2pcs cluster start --allpcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=30s这样,当主节点故障时,虚拟IP会自动漂移到备用节点,保证服务不中断。## 六、总结通过本文,我们从基础概念出发,逐步实现了在CentOS上使用Kickstart自动化部署集群的完整流程。首先,我们理解了Kickstart的原理和集群组件;然后,搭建了DHCP、TFTP和HTTP服务作为部署基础设施;接着,编写了包含分区、网络和软件包选择的ks.cfg文件;最后,通过PXE引导完成了节点安装。在高级部分,我们探索了Ansible的配置管理和Pacemaker的高可用方案,展示了如何将手动部署转化为可扩展的自动化系统。ks集群部署的核心价值在于“一次配置,批量部署”,这对于运维大规模服务器环境至关重要。无论是用于大数据处理、Web服务还是容器编排,掌握这项技术都能显著提升效率。希望本文能为你提供清晰的指导,让你在实际项目中轻松应对集群部署挑战。如果你有任何问题或想深入了解某个环节,欢迎继续探索相关主题!