ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kvm部署高可用无盘工作站

2022-07-02 22:02:41  阅读:235  来源: 互联网

标签:node11 工作站 -- menu kvm node12 nfs hpc 无盘


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/vdbmkfs.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

标签:node11,工作站,--,menu,kvm,node12,nfs,hpc,无盘
来源: https://www.cnblogs.com/liwanliangblog/p/16438663.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有