环境准备
硬件要求
服务器建议配置:
- CPU:至少4核物理处理器(推荐Intel Xeon E5-2600系列或以上)
- 对于大规模并发部署(50+节点),建议8核以上
- 虚拟化环境下需确保CPU支持VT-x指令集
- 内存:8GB基础内存(大规模部署建议16GB+)
- 每增加100个客户端需额外增加1GB内存
- 交换分区建议设置为物理内存的1.5倍
- 存储:100GB可用空间(需考虑镜像存储需求)
- /var/lib/cobbler目录建议单独分区
- 推荐使用RAID 1或RAID 10确保数据安全
- 网卡:千兆以太网卡(推荐双网卡配置)
- 主网卡用于PXE流量(建议绑定到单独VLAN)
- 可选第二网卡用于管理流量
软件依赖
必须安装的组件:
- Cobbler服务端:2.8.5+版本(推荐3.0+)
- DHCP服务:推荐ISC DHCP 4.3+(支持动态DNS更新)
- TFTP服务:tftp-server(CentOS默认)或atftpd(高性能替代)
- Web服务器:
- Apache 2.4+(默认集成Web UI)
- Nginx 1.12+(高性能场景可选)
- Python环境:
- Python 2.7(传统支持)
- Python 3.6+(推荐新部署使用)
其他关键依赖包:
- syslinux(提供PXE引导文件)
- pykickstart(解析Kickstart文件)
- createrepo(管理yum仓库)
- fence-agents(带外管理支持)
网络规划
IP地址分配
典型部署方案:
- 服务端静态IP:192.168.1.10/24(示例)
- 建议使用固定保留地址
- DHCP范围:192.168.1.100-192.168.1.200
- 根据网络规模调整范围
- 建议预留前20个地址给基础设施
子网配置要点:
- 确保PXE客户端与服务器在同一广播域
- 如需跨VLAN部署,需配置DHCP中继
- 推荐网络拓扑:
[Cobbler Server] <-1Gbps-> [Switch] <-1Gbps-> [PXE Clients] | [DHCP Relay]
PXE准备
客户端要求:
- 网卡必须支持PXE 2.0+
- BIOS/UEFI配置:
- 启用"Network Boot"
- 将"PXE Boot"设为第一启动项
- 对于UEFI设备,需启用"UEFI Network Stack"
安装与配置Cobbler
安装步骤
CentOS 7环境准备:
# 安装EPEL仓库
yum install epel-release -y
yum update -y
# 安装核心组件
yum install cobbler cobbler-web dhcp tftp-server pykickstart fence-agents -y
# 可选组件(视需求安装)
yum install bind bind-utils createrepo syslinux -y
服务管理:
# 启动基础服务
systemctl start cobblerd httpd tftp dhcpd
systemctl enable cobblerd httpd tftp dhcpd
# 验证服务状态
for service in cobblerd httpd tftp dhcpd; do
systemctl is-active $service || echo "$service failed to start"
done
初始化配置
配置检查与修复:
cobbler check
典型需要修复的项:
-
修改
/etc/cobbler/settings
:server: 192.168.1.10 next_server: 192.168.1.10 manage_dhcp: 1
-
生成并设置密码:
openssl passwd -1 -salt 'secure-salt' 'Admin@123'
更新到
default_password_crypted
字段 -
配置TFTP根目录:
sed -i 's/^disable.*=.*/disable = no/' /etc/xinetd.d/tftp
DHCP配置
完整示例配置(/etc/dhcp/dhcpd.conf):
option domain-name "example.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-search "example.com";
range dynamic-bootp 192.168.1.100 192.168.1.200;
# PXE配置
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
filename "pxelinux.0";
next-server 192.168.1.10;
}
# 静态分配示例
host webserver01 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.50;
}
}
配置生效:
systemctl restart dhcpd
cobbler sync
导入CentOS 7镜像
镜像处理详细步骤
-
下载官方镜像:
mkdir -p /var/www/html/iso cd /var/www/html/iso wget http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
-
挂载与导入:
mkdir -p /mnt/centos7 mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt/centos7 cobbler import \ --path=/mnt/centos7 \ --name=centos7 \ --arch=x86_64 \ --kickstart=/var/lib/cobbler/kickstarts/sample_end.ks
-
验证导入结果:
# 检查发行版 cobbler distro list # 查看详情 cobbler distro report --name=centos7-x86_64 # 检查kickstart关联 cobbler profile report --name=centos7-x86_64
配置Kickstart自动化安装
高级模板配置
/var/lib/cobbler/kickstarts/centos7.ks示例:
# 系统语言设置
lang en_US.UTF-8
keyboard us
# 网络配置
network --onboot=yes --device=eth0 --bootproto=dhcp --ipv6=auto --activate
# 认证配置
auth --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
user --name=admin --password=$6$salt$hash --groups=wheel --gecos="Admin User"
# 磁盘分区(LVM示例)
clearpart --all --initlabel
part /boot --fstype="xfs" --size=500
part pv.01 --size=1 --grow
volgroup vg_root pv.01
logvol / --fstype="xfs" --name=lv_root --vgname=vg_root --size=20480
logvol swap --fstype="swap" --name=lv_swap --vgname=vg_root --size=4096
logvol /var --fstype="xfs" --name=lv_var --vgname=vg_root --size=10240
# 软件包选择
%packages
@core
@development
vim-enhanced
net-tools
wget
curl
openssh-server
%end
# 后安装脚本
%post
#!/bin/bash
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 禁用SELinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 配置SSH
sed -i 's/#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl enable sshd
# 创建管理员目录
mkdir -p /home/admin/.ssh
chmod 700 /home/admin/.ssh
# 更新系统
yum update -y && yum clean all
# 注册到Cobbler
cobbler system add --name=%HOSTNAME% --profile=centos7-x86_64 --mac=%MAC%
%end
模板验证与关联
-
语法检查:
ksvalidator /var/lib/cobbler/kickstarts/centos7.ks
-
关联到profile:
cobbler profile edit \ --name=centos7-x86_64 \ --kickstart=/var/lib/cobbler/kickstarts/centos7.ks \ --kopts="net.ifnames=0 biosdevname=0"
-
同步配置:
cobbler sync
启动PXE网络安装
客户端引导流程
-
物理服务器:
- 开机按F12(Dell)或其他厂商指定键进入启动菜单
- 选择"Network Boot"选项
-
虚拟机(VMware示例):
1. 编辑虚拟机设置 2. 添加"Network Adapter" 3. 在"VMware BIOS"中将网卡启动设为第一项 4. 保存并启动
-
安装过程监控:
- 服务端日志:
tail -f /var/log/cobbler/cobbler.log /var/log/messages
- 客户端屏幕:
1. 获取DHCP地址 2. 下载PXE引导文件 3. 加载内核和initrd 4. 执行Kickstart自动化安装
- 服务端日志:
安装验证要点
-
成功标准:
- 系统自动重启后进入登录界面
- 使用预设的root密码可登录
- /root/下有安装日志文件:
anaconda-ks.cfg install.log ks-post.log
-
网络验证:
ping gateway curl ifconfig.me ssh admin@localhost
-
Cobbler注册检查:
cobbler system list cobbler system report --name=<hostname>
常见问题排查
PXE启动失败诊断
排查步骤:
-
基础服务检查:
# TFTP服务 rpm -ql tftp-server netstat -anup | grep 69 # DHCP服务 journalctl -u dhcpd --no-pager -n 50
-
网络连接测试:
# 从客户端测试 tftp <server-ip> get pxelinux.0 # 服务端抓包 tcpdump -i eth0 port 67 or port 68 or port 69 -vv
-
常见错误解决:
PXE-E53: No boot filename received -> 检查DHCP配置中的filename和next-server参数 PXE-E32: TFTP open timeout -> 检查防火墙设置和SELinux上下文
Kickstart报错处理
调试方法:
-
查看安装日志:
less /root/ks-post.log grep "ERROR" /var/log/anaconda/journal.log
-
手动测试分区方案:
parted -s /dev/sda print lsblk -f
-
软件包依赖问题:
# 在安装环境中调试 chroot /mnt/sysimage rpm -qa | grep package-name
防火墙与SELinux配置
完整放行规则:
# 防火墙设置
firewall-cmd --permanent \
--add-service=dhcp \
--add-service=tftp \
--add-service=http \
--add-service=https
firewall-cmd --reload
# SELinux调整
setsebool -P httpd_can_network_connect 1
semanage port -a -t http_port_t -p tcp 25151 # Cobbler XMLRPC端口
restorecon -Rv /var/lib/tftpboot
高级管理与优化
多系统支持扩展
添加Ubuntu 20.04示例:
# 下载镜像
wget https://releases.ubuntu.com/20.04/ubuntu-20.04.3-live-server-amd64.iso
# 挂载处理
mkdir -p /mnt/ubuntu
mount -o loop ubuntu-20.04.3-live-server-amd64.iso /mnt/ubuntu
# 导入Cobbler
cobbler import \
--path=/mnt/ubuntu \
--name=ubuntu2004 \
--arch=x86_64 \
--breed=ubuntu
Web界面管理
详细配置步骤:
-
创建管理员账户:
htpasswd -c /etc/cobbler/users.digest admin
-
配置Web访问:
# /etc/httpd/conf.d/cobbler_web.conf <Location /cobbler_web> AuthType Digest AuthName "Cobbler" AuthUserFile /etc/cobbler/users.digest Require valid-user </Location>
-
功能说明:
- 系统配置查看/编辑 - 镜像管理 - Kickstart编辑器 - 安装任务监控
数据备份策略
完整备份方案:
# 每日增量备份脚本
#!/bin/bash
BACKUP_DIR="/backup/cobbler"
DATE=$(date +%Y%m%d)
# 创建目录
mkdir -p ${BACKUP_DIR}/${DATE}
# 配置文件备份
tar czf ${BACKUP_DIR}/${DATE}/config.tar.gz \
/etc/cobbler \
/etc/dhcp \
/etc/xinetd.d/tftp
# 数据备份
rsync -avz /var/lib/cobbler ${BACKUP_DIR}/${DATE}/
rsync -avz /var/www/cobbler ${BACKUP_DIR}/${DATE}/
# 保留最近7天备份
find ${BACKUP_DIR} -type d -mtime +7 -exec rm -rf {} \;
参考资源
官方文档
社区资源
性能优化建议
-
大型部署:
- 使用Nginx替代Apache
- 配置DHCP故障转移
- 部署多台Cobbler服务器做负载均衡
-
存储优化:
- 将/var/lib/cobbler放在SSD上
- 使用NFS共享镜像存储
-
网络优化:
- 启用Jumbo Frame
- 配置QoS保证PXE流量优先级