前言:

高可用集群,是指以减少服务中断(如因服务器宕机等引起的服务中断)时间为目的的服务器集群技术。简单的说,集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点。
高可用集群的出现是为了减少由计算机硬件和软件易错性所带来的损失。它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度。

什么是pacemaker :

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

Corosync
Corosync是集群管理套件的一部分,他在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。也就是说,corosync是Messaging Layer集群信息层软件,需要pacemaker资源管理器,才能构成一个完整的高可用集群。它也是运行于心跳层的开源软件。(是集群框架引擎程序)

实验搭建:

准备三台7.3的虚拟机
server1:ip为172.25.5.111 作为管理节点和HA节点
server2:ip为172.25.5.112 作为HA节点
server3:ip为172.25.5.113 作为iscsi共享磁盘

三台虚拟机关火墙,selinux状态disabled,

首先需要配好高可用yum源(server1和server2):



yum源配好之后安装工具(一和二都装)

yum install pacemaker pcs corosync -y
systemctl start pcsd
systemctl enable pcsd
passwd hacluster        为高可用用户设定密码
yum install bash-* -y     安装pcs相关命令

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

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

发送不了你看下自己的解析写好没:

在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,并写入网页

在server1上创建vip:

pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.5.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_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 /dev/vda     建个分区
partprobe

安装共享磁盘服务并设置

yum install targetcli -y
targetcli
/backstores/block create my_disk1 /dev/vdaiscsi/ create iqn.2019-06.com.example:server3iscsi/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和server2上安装iscsi
并编写文件

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

识别并登陆共享磁盘

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

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

fdisk /dev/sdb
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 stop mariadbserver2           mount /dev/sdb1 /var/lib/mysqlsystemctl start mariadbmysql -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

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

重新添加资源、组、fence

pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=172.25.5.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上

pacemaker+corosync实现集群管理相关推荐

  1. corosync+pacemaker高可用集群

    简介 高可用集群,是指以减少服务中断(如因服务器宕机等引起的服务中断)时间为目的的服务器集群技术.简单的说,集群就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节 ...

  2. pacemaker集群管理相关命令

    pacemaker集群管理: 一.查询集群所有节点和资源状态 pcs status --full 二.集群节点资源重新加载 pcs resource cleanup 三.查询集群配置信息 pcs co ...

  3. linux集群管理平台,基于Linux平台的高可用集群管理系统的研究与实现

    摘要: 集群管理系统的高可用性是指其能够连续地对外提供服务,本文针对集群系统的高可用性,以开源的集群搭建和管理软件KUSU为基础,以集群管理节点的双机热备份技术理论为支撑,以实现集群系统的帮障检测与业 ...

  4. 虚拟化之Proxmox VE集群管理工具pvecm介绍和使用

    一.pvecm简介   Proxmox VE 集群管理工具 pvecm 用于创建一个由多个物理服务器节点构成的"组".这样的一组服务器称为一个"集群".Prox ...

  5. Redis集群管理方式

    Redis的有三种集群方式:主从复制,哨兵模式和集群. 主从复制 从服务器连接主服务器,发送SYNC命令: 主服务器接收到SYNC后执行BGSAVE命令生成RDB文件,并使用缓冲区记录此后执行的所有写 ...

  6. CynosDB技术详解——存储集群管理

    本文由腾讯云数据库发表 前言 CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: ...

  7. 容器集群管理平台的比较

    2019独角兽企业重金招聘Python工程师标准>>> 容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,"笔者"的称谓已经不合适了,因为输入 ...

  8. Kubernetes使用集群联邦实现多集群管理

    Kubernetes在1.3版本之后,增加了"集群联邦"Federation的功能.这个功能使企业能够快速有效的.低成本的跨区跨域.甚至在不同的云平台上运行集群.这个功能可以按照地 ...

  9. 交换机知识--集群管理

    集群是可以当作单一设备来管理的一组网络设备的集合,集群管理的主要目的是解决大量分散的网络设备的集中管理问题.网络管理者只需要在集群中的一个交换机上配置公网IP地址就可以实现对集群中其它交换机的管理和维 ...

最新文章

  1. cad怎么画坐标系箭头_CAD绘图中箭头太大(小)怎么调整?
  2. java钢琴键_javapiano Java Piano模拟钢琴效果的完整源码 联合开发网 - pudn.com
  3. [device]/proc/devices and /dev/
  4. 阿里为啥放弃Oracle、Hadoop,选择全面拥抱它!网友:断臂求生?
  5. P6 计算机系统的层次结构
  6. 面试之 Redis汇总
  7. 【重难点】【JUC 02】volitale 常用模式 、JUC 下有哪些内容 、并发工具类
  8. Chrome浏览器安装vue-devtools插件
  9. 提示,请选择有效的文件
  10. 孙鑫VC学习笔记:第十七讲 (一) 用剪贴板实现进程间的通信
  11. Atitit Elasticsearch6之elasticsearch5.x 新特性 目录 1.1. 其实,elasticsearch5.x 和 elasticsearch2.x 并不区别很大。 1
  12. 将根据时间戳增量数据方案修改为根据批次号增量数据方案
  13. 下载地图制作成GST格式(谷歌、百度、高德)导入到Mapinfo中使用
  14. 华为ERPS配置步骤
  15. 支持二级汉字的 php 汉字助记码生成
  16. 纯css3黑洞动画js特效
  17. java smali代码 解读_Smali代码语法
  18. 真格量化学习处理——几个功能小函数
  19. [4G5G专题-23]:架构-5G无线接入内部网元架构与空口协议功能切分
  20. 手机电源管理芯片一般在哪

热门文章

  1. word把选择答案弄到题目里_老师们看过来,如何快速整理试题答案
  2. c语言删除双向链表重复元素,求一个双向链表的建立,插入删除的c语言程序完整版的,借鉴一下思想,再多说一下就是能运行的那种...
  3. linux课堂笔记(7)
  4. html 百分比正方形,css实现未知宽度的正方形需求
  5. js禁止鼠标滑轮_js实现鼠标滑动到某个div禁止滚动
  6. SpringBoot番外篇(一):使用Spring Initializer快速创建Spring Boot项目(IDEA版)
  7. linux命令之有关关机和查看系统信息的命令
  8. GO 从零开始的语法学习二
  9. Spark(二): 内存管理
  10. Android 5.0 API 的变化——开发人员注意