博客
关于我
MFS分布式文件系统实战(二)—— 高可用(pacemaker+corosync+Fence)
阅读量:529 次
发布时间:2019-03-07

本文共 9830 字,大约阅读时间需要 32 分钟。

MFS高可用(pacemaker+corosync+Fence解决mfsmaster)

1 MFS高可用

Pacemaker是整个高可用集群的控制中心,用来管理整个集群的资源状态行为,客户端通过 pacemaker来配置、管理、监控整个集群的运行状态。Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。

Pacemaker仅是资源管理器,并不提供集群心跳信息,由于任何高可用集群都必须具备心跳监测机制,Pacemaker的心跳机制主要基于 CorosyncHeartbeat来实现

FENCE设备:集群可能会要求节点关闭电源以保证共享数据和资源恢复的完整性, Pacemaker引人了节点隔离机制,而隔离机制主要通过 STONITH进程实现。 STONITH是一种强制性的隔离措施, STONINH功能通常是依靠控制远程电源开关以关闭或开启节点来实现。在 Pacemaker中, STONITH设备被当成资源模块并被配置到集群信息 CIB中,从而使其故障情况能够被轻易地监控到。集群管理器要隔离某个节点时,只需 STONITHd的客户端简单地发出 Fencing某个节点的请求, STONITHD就会自动完成全部剩下的工作,即配置成为集群资源的 STONITH设备最终便会响应这个请求,并对节点做出 Fenceing操作

2 Master端的数据共享(iscsi)

iSCSI是一种存储设备远程映射技术,它可以将一个远程服务器上的存储设备映射到本地,并呈现为一个块设备。从普通用户的角度,映射过来的磁盘与本地安装的磁盘毫无差异。ISCSI通过TCP/IP技术,将存储设备端透过iscsi target(iscsi 目标端)功能,做成可以提供磁盘的服务器端,再透过iscsi initiator(iscsi初始化用户)功能,做成能够挂载使用使用iscsi设置来进行磁盘的应用了

(1)server2作为iscsi文件系统的服务端

  • 解除挂载(server2作为chunk解除挂载)
[root@server2 ~]# umount /mnt/chunk1/[root@server2 ~]# fdisk /dev/vdbWelcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Command (m for help): dSelected partition 1Partition 1 is deletedCommand (m for help): pDisk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0xddafcca9   Device Boot      Start         End      Blocks   Id  SystemCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@server2 ~]# cat /proc/partitions major minor  #blocks  name 252        0   20971520 vda 252        1    1048576 vda1 252        2   19921920 vda2 253        0   17821696 dm-0 253        1    2097152 dm-1 252       16   10485760 vdb

(2)安装iscsi文件系统

yum install targetcli -y
  • 开始划分共享的设备
[root@server2 ~]# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin.targetcli shell version 2.1.fb46Copyright 2011-2013 by Datera, Inc and others.For help on commands, type 'help'./> lso- / ......................................................................................................................... [...]  o- backstores .............................................................................................................. [...]  | o- block .................................................................................................. [Storage Objects: 0]  | o- fileio ................................................................................................. [Storage Objects: 0]  | o- pscsi .................................................................................................. [Storage Objects: 0]  | o- ramdisk ................................................................................................ [Storage Objects: 0]  o- iscsi ............................................................................................................ [Targets: 0]  o- loopback ......................................................................................................... [Targets: 0]/> /backstores/block create  my_disk /dev/vdbCreated block storage object my_disk using /dev/vdb./> /iscsi create iqn.2020-11.org.westos:strage1Created target iqn.2020-11.org.westos:strage1.Created TPG 1.Global pref auto_add_default_portal=trueCreated default portal listening on all IPs (0.0.0.0), port 3260./> /iscsi/iqn.2020-11.org.westos:strage1/tpg1/luns create /backstores/block/my_diskCreated LUN 0./> /iscsi/iqn.2020-11.org.westos:strage1/tpg1/acls create iqn.2020-11.org.westos:westoskeyCreated Node ACL for iqn.2020-11.org.westos:westoskeyCreated mapped LUN 0.

(3)安装iscsi客户端(server1和server5)

yum install iscsi-initiator-utils.x86_64 -y
  • key检查,编辑配置文件:vim /etc/iscsi/initiatorname.iscsi,和在服务器端设立的key一致
InitiatorName=iqn.2020-11.org.westos:westoskey
  • 开启iscsid服务:systemctl start iscsid.service

(4)发现设备和登陆设备

iscsiadm -m discovery -t st -p 172.25.12.2 ## 发现设备iscsiadm -m node -T iqn.2020-11.org.westos:strage1 172.25.12.2 -l ## 登陆2共享出来的设备

在这里插入图片描述

(5)给共享的设备分区

[root@server1 ~]# fdisk /dev/sdaWelcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Command (m for help): nPartition type:   p   primary (0 primary, 0 extended, 4 free)   e   extendedSelect (default p): pPartition number (1-4, default 1): First sector (2048-20971519, default 2048): Using default value 2048Last sector, +sectors or +size{   K,M,G} (2048-20971519, default 20971519): Using default value 20971519Partition 1 of type Linux and of size 10 GiB is setCommand (m for help): pDisk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0xddafcca9   Device Boot      Start         End      Blocks   Id  System/dev/sda1            2048    20971519    10484736   83  LinuxCommand (m for help): w The partition table has been altered!

fdisk -l

在这里插入图片描述

  • 格式化分区:mkfs.ext4 /dev/sda1

在这里插入图片描述

  • 挂载格式化后的分区:/dev/sda1,将(server1)master端的数据目录同步到server5的master端
[root@server1 ~]# mount /dev/sda1 /mnt[root@server1 ~]# cd /var/lib/mfs/  ## mfs的数据目录[root@server1 mfs]# lschangelog.0.mfs  changelog.3.mfs  metadata.crc  metadata.mfs.back.1  stats.mfschangelog.2.mfs  changelog.4.mfs  metadata.mfs  metadata.mfs.empty[root@server1 mfs]# cp -p * /mnt/ ## 带权限拷贝/var/lib/mfs的所有数据文件到/dev/sda1上[root@server1 mfs]# cd /mnt/[root@server1 mnt]# lschangelog.0.mfs  changelog.3.mfs  lost+found    metadata.mfs         metadata.mfs.emptychangelog.2.mfs  changelog.4.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs[root@server1 mnt]# chown mfs.mfs /mnt/ ## 当目录属于mfs用户和组时,才能正常使用[root@server1 mnt]# cd[root@server1 ~]# umount /mnt/[root@server1 ~]#  mount /dev/sda1 /var/lib/mfs/ ## 将/dev/sda1上的数据挂载到/var/lib/mfs/目录下[root@server1 ~]# dfFilesystem            1K-blocks    Used Available Use% Mounted on/dev/mapper/rhel-root  17811456 1275780  16535676   8% /devtmpfs                 495352       0    495352   0% /devtmpfs                    507372   54192    453180  11% /dev/shmtmpfs                    507372   13292    494080   3% /runtmpfs                    507372       0    507372   0% /sys/fs/cgroup/dev/vda1               1038336  135076    903260  14% /boottmpfs                    101476       0    101476   0% /run/user/0/dev/sda1              10189076   41788   9606668   1% /var/lib/mfs[root@server1 ~]# cd /var/lib/mfs/ ## [root@server1 mfs]# lschangelog.0.mfs  changelog.3.mfs  lost+found    metadata.mfs         metadata.mfs.emptychangelog.2.mfs  changelog.4.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs

服务开启成功,就说明数据文件拷贝成功,共享磁盘可以正常使用

systemctl restart moosefs-master

在这里插入图片描述

  • server1解除/dev/sda1的挂载:
umount /dev/sda1

(6)server5共享server1的mfs的数据

  • 同步分区:partprobe

在这里插入图片描述

[root@server5 ~]# mount /dev/sda1 /var/lib/mfs  ## 首动挂载共享磁盘,同步server1的master数据[root@server5 ~]# cd /var/lib/mfs[root@server5 mfs]# lschangelog.0.mfs  changelog.3.mfs  lost+found    metadata.mfs.back    metadata.mfs.emptychangelog.2.mfs  changelog.4.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs[root@server5 mfs]# systemctl restart moosefs-master  ## 服务可以开启,数据共享成功[root@server5 mfs]# umount /dev/sda1 ## 解除挂载

在这里插入图片描述

server1和server5

  • 编辑mfs的服务配置文件:vim /usr/lib/systemd/system/moosefs-master.service

在这里插入图片描述

  • 重新加载配置文件:systemctl daemon-reload
  • 重启服务:systemctl restart moosefs-master

3 Pacemake的部署(高可用)

(1)编辑安装Pacemake的仓库文件:

[dvd]name=rhel7.6baseurl=http://172.25.12.250/rhel7.6gpgcheck=0[dvd1]name=HighAvailabilitybaseurl=http://172.25.12.250/rhel7.6/addons/HighAvailabilitygpgcheck=0

(2)安装软件(server1和server5)

yum install -y pacemaker  pcs psmisc  policycoreutils-python -y
  • 启动:systemctl enable --now pcsd.service

(2)集群各节点之间进行认证

  • 在集群各节点上给hacluster用户设定相同的密码: echo westos|passwd --stdin haclusterhacluster用户在安装pcs时自动创建
  • 也可以新建一个用户,但是在集群各节点上必须有一个一模一样的账号,而且账号的密码也必须相同
  • 验证hacluster用户:pcs cluster auth server1 server5,输入的用户名必须为pcs自动创建的hacluster用户,否则不能添加成功

在这里插入图片描述(3)创建并启动名为mycluster的集群,其中server1、server4为集群成员

pcs cluster setup --name mycluster server1 server5
  • 开机自动开启pacemaker(资源管理)和corosync(心跳监测)服务
pcs cluster start --allpcs cluster enable --all
  • 查看节点状态:corosync-cfgtool -s

在这里插入图片描述

在这里插入图片描述

  • 查看集群的状态:pcs status

在这里插入图片描述

  • 检查集群服务是否正常:crm_verify -LV

在这里插入图片描述

  • 有 Fencing设备时,禁用STONITH 组件功能在 stonith-enabled=“false”
pcs property set  stonith-enabled=false

在这里插入图片描述

(4) pcs创建集群资源

  • 给集群添加虚拟的VIP资源,利用ocf💓IPaddr定义一个vip资源
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.12.100 cidr_netmask=32 op monitor interval=30s

在这里插入图片描述

  • 编辑dns文件(server1~server5):vim /etc/hosts
172.25.12.100  mfsmaster
  • 创建mfsdata的资源
pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sda1 directory=/var/lib/mfs/ fstype=ext4 op monitor interval=30s

在这里插入图片描述

  • 创建mfsd文件系统的资源
pcs resource create mfsmaster systemd:moosefs-master op monitor interval=60s

在这里插入图片描述

  • 把服务集中在一台主机上,其中添加的顺序是有严格限制的,按照资源添加的顺序,进行添加
pcs resource group add  mfsgroup vip mfsdata mfsmaster

在这里插入图片描述

  • 此时服务已集中在一台主机上了

在这里插入图片描述

(5)测试

  • 让server1失效并处于待机状态,发现backup master上的服务迁移到master上也就是server5
pcs node standby

在这里插入图片描述

  • 浏览器端测试:

在这里插入图片描述

在这里插入图片描述

  • 让server1处于online状态:pcs node unstandby,server1设置为 unstandby状态以后,server1的状态为Online,但是运行在server5上的资源并不会迁移

在这里插入图片描述

4 Fence的部署

(1)

  • 关闭防火墙:systemctl stop firewalld.service
  • 关闭selinux:vim /etc/selinux/config

在这里插入图片描述

(2)master端(server1、server5):yum install fence-virt.x86_64 -y

  • 查询fence设备的元数据:stonith_admin -M -a fence_xvm

在这里插入图片描述

  • 在server1和server4中新建目录:mkdir /etc/cluster
  • 并将在真实主机创建的认证文件发送到server1和server4中默认key文件存放的的位置
scp root@172.25.12.250:/etc/cluster/fence_xvm.key   /etc/cluster/fence_xvm.key

(3)在pacemaker中添加fence资源

pcs stonith create vmfence fence_xvm pcmk_host_map="server1:mfs1;server5:mfs5" op monitor interval=60s
  • 注意: 在做虚拟机名和主机名映射关系时,映射图的顺序:主机名:虚拟机名

在这里插入图片描述

(4)启用STONITH组件的功能:

pcs property set stonith-enabled=true
  • 验证群集配置信息:
crm_verify -LV

在这里插入图片描述

(5)测试:

  • 内核崩溃(server1):echo c > /proc/sysrq-trigger

在这里插入图片描述

转载地址:http://hhknz.baihongyu.com/

你可能感兴趣的文章
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
MySQL DBA 进阶知识详解
查看>>
Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
查看>>
Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
查看>>