corosync + pacemaker 部署

资源管理层(pacemaker负责仲裁指定谁是活动节点、IP地址的转移、本地资源管理系统)、消息传递层负责心跳信息(heartbeat、corosync)、Resource Agent(理解为服务脚本)负责服务的启动、停止、查看状态。多个节点上允许多个不同服务,剩下的2个备节点称为故障转移域,主节点所在位置只是相对的,同样,第三方仲裁也是相对的。vote system:少数服从多数。当故障节点修复后,资源返回来称为failback,当故障节点修复后,资源仍在备用节点,称为failover。 CRM:cluster resource manager ===>pacemaker心脏起搏器,每个节点都要一个crmd(5560/tcp)的守护进程,有命令行接口crmsh和pcs(在heartbeat v3,红帽提出的)编辑xml文件,让crmd识别并负责资源服务的处理。也就是说crmsh和pcs等价。 Resource Agent,OCF(open cluster framework) primtive:主资源,在集群中只运行一个实例。clone:克隆资源,在集群中可运行多个实例。每个资源都有一定的优先级。 无穷大+负无穷大=负无穷大。主机名要和DNS解析的名称相同才行。

设置corosync的步骤

centos7

要使用多播模式前提: 网卡要支持 ifconfig 中有 MULTICAST 如果没有可以启用 如ip link set multicast on

前提:1.保持时间的同步 可用ntp同步時間 2.提前做好ssh的密钥认证 会使操作更加快速 3.域名和主机名最好对应 即域名和uname -n 解析出的主机名一直

方法一 1.配置文件使用pcs创建

	Node1 AND Node2: 

		~]# yum install -y pacemaker pcs psmisc policycoreutils-python
		~]# systemctl start pcsd.service
		~]# systemctl enable pcsd.service

		~]# echo 'victory' | passwd --stdin hacluster

		2.2 配置corosync 

		Node1 OR Node2:

		~]# pcs cluster auth node1.victory.com node2.victory.com
		Username: hacluster
		Password: 
		node1.victory.com: Authorized
		node2.victory.com: Authorized

		~]# pcs cluster setup --name mycluster node1.victory.com node2.victory.com
			执行完创建集群的命令后,会在节点之间单独产生一个配置文件
		Shutting down pacemaker/corosync services...
		Redirecting to /bin/systemctl stop  pacemaker.service
		Redirecting to /bin/systemctl stop  corosync.service
		Killing any remaining services...
		Removing all cluster configuration files...
		node1.victory.com: Succeeded
		node2.victory.com: Succeeded

		2.3 启动集群

		Nod1 OR Node2:
		~]# pcs cluster start --all
		node1.victory.com: Starting Cluster...
		node2.victory.com: Starting Cluster...

		上面的命令相当于在各节点分别执行如下命令:
		~]# systemctl start corosync.service
		~]# systemctl start pacemaker.service

2. 使用pcs 或者 crmsh来管理 资源 如配置vip和server
复制代码

方法二

1.从示例文本中拷贝 然后修改 /etc/corosync/corosync.conf 如

totem是两个节点进行心跳传播的协议,ring 0代表不需要向任何信息就能到达。				

totem {
	version: 2

	crypto_cipher: aes128
	crypto_hash: sha1
	secauth:on
	

	interface {
                # Rings must be consecutively numbered, starting at 0.
		ringnumber: 0

		bindnetaddr: 192.168.117.0

		# bindnetaddr: 192.168.1.1

		mcastaddr: 239.255.1.1

		mcastport: 5405
		ttl: 1
	}
}
nodelist { 
		        node {
		                ring0_addr: 192.168.117.130
		                nodeid: 1
		        }
		        node {
		                ring0_addr: 192.168.117.131
		                nodeid: 2
		        }
		        node {
                        ring0_addr: 192.168.117.177
                        nodeid: 3
                }


		}
logging {

	fileline: off
	to_stderr: no
	to_logfile: yes
	logfile: /var/log/cluster/corosync.log
	to_syslog: no
	debug: off
	timestamp: on
	logger_subsys {
		subsys: QUORUM
		debug: off
	}
}

quorum {
	# Enable and configure quorum subsystem (default: off)
	# see also corosync.conf.5 and votequorum.5

	provider: corosync_votequorum
}
复制代码

注意 : 只有两个节点时无法使用quorum 在crm 里无法选举出新节点 此时 配置了内容也无效 资源是不活动的(资源不会放入节点中)

2.生成认证密钥 corosync-keygen --->生成 authkey:集群中节点间彼此传递消息时使用加密算法以及密钥

3.复制密钥和配置文件到其他节点 scp /etc/corosync/corosync.conf authkey 192.168.117.130:/etc/corosync/corosync.conf authkey scp /etc/corosync/corosync.conf authkey 192.168.117.177:/etc/corosync/corosync.conf authkey

4.启动服务 node4: systemctl start corosync systemctl start pacemaker node3: systemctl start corosync systemctl start pacemaker node6:systemctl start corosync systemctl start pacemaker

5.设置资源 记住时间一定要同步 否则节点无法关联 !!!

a.primitive webip ocf:heartbeat:IPaddr params ip=192.168.117.190 op monitor interval=30s timeout=20s 

b.primitive webserver systemd:httpd op monitor interval=30s timeout=20s

c.primitive webstore ocf:heartbeat:Filesystem params device="192.168.117.131:/www/htdoc" directory="/var/www/html" fstype="nfs" op start timeout=20s op stop  timeout=20s op monitor interval=30s timeout=20s 
复制代码

6.设置约束条件

1.顺序约束 order
2.排列约束 colocation
3.位置约束 location

定义排列约束 将三个排在一起 此时即使其中一个资源在节点中 挂掉 他也不会切换 
colocation webserver_webip_webstore inf: webserver ( webip webstore ) 空格隔开

顺序约束 定义资源的启动顺序
order webstor_after_webip Mandatory: webip webstore 
order webserver_after_webstore  Mandatory: webstore webserver   Mandatory:强制定义

倾向性(对任意节点) 如 原本资源在node3节点上 但是node3现在挂了corosync会通知pacemaker 转移资源到其他节点 假如说转移到了node4 但是一段时间之后node3活了 由于倾向性 他还会转移到node3 上 当然这个也要考虑到资源粘性等问题

location web_pref_node3 webip 100: node3.chen.com
粘性(对当前节点 ) 如下所示 定义了每个资源的资源粘性为50 如果有三个资源则资源粘性为150 此时即使上面定义了倾向性 但是资源粘性150 > 倾向性100 所以资源不会转移
property default-resoure-stickness=50
复制代码

crm 具体用法可参考 https://juejin.im/post/5b6a4cdce51d45194a528338

注意: 两个节点安装httpd,注意,只能停止httpd服务,而不能重启,并且不能设置为开机自启动,因为resource manager会自动管理这些服务的运行或停止。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值