kvm部署高可用无盘工作站
2022/7/2 23:21:40
本文主要是介绍kvm部署高可用无盘工作站,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 概述
本篇博客记录如何部署一个高可用的无盘工作站。
无盘工作站,即节点开机启动以后,从pxe引导,把操作系统的根文件系统创建在网络文件系统(NFS)上。
需要部署的服务有:
- pacemaker 负责高可用集群管理
- nfs 负责共享网络文件系统
- dhcp 负责分配网络信息
- tftp 负责分发网络引导配置
本篇博客在deepin操作系统完成,在deepin操作系统通过kvm虚拟机创建虚拟机,通过虚拟机来部署上述集群。
2. 部署过程
这部分大致过程如下:先创建2个虚拟机:node11和node12。配置2个节点ssh互信,以便后续操作能够正常进行。为node11和node12添加共享磁盘,当作NAS设备。在node11和node12节点间,通过pacemaker+nfs实现根文件系统的高可用。配置dhcp和tftp,来实现当客户端通过pxe启动时,能够将文件系统挂载到共享存储。
2.1 创建虚拟机
略。可以创建一台虚拟机以后,通过virt-clone进行克隆。
2.2 创建共享存储
创建共享存储的目的,就是为了能够让2个节点都能够使用该设备保存的数据,高效地保证服务高可用。
deepin系统通过qemu-img为2个虚拟机添加共享存储,过程如下:
1.创建虚拟磁盘存放目录:mkdir -p /var/lib/libvirt/disks/
2.创建虚拟磁盘:cd /var/lib/libvirt/disks/; qemu-img create -f raw nas.img 10G
3.为虚拟机node11和node12添加共享磁盘
virsh edit node11
,在devices标签下添加:
<disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/disks/nas.img'/> <target dev='vdb' bus='virtio'/> <shareable/> <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/> </disk>
node12同样操作:virsh edit node12
4.重启node11和node12:virsh destroy node11 && virsh start node11
,node12同样操作
5.在node11里面,格式化磁盘/dev/vdb
:mkfs.xfs /dev/vdb
至此完成2个虚拟机可见共享磁盘/dev/vdb
注意:此时在node11完成对磁盘的格式化后 ,无需在node12继续格式化操作。同时需要注意,因为系统是centos7,如果默认的文件系统是xfs,那么格式化磁盘/dev/vdb时,应保持与操作系统一致
2.3 配置pacemaker+nfs
配置pacemaker需要node11和node12配置ssh互信,此过程略。
参照:《pacemaker配置mariadb和nfs高可用》
此部分继续详述一遍配置pacemaker+nfs高可用的过程
1.node11和node12均执行:yum -y install pcs pacemaker fence-agents-all
2.node11和node12均执行:passwd hacluster
,输入密码
3.node11和node12均执行:systemctl start pcsd && systemctl enable pcsd
4.node11执行:pcs cluster auth node11 node12
5.node11执行:pcs cluster setup --start --name my_cluster node17 node18
6.node11执行:pcs cluster enable
pacemaker集群管理已经配置完成,开始配置资源
pcs resource create nfs_disk ocf:heartbeat:Filesystem device=/dev/vdc directory=/opt/hpc fstype=xfs --group nfs_group pcs resource create nfs_server ocf:heartbeat:nfsserver nfs_shared_infodir=/opt/hpc/nfsinfo --group nfs_group pcs resource create nfs_export ocf:heartbeat:exportfs clientspec="192.168.80.0/24" options=rw,sync,no_root_squash,no_all_squash directory=/opt/hpc fsid=0 --group nfs_group pcs resource create nfs_vip ocf:heartbeat:IPaddr2 nic=eth0 ip=192.168.80.188 cidr_netmask=24 --group nfs_group
执行:pcs status
查看结果,pacemaker+nfs已经配置完成
2.4 创建根文件系统
在node11上执行:mkdir -p /opt/hpc/os
执行命令:rsync -av --exclude='/proc' --exclude='/sys' --exclude='/tmp' --exclude='/run' --exclude='/var/tmp' --exclude='/opt/hpc' /* /opt/hpc/os/
创建未拷贝的目录:cd /opt/hpc/os/; mkdir -p proc sys tmp run /var/tmp
修改配置文件:vim /opt/hpc/os/etc/fstab
,内容如下:
# # /etc/fstab # Created by anaconda on Sun May 22 22:18:23 2022 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # 192.168.80.188:/opt/hpc/os / nfs defaults 0 0
2.4 配置dhcp+tftp
1.node11和node12执行:yum -y install dhcp
2.node11和node12执行:编辑dhcp的配置文件:vim /etc/dhcp/dhcpd.conf
内容如下:
ddns-update-style none; default-lease-time 259200; max-lease-time 518400; option routers 192.168.80.1; option domain-name-servers 192.168.80.1; subnet 192.168.80.0 netmask 255.255.255.0 { range 192.168.80.51 192.168.80.59; option subnet-mask 255.255.255.0; next-server 192.168.80.188; filename "pxelinux.0"; } host node51 { option host-name node51; hardware ethernet 00:00:00:80:00:51; fixed-address 192.168.80.51; } host node52 { option host-name node52; hardware ethernet 00:00:00:80:00:52; fixed-address 192.168.80.52; }
3.node11和node12执行:yum -y install tftp-server xinetd
4.node11和node12执行编辑配置文件:vim /etc/xinetd.d/tftp
,内容如下:
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /opt/hpc/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
5.node11上执行创建/opt/hpc/tftptoot目录:mkdir -p /opt/hpc/tftpboot
6.node11上执行以下操作:
# 1. 安装syslinux yum -y install syslinux # 2. 拷贝所需要的文件 cp /usr/share/syslinux/{menu.c32,vesamenu.c32,pxelinux.0} /opt/hpc/tftpboot # 3. 创建所需目录 mkdir -p /opt/hpc/tftpboot/{pxelinux.cfg,centos7.9} # 4. 挂载操作系统镜像iso,拷贝所需文件 mkdir -p /mnt/iso mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt/iso cp /mnt/iso/isolinux/{initrd.img,vmlinuz} /opt/hpc/tftpboot/centos7.9
7.创建/opt/hpc/tftpboot/pxelinux.cfg/default,内容如下:
default vesamenu.c32 timeout 50 display boot.msg menu clear menu background splash.png menu title CentOS 7 menu menu vshift 8 menu rows 18 menu margin 8 #menu hidden menu helpmsgrow 15 menu tabmsgrow 13 menu color border * #00000000 #00000000 none menu color sel 0 #ffffffff #00000000 none menu color title 0 #ff7ba3d0 #00000000 none menu color tabmsg 0 #ff3a6496 #00000000 none menu color unsel 0 #84b8ffff #00000000 none menu color hotsel 0 #84b8ffff #00000000 none menu color hotkey 0 #ffffffff #00000000 none menu color help 0 #ffffffff #00000000 none menu color scrollbar 0 #ffffffff #ff355594 none menu color timeout 0 #ffffffff #00000000 none menu color timeout_msg 0 #ffffffff #00000000 none menu color cmdmark 0 #84b8ffff #00000000 none menu color cmdline 0 #ffffffff #00000000 none label linux menu label ^Install CentOS 7.9 through pxe kernel ./centos7.9/vmlinuz append initrd=./centos7.9/initrd.img root=nfs:192.168.80.188:/opt/hpc/os selinux=0 ip=dhcp
8.添加dhcp和tftp服务到pacemaker集群
pcs resource create pxe_dhcp systemd:dhcpd --group nfs_group pcs resource create pxe_xinetd systemd:xinetd --group nfs_group
9.查看集群资源
Cluster name: my_hpc_cluter Stack: corosync Current DC: node12 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum Last updated: Sat Jul 2 21:42:17 2022 Last change: Sat Jul 2 20:13:43 2022 by root via cibadmin on node12 2 nodes configured 6 resource instances configured Online: [ node11 node12 ] Full list of resources: Resource Group: nfs_group nfs_disk (ocf::heartbeat:Filesystem): Started node12 nfs_srv (ocf::heartbeat:nfsserver): Started node12 nfs_exp (ocf::heartbeat:exportfs): Started node12 nfs_vip (ocf::heartbeat:IPaddr2): Started node12 pxe_dhcp (systemd:dhcpd): Started node12 pxe_xinetd (systemd:xinetd): Started node12 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
至此,全部服务已经部署完成,可以进行测试。
2.5 使用virt-install创建测试虚拟机
创建create_kvm_node.sh,内容如下:
if [ $# -ne 1 ] then echo "$(basename $0) num" exit 0 fi virt-install \ --os-variant=rhel7.6 \ --name node${1} \ --vcpu=4 \ --memory=4096 \ --disk /var/lib/libvirt/images/node${1}.qcow2,cache=none,size=10 \ --network=default,mac=00:00:00:80:00:${1} \ --graphics vnc \ --pxe \ 2>/dev/null
终端执行:bash create_kvm_nodes.sh 51
创建虚拟机node51
执行命令:virt-manager --connect qemu:///system --show-domain-console node51
,打开virt-manager查看node51的启动过程
当node51进入操作系统后,执行df -h
查看其根文件系统为:192.168.80.188:/opt/hpc/os
这篇关于kvm部署高可用无盘工作站的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么修改Kafka的JVM参数?-icode9专业技术文章分享
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?