Linux运维之Pacemaker+Corosync(红帽7的高可用)

Linux运维之Pacemaker+Corosync(红帽7的高可用)

  • 什么是pacemaker

Pacemaker是一个集群资源管理器。它利用集群基础构件(OpenAIS 、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。

Red Hat Enterprise Linux 7 使用 Pacemaker 替换 rgmanager 进行集群资源管理以及从节点失败中恢复。Pacemaker 的优点包括:

• 资源配置的自动同步和版本管理。
• 灵活的资源和 fencing 模式可与用户环境更紧密地对应。
• 可使用 fencing 恢复资源层失败。
• 基于时间的配置选项。
• 在多节点中运行同一资源的能力。例如:网页服务器或者集群文件系统。
• 在两个不同模式之一的多个节点中运行同一资源的能力。例如:同步资源和目标。
• Pacemaker 不需要分布式锁管理程序。
• 仲裁丢失或者形成多个分区时的可配置行为。

Pacemaker 配置系统,也称 pcs,替换了 ccs、ricci 和 luci作为统一的集群配置和管理工具。pcs 的优点包括:
• 命令行工具。
• 可轻松自我启动集群,即初始化集群并使其开始运行。
• 可配置集群选项。
• 可添加、删除或者修改资源及其之间的关系。

  • pacemaker高可用的搭建

搭建环境准备:
三台rhel7.3版本虚拟机
server1:ip为172.25.11.1 作为管理节点和HA节点
server2:ip为172.25.11.2 作为HA节点
server3:ip为172.25.11.3 作为iscsi共享磁盘
关闭防火墙、SELINUX、配置高可用yum源

在server1和server2节点上:

yum install pacemaker pcs corosync -y

因为官方规定为了安全起见要生成ssh密钥,给自己和server2发送一份
server2重复相同操作

ssh-keygen
ssh-copy-id server1
ssh-copy-id server2

在server1和server2上开启服务并设为开机启动

systemctl start pcsd
systemctl enable pcsd
id hacluster

为高可用用户设定密码

id hacluster
passwd hacluster

在server1和server2上安装pcs相关命令

yum install bash-* -y

在server1上

pcs cluster auth server1 server2
pcs cluster setup --name mycluster server1 server2
pcs cluster start --all
pcs cluster enable --all
pcs status
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
crm_verify -L
pcs resource list
pcs resource standards

在server1和server2上安装httpd,并写入网页

yum install httpd -y
vim index.html

在server1上创建vip:

pcs resource create vip ocf:heartbeat:IPaddr2 \
ip=172.25.11.100 cidr_netmask=32 op monitor interval=30s

在server2上查看

crm_mon

测试:

pcs cluster stop server1
crm_mon
pcs cluster start server1

在sever1上添加httpd资源和组

pcs resource create apache systemd:httpd op monitor interval=1min
pcs resource group add apache_group vip apache
crm_mon
pcs constraint order vip then apache
  • 添加fence栅设备

在server1和server2分别安装fence

yum install fence-virt -y
mkdir /etc/cluster

在物理机安装fence

yum search fence
yum install -y fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64

fence_virtd -c  ##配置fence

Interface [virbr0]: br0		##设备选择br0,其他用默认

#生成fence_xvm.key
mkdir /etc/cluster
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1

把fence_xvm.key分发到HA节点,通过这个key来管理节点
scp fence_xvm.key root@server1:/etc/cluster/
scp fence_xvm.key root@server2:/etc/cluster/

systemctl start fence_virtd.service

在server1上识别并添加fence
注意:server1(主机名):server1(虚拟机名)

stonith_admin -I
pcs stonith create vmfence fenxe_xvm pcmk_host_map="server1:server1;server2:server2" op monitor interval=1min

测试:
写坏server2的内核,通过fence重启

pcs property set stonith-enabled=true
echo c >/proc/sysrq-trigger
  • 添加iscsi网络共享磁盘

server3作为共享磁盘
为server3添加一块20G的虚拟磁盘

fdisk -l
fdisk /dev/vda
n p 回车 回车 回车 wq
partprobe

安装共享磁盘服务并设置

yum install targetcli -y
targetcli
/backstores/block create my_disk1 /dev/vda

iscsi/ create iqn.2019-06.com.example:server3

iscsi/iqn.2019-06.com.cc.example:server3:/tpg1/luns create /backstores/block/my_disk1
iscsi/iqn.2019-06.com.cc.example:server3/tpg1/acls create iqn.2019-06.com.example:client
exit

在server1和server上安装iscsi
并编写配置文件

yum install iscsi-* -y
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iscsi/iqn.2019-06.com.cc.example:client
systemctl restart iscsid

识别并登陆共享磁盘

iscsiadm -m discovery -t st -p 172.25.11.3
iscsiadm -m node -l
partprobe
cat /proc/partitions

在共享磁盘上创建一个分区并格式化

fdisk /dev/sdb
n p 1 回车 回车 回车 wq
partprobe
mkfs.ext4 /dev/sdb1
partprobe

在server2同步并查看

partprobe 
cat /proc/partitions
  • 添加mysql数据库资源

在server1和server2上分别安装mariadb

yum install mariadb-* -y
sysemctl start mariadb

server1挂载到共享磁盘并登陆数据库

chown mysql.mysql /var/lib/mysql
mount /dev/sdb1 /var/lib/mysql
systemctl start mariadb
mysql -uroot

关闭server1的mariadb并在server2登陆数据库
server1

systemctl start mariadb

server2

mount /dev/sdb1 /var/lib/mysql
df
systemctl start mariadb
mysql -uroot

测试完毕卸载并关闭mariadb

umount /var/lib/mysql
systemctl stop mariadb

删除之前创建的apache组
并创建新的vip和组

pcs resource delete apache_group
pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=172.25.11.200 cidr_netmask=32 op monitor interval=30s
pcs resource create mysql_data ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mysql fstype=xfs op monitor interval=30s
df
crm_mon
pcs resource create mariadb systemd:mariadb op monitor interval=1min
pcs resource group add mysql_group vip1 mariadb
crm_mon

在server1登陆mysql测试

mysql -uroot

在server2把内核写崩测试fence

pcs property set stonith-enabled=true
echo c >/proc/sysrq-trigger

现象:在server2重启过程中,资源会暂时回到server1上,但是当server2重启以后,资源就又回到了server2上

  • 解决fence资源的bug

目的:写崩server2内核,在server2重启过程中,资源会回到server1上,当server2重启以后,资源也会一直在server1上

解决办法:
删除之前创建资源、组、fence

pcs resource delete mysql_group
pcs resource delete vmfence
pcs property set stonith-enabled=false
crm_verify -L -V

重现提阿加资源、组、fenxe

pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=172.25.11.200 cidr_netmask=32 op monitor interval=30s
pcs resource create mysql_data ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mysql fstype=xfs op monitor interval=30s
pcs resource create mariadb systemd:mariadb op monitor interval=1min
pcs resource group add mysql_group vip1 mariadb

更改resource-stickiness值

pcs resource defaults
pcs resource defaults resource-stickiness=100
pcs resource defaults

添加fence并再次更改resource-stickiness值

pcs stonith create vmfence fenxe_xvm pcmk_host_map="server1:server1;server2:server2" op monitor interval=1min
pcs resource defaults resource-stickiness=0
pcs resource defaults
pcs property set stonith-enabled=true

测试:
写崩server2内核,在server2重启过程中,资源会回到server1上,当server2重启以后,资源也会一直在server1上

猜你喜欢

转载自blog.csdn.net/weixin_44828950/article/details/93487367
今日推荐