菜单
本页目录
集群阶段复习:
        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发送

​ 客户端进行安装

image-20221128140424171

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

浏览器访问检查

image-20221128143434802

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

image-20221128154705520

可以自定义模板内容实现更多的安装需求:

需求一:设置将剩余所有空间设置成根分区

--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