博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
corosync+pacemaker部署高可用集群
阅读量:6714 次
发布时间:2019-06-25

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

前期准备,各个节点时间同步。

各个节点可以基于服务器名称互相访问

yum安装corosync和pacemaker

编辑配置corosync配置文件:

totem {        version: 2        crypto_cipher: none        crypto_hash: noneinterface {                ringnumber: 0 #定义ringnumber从0开始,一个ringnumber等于一条心跳链路                bindnetaddr: 192.168.1.0 #使用的地址段                mcastaddr: 239.255.61.1 #组播地址                mcastport: 5405  #主播UDP端口,                ttl: 1#ttl存活时间为1        }}logging {        fileline: off        to_stderr: no #不进行标准输出        to_logfile: yes #记录log文件        logfile: /var/log/cluster/corosync.log #日志文件位置        to_syslog: no #不开启syslog记录        debug: off #不开启调试模式        timestamp: on #记录时间戳        logger_subsys {                subsys: QUORUM                debug: off        }}quorum {             provider: corosync_votequorum #开启投票子系统并设置具体方式,默认为关闭}nodelist {        node {                ring0_addr:192.168.1.61                nodeid:1        }        node {                ring0_addr:192.168.1.62                nodeid:2        }        node {                ring0_addr:192.168.1.63                nodeid:3        }}service {  #定义一个服务来启动pacemaker    ver: 0    #定义版本    name: pacemaker  #这个表示启动corosync时会自启动}

使用corosync-keygen生成/etc/corosync/authkey文件,这里可以使用-l选项,

corosync-keygen -l -k /etc/corosync/authkey

将/etc/corosync/目录下的authkey corosync.conf同步到其他节点上。

各个节点启动corosync服务。

执行crm_mon

Stack: corosyncCurrent DC: node63.colinshi.top (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorumLast updated: Wed Jun 27 14:38:14 2018Last change: Wed Jun 27 13:40:48 2018 by root via crm_attribute    on node61.colinshi.top3 nodes configured0 resources configuredOnline: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]No active resources

可以看到3个节点均上线online状态。

接下来就可以定义资源

这里是使用了crmsh这个软件。用于配置相关资源等。

具体安装参见:https://www.cnblogs.com/colinshi/p/9019804.html

我这边准备配置2组资源一个是,每组资源有一个IP地址和一个服务组成

第一组为IP+nginx

定义2个资源:

  crm configure primitive nginx_ip ocf:heartbeat:IPaddr ip='192.168.1.69'

  crm configure primitive nginx_server systemd:nginx

2个资源合并到一个组内

  crm configure group nginx_group nginx_server systemd:nginx

Stack: corosyncCurrent DC: node63.colinshi.top (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorumLast updated: Thu Jun 28 15:44:19 2018Last change: Thu Jun 28 15:41:53 2018 by root via cibadmin on node61.colinshi.top3 nodes configured2 resources configuredOnline: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]Full list of resources: Resource Group: nginx_group     nginx_ip    (ocf::heartbeat:IPaddr):    Started node61.colinshi.top     nginx_server    (systemd:nginx):    Started node61.colinshi.top

 

第二组为IP+mysql+文件挂载

定义3个资源

  crm configure primitive mysql_ip ocf:heartbeat:IPaddr ip='192.168.1.68'

  crm configure primitive mysql_server systemd:mysqld

  crm configure primitive mysql_filesystem ocf:heartbeat:Filesystem device='192.168.1.2:/volume1/mydata' directory='/mydata' fstype='nfs' 

定义colocation排列约束确保3个资源在一起

  crm configure colocation mysql_file_with_server inf: mysql_filesystem mysql_server

  crm configure colocation mysql_ip_with_server inf: mysql_ip mysql_server

定义order顺序约束

  crm configure order mysql_file_order_server Serialize: mysql_ip mysql_filesystem mysql_server

基本搞定:

Stack: corosyncCurrent DC: node63.colinshi.top (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorumLast updated: Fri Jun 29 16:11:54 2018Last change: Fri Jun 29 16:11:34 2018 by root via crm_attribute on node61.colinshi.top3 nodes configured5 resources configuredOnline: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]Full list of resources: Resource Group: nginx_group     nginx_ip    (ocf::heartbeat:IPaddr):    Started node62.colinshi.top     nginx_server    (systemd:nginx):    Started node62.colinshi.top mysql_filesystem    (ocf::heartbeat:Filesystem):    Started node61.colinshi.top mysql_ip    (ocf::heartbeat:IPaddr):    Started node61.colinshi.top mysql_server    (systemd:mysqld):    Started node61.colinshi.top

 在来定义一个位置约束

将MYSQL的服务优先定义在node63.colinshi.top上

location mysql_for_node63 mysql_ip 100: node63.colinshi.top

定义一个mysql_ip足矣。因为之前3个mysql资源被定义了排列约束,必定会都在一起。

接下来只要node63.colinshi.top存活,那么mysql服务就会优先在node63.colinshi.top上启动。

Online: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]Full list of resources: Resource Group: nginx_group     nginx_ip    (ocf::heartbeat:IPaddr):    Started node62.colinshi.top     nginx_server    (systemd:nginx):    Started node62.colinshi.top mysql_filesystem    (ocf::heartbeat:Filesystem):    Started node63.colinshi.top mysql_ip    (ocf::heartbeat:IPaddr):    Started node63.colinshi.top mysql_server    (systemd:mysqld):    Started node63.colinshi.top

 

一些自己的理解:

  先定义集群(cluster),以及定义相关的全局变量
  其次定义资源(resource),如果是要定义组资源(group),可以先定义组,然后在组内添加相关资源。使用资源代理(ra):resource agents information center进行定义资源

  组资源是可以看成一群资源的集合

  clone资源其实就是同时在N个节点上使用的资源形式,而master/salve是一种特殊的克隆资源

  资源之间可以有3个约束关系,location(位置约束):资源对节点的倾向性,colocation(排列约束):资源彼此间是否能运行于同一节点的倾向性,order(顺序约束):多个资源启动顺序依赖关系
  集群的关键就是资源的定义和约束。
  最后如果定义了非对称节点,那么就需要对资源定义故障转移域(Failover Domains)

转载于:https://www.cnblogs.com/colinshi/p/9234261.html

你可能感兴趣的文章
安装python的easy_install和pip
查看>>
android SQLite
查看>>
Sublime Text 2 快捷键用法大全
查看>>
放弃redis使用mongodb做任务队列支持增删改管理
查看>>
G口与S口的区别
查看>>
甲骨文拒绝SAP 2.72亿美元赔偿要求重审
查看>>
我的友情链接
查看>>
linux非交互式生成秘钥
查看>>
SQL Server数据库镜像搭建(无见证无域控)
查看>>
C练习小代码-20151108
查看>>
Mac os X 10.11 sudo 指令出问题了么?
查看>>
互联网协议入门(2)
查看>>
DataSource的可配参数有哪些,有哪些DataSource可以用
查看>>
本地文件共享服务(nfs samba ftp)
查看>>
scp通过代理proxy传输文件
查看>>
数据段、代码段、堆栈段、BSS段的区别
查看>>
WebService之Axis2快速入门(5): 管理会话(Session)
查看>>
以太坊RPC接口使用
查看>>
普通html标签<form>和struts2<s:form>的区别
查看>>
安装NTFS For Mac时显示文件已损坏怎么办
查看>>