集群阶段复习:
1. 网络批量装机
pxe
cobbler
2. 集群:
负载均衡: nginx 、 amoeba
高可用: redis哨兵、redis集群 #主要通过redis的主从实现的
3. 存储:
块存储:
文件存储:NFS cifs(samba)
分布式存储:
4. 监控:
zabbix监控
nagios、cacti
5. 安全:
防火墙:
SELinux:
1 批量无人值守(PXE+kickstart)
1 介绍
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。PXE协议分为client和server两 端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将 放置在远端的操作系统通过网络下载到本地运行。PXE在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。
PXE网络安装:客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录需要人工干预填写的各种参数,并记录生成一个名为anaconda-ks.cfg的文件。
pxelinux.o 引导文件
pxelinux.cfg 菜单文件
vmlinuz 内核文件
initrd.img 驱动、文件系统程序
PXE工作流程:
1.客户端通过网卡请求DHCP,获取IP和相关文件位置
DHCP发送分配的IP、相关文件位置、TFTP地址、TFTP共享文件的位置
2.客户端请求pxelinux.o文件,TFTP发送
客户端执行程序pxelinux.o
3.客户端请求pxelinux.cfg配置文件、vmlinuz、initrd.img,TFTP发送
客户端加载 pxelinux.cfg、启动Lnux内核(在内存中)
4.客户端请求rpm包,HTTP发送
客户端进行安装

2 环境
软件 : kickstart、dhcp、tftp-server、httpd、syslinux
关闭防火墙
3 实验步骤
1)安装软件
[root@localhost ~]# yum -y install httpd dhcp tftp-server syslinux
**注意:**图形化可以安装 system-config-kickstart 软件,实现手动配置 *.cfg 文件
2)配置dhcp
搭建dhcp:添加next-server选项标记下一个服务的ip
filename选项标记文件名
[root@localhost ~]# cp -a /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# grep "192.168.18.0" -A 8 /etc/dhcp/dhcpd.conf
subnet 192.168.18.0 netmask 255.255.255.0 {
range 192.168.18.50 192.168.18.99;
option domain-name-servers 114.114.114.114,8.8.8.8;
option routers 192.168.18.2;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.18.201;
filename "pxelinux.0";
}
[root@localhost ~]# systemctl restart dhcpd
3)配置httpd
将光盘作为文件共享,共享到网页主目录下
[root@localhost ~]# mkdir /var/www/html/centos7
[root@localhost ~]# mount /dev/sr0 /var/www/html/centos7/
[root@localhost ~]# mount |grep /dev/sr0
/dev/sr0 on /mnt type iso9660 (ro,relatime)
/dev/sr0 on /var/www/html/centos7 type iso9660 (ro,relatime)
[root@localhost ~]# systemctl restart httpd
浏览器访问检查

4)配置tftp
将tftp的配置文件中的不启用改为no,并记住共享目录(为后面提供共享的文件)
[root@localhost ~]# vim /etc/xinetd.d/tftp
[root@localhost ~]# egrep -v "^#|^$" /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp #协议
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot #共享的目录
disable = no #修改此处为no,不启动关 闭
per_source = 11
cps = 100 2
flags = IPv4
}
[root@localhost ~]# systemctl enable tftp.socket --now #启动tftp并加入自启动
[root@localhost ~]# systemctl enable tftp --now
[root@localhost ~]# systemctl status tftp.socket #检查tftp运行状态
● tftp.socket - Tftp Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/tftp.socket; enabled; vendor preset: disabled)
Active: active (running) since 一 2022-11-28 14:39:25 CST; 36s ago
Listen: [::]:69 (Datagram)
11月 28 14:39:25 localhost.localdomain systemd[1]: Listening on Tftp Server Activation Socket.
[root@localhost ~]# systemctl status tftp
● tftp.service - Tftp Server
Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
Active: active (running) since 一 2022-11-28 14:39:53 CST; 16s ago
Docs: man:in.tftpd
Main PID: 38128 (in.tftpd)
CGroup: /system.slice/tftp.service
└─38128 /usr/sbin/in.tftpd -s /var/lib/tftpboot
11月 28 14:39:53 localhost.localdomain systemd[1]: Started Tftp Server.
[root@localhost ~]# netstat -tlunp |grep :69 #检查tftp的运行
udp6 0 0 :::69 :::* 1/systemd
5)编写引导安装的相关文件
5.1 tftp需要共享的文件
pxelinux.o #引导文件
vmlinuz、initrd.img #内核文件
default(isolinux.cfg) #引导菜单
5.2 导入文件到tftp共享目录(内核文件、引导菜单文件)
#引导文件
[root@localhost ~]# systemctl restart dhcpd httpd tftp.socket
#用来预加载的内核、驱动文件,然后使用预加载内核进行系统安装
[root@localhost ~]# cp -a /var/www/html/centos7/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
#辅助实现菜单的显示
[root@localhost ~]# cp -a /var/www/html/centos7/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/
[root@localhost ~]# cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# ls /var/lib/tftpboot/
boot.msg initrd.img pxelinux.0 splash.png vesamenu.c32 vmlinuz
5.3 复制并编写引导菜单文件
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp -a /var/www/html/centos7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 30
label linux
menu label ^Install CentOS 7 By kickstart
menu default
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.18.201/centos7 inst.ks=http://192.168.18.201/ks_config/centos7.cfg
5.4 创建无人值守安装模板文件
[root@localhost ~]# mkdir /var/www/html/ks_config
[root@localhost ~]# vim /var/www/html/ks_config/centos7.cfg
#version=DEVEL
auth --enableshadow --passalgo=sha512
url --url=http://192.168.18.201/centos7/
graphical
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --no-activate
network --hostname=localhost.localdomain
rootpw --iscrypted $6$bnwp14GWfWDgVw4y$7sr9QiO7hE90RkE12p3i.YMHmpzCsKMC7lkh5AH43FQB0uPHJjYaIzePu4oLrgqCpmH5yVY6dTOn6aLxEqwT1/
firewall --disabled
selinux --disabled
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=1024
part swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --grow --size=1
%packages
@^web-server-environment
@base
@core
@web-server
kexec-tools
%end
reboot
6)重启所有服务,并加入自启动
[root@localhost ~]# systemctl restart dhcpd httpd tftp.socket
[root@localhost ~]# systemctl enable dhcpd httpd tftp.socket
4 新建虚拟机测试
**注意:**内存必须大于等于2G

可以自定义模板内容实现更多的安装需求:
需求一:设置将剩余所有空间设置成根分区
--grow --size=1
设置为使用剩余所有
需求二:在安装后,能不能顺便执行脚本配置某些参数{yum源案例}
%post --interpreter=bash
cd /etc/yum.repos.d/
mkdir back
mv C* back/
echo "[centos7]
name=centos7 repo for kickstart
baseurl=http://192.168.18.201/centos7
enable=1
gpgcheck=0" >> CentOS-Media.repo
%end