阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Corosync与Pacemaker实现nfs作为共享存储的MysSQL高可用

117次阅读
没有评论

共计 4087 个字符,预计需要花费 11 分钟才能阅读完成。

以下分别以 crm 和 pcs 两种命令来实现

1. 安装 corosync 和 pacemaker,在 CentOS6.5 自带有 rpm 包。
  yum -y install corosync pacemaker
2. 配置 pacemaker 做为 corosync 的插件运行:
  在 /etc/corosync/corosync.conf 加入如下配置
      secauth: on #开启集群节点之间通信的安全认证
      interface {
          bindnetaddr: 192.168.0.0 #指定进行网卡所在的网络地址
      }
      service {
          name: pacemaker #指定资源管理器的名称
          ver: 0 # 0:表示 pacemaker 作为 corosync 的插件来运行;1:表示 pacemaker 作为单一的            守护进程来运行,也就是说在启动 corosync 后还必须手动启动 pacemaker 守护进程。
          }
      aisexec {
          user: root  #表示以哪个用户来运行 pacemaker 资源管理器。
          group: root #表示以哪个组来运行 pacemaker 资源管理器。
      }
3. 配置节点间通信使用的密钥:
  corosync-keygen
4. 配置集群属性
  crm configure property no-quorum-policy=ignore

【pcs property set no-quorum-policy=ignore】
  #表示不管出现何种情况资源照样继续运行
  crm configure property stonith-enabled=false

【pcs property set stonith-enabled=false】
  #表示禁用 stonith,默认情况下,若是没有 stonith 设备,集群是无法启动的。
5. 配置资源以及对资源的监控
  1、配置虚拟 ip
      crm configure primitive myip ocf:heartbeat:IPaddr params ip=”192.168.0.100″ nic=”eth0″ cidr_netmask=”24″  op monitor interval=20s timeout=30s

【pcs resource create myip ocf:heartbeat:IPaddr params ip=”192.168.0.100″ nic=”eth0″ cidr_netmask=”24″  op monitor interval=20s timeout=30s】
      #表示定义一个主资源 myip,ocf:heartbeat:IPaddr 表示资源代理的类型为 ocf,提供者是 heartbeat,具体的代理为 IPaddr,params 表示代理 IPaddr 的参数为 ip=”192.168.0.100″ nic=”eth0″ cidr_netmask=”24″ 等,op 表示对此资源的操作,有 monitor、start、stop、status 等。interval 表示每隔 20s 对资源的健康状态进行一次检查,如果检测不成功,30s 后就超时了。
  2、配置 mysqld 服务
      crm configure primitive myservice ocf:heartbeat:mysql params binary=”/usr/bin/mysqld_safe” config=”/etc/my.cnf” datadir=”/var/lib/mysql” pid=”/var/run/mysqld/mysql.pid” socket=”/tmp/mysql.sock” additional_parameters=”–bind-address=192.168.0.100″ op start timeout=120s op stop timeout=120s op monitor interval=20s timeout=30s

【pcs resource create myservice ocf:heartbeat:mysql params binary=”/usr/bin/mysqld_safe” config=”/etc/my.cnf” datadir=”/var/lib/mysql” pid=”/var/run/mysqld/mysql.pid” socket=”/tmp/mysql.sock” additional_parameters=”–bind-address=192.168.0.100″ op start timeout=120s op stop timeout=120s op monitor interval=20s timeout=30s】
  3、配置共享存储
      crm configure primitive mystore ocf:heartbeat:Filesystem params device=192.168.0.13:/mysqldata directory=/var/lib/mysql fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s

【pcs resource create mystore ocf:heartbeat:Filesystem params device=192.168.0.13:/mysqldata directory=/var/lib/mysql fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s】

6. 配置约束规则
  1、配置排列约束
      crm configure colocation myip_with_mystore_myservice inf: myip mystore myservice

【pcs constraint colocation add myip mystore myservice INFINITY】
      #表示 myip、mystore、myservice 三个资源必须在一起,或者定义一个组资源,将这三个资源放入组中即可。
  2、配置顺序约束
      crm configure myip_then_mystore_then_myservice inf: myip mystore myservice

【pcs constraint order myip then mystore then myservice】
      #表示起源启动的顺序依此是 myip、mystore、myservice
7. 配置网络 ping node 监控
  1、配置 ping node 主资源
          crm configure primitive pnode ocf:pacemaker:ping params host_list=192.168.0.200 multiplier=100 op monitor interval=10s timeout=60s op start timeout=60s

【pcs resource create pnode ocf:pacemaker:ping params host_list=192.168.0.200 multiplier=100 op monitor interval=10s timeout=60s op start timeout=60s】
      #192.168.0.200 是网关地址或可以 ping 通的其他节点,可以有多个,使用空格分隔。而 multiplier 表示如果集群中的节点可以 ping 通,那么那个节点的分数就会乘以这个参数指定的值,来进行累加,比如 nodeA,ping 通一次就是 1 *100,ping 通两次 2 *100,一次类推。
  2、配置 pnode 的克隆资源
      crm configure clone cl_pnode pnode

【pcs resource clone pnode】
  3、配置 ping node 失败的时候,资源的故障转移
      crm configure location mystore_on_ping rule -inf: not_defined pingd or pingd number:lte 0

【pcs constraint location mystore rule score=-INFINITY: not_defined pingd】
【pcs constraint location mystore rule sorce=-INFINITY: pingd lte 0 type=number】
      #表示如果由 ping node 得出的分数小于等于 0 或者某个节点没有定义域 ping node 相关的属性的话,那么就进行资源的转移。
8. 检查以上的配置是否有语法错误,然后提交保存
  1、校验是否有语法错误
      crm configure verify
  2、提交保存
      crm configure commit
9. 测试
  1、使用 crm node standby nodeX
      #nodeX 表示你要将哪个节点挂起
  2、使用禁止 ping 信息来测试
      iptables -A OUTPUT -p icmp -j DROP

相关阅读

搭建基于 Corosync+DRBD 的高可用 MySQL 集群 http://www.linuxidc.com/Linux/2013-10/91386.htm

分别基于 NFS 服务和 DRBD 服务利用 Corosync 配置高可用集群 http://www.linuxidc.com/Linux/2013-09/90410.htm

Linux 高可用(HA)集群之 Corosync 详解 http://www.linuxidc.com/Linux/2013-08/88733.htm

pacemaker + Corosync 搭建高可用集群 http://www.linuxidc.com/Linux/2013-06/85972.htm

Corosync+pacemaker+RA 实现 MySQL 高可用 http://www.linuxidc.com/Linux/2012-08/67949.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计4087字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中