使用资源管理工具pcs配置Corosync+pacemaker
一、Corosync+pacemaker架构
1、高可用集群结构层:(从下往上)
1).Messaging Layer:消息层,传递心跳以及集群事务信息
corosync v1, v2(votequorum)
2).CRM:Cluster Resource Manager:集群资源管理器
作用:使本身不具备的高可用能力的服务也能够运行在高可用集群中,并以高可用模式提供服务
传递方式:CRM-->LRM:Local Resource Manager -->Pengine:Policy Engine(只运行在主节点上,决策)
CIB:Cluster Information Base:集群信息库
集群的全生命周期管理工具:
pcs: agent(pcsd)
crmsh: agentless (pssh)
独立服务:
pacemaker:CRM-->LRM-->Pengine-->CIB
重要的基本组件:cib/crmd/lrmd/pengine
配置接口:crmsh (agentless), pssh 并行ssh
pcs (agent、a/s), pcsd:由pcsd守护进程负责接收pcs发出的命令并执行
实现方式:group(资源组、资源类型), constraint(约束)
3).RA: Resource Agent:资源代理
作用:运行在各节点中的crm中的lrm负责管理本地资源,包括资源的启动、停止、重启、监控等(主要是一些控制脚本)
脚本实现方式:
LSB: /etc/rc.d/init.d/目录下的脚本; centos5/6/7
systemd:/usr/lib/systemd/system 真正读取:/etc/systemd/system/multi-user.wants 处于enable状态的服务;
OCF:Open Cluster Framework开放集群框架,公司或组织自行研发的脚本: [provider]
heartbeat、pacemaker、linbit
service:通用服务类型: /etc/ha.d/haresources.d/目录下的脚本;
stonith:STONITH:shoot the other node on the head 节点级别隔离:专用于stonith设备的类别
Fence: 资源级别的隔离
2、集群资源定义
1).资源类型:
primitive:主资源,原始资源;在集群中只能运行一个实例;
clone:克隆资源,在集群中可运行多个实例;
匿名克隆、全局惟一克隆、状态克隆(主动、被动)
multi-state(master/slave):克隆资源的特殊实现;多状态资源;
group: 组资源;
启动或停止;资源监视;相关性:
2).资源属性:
priority: 优先级;
target-role:started, stopped, master;
is-managed: 是否允许集群管理此资源;
resource-stickiness: 资源粘性;
allow-migrate: 是否允许迁移;
3).约束:constraint
#“inf:”表示无穷大,以下配置表示mysqlip和(mynfs mysqld)间的黏性值无穷大,即三个资源始终在同一节点上运行。
#此外“-inf:”表示黏性值负无穷,定义-inf:的两个资源始终不在同一节点运行。
#mandatory默认值,表示强制约束,
location位置约束:资源对节点的倾向性,指定资源首选在哪些节点上运行
(-oo, +oo):
任何值+无穷大=无穷大
任何值+负无穷大=负无穷大
无穷大+负无穷大=负无穷大
colocation排列约束:资源彼此间是否能运行于同一节点的倾向性;指定哪些资源捆绑一起,在同一节点上运行
(-oo, +oo)
order顺序约束:多个资源启动顺序依赖关系;指定排列约束中的资源启动顺序,该顺序和colocation顺序相反
(-oo, +oo),Mandatory
3、配置属性
全局属性:property, stonith-enable等等;
高可用服务:资源,通过RA
webip, webstore, webserver
节点粘性:设置默认值m,共n个节点,则当前节点粘性为n*m
如:定义node1粘性100,其它为0,则各节点黏性值
node1: 100 + 0 + 0
node2: 0 + 0 + 0
node3: 0 + 0 + 0
4、pcs:集群的全生命周期管理工具:agent(pcsd)
属性定义参数:
cluster:集群
auth
setup
resource:资源
describe 描述
list 列出
create 创建
delete 删除
constraint:约束
colocation 倾向性
order 顺序
location 位置
property 全局属性
list 列出
set 设置
status:状态查看
config:配置
5、配置基础
CentOS 7: corosync v2 + pacemaker
corosync v2: vote system
pacemaker: 独立服务
配置集群的前提
(1).时间同步;
(2).基于当前正在使用的主机名互相访问;
(3).是否会用到仲裁设备;
二、配置pcs安装Corosync和pacemaker
1、配置集群的前提
1).设定各节点可以基于密钥进行ssh通信
[root@cen7 ~]# ssh-keygen -t rsa
[root@cen7 ~]# cd ~/.ssh
[root@cen7 .ssh]# ll
总用量 16
-rw-r--r--. 1 root root 401 6月 13 22:29 authorized_keys
-rw-------. 1 root root 1675 6月 13 22:28 id_rsa
-rw-r--r--. 1 root root 401 6月 13 22:28 id_rsa.pub
-rw-r--r--. 1 root root 1759 6月 13 23:08 known_hosts
[root@cen7 .ssh]# chmod 600 authorized_keys
[root@cen7 .ssh]# scp authorized_keys 192.168.88.133:/root/.ssh
2).确保时间点同步
[root@cen7 ~]# date;ssh node2 'date'
2018年 08月 02日 星期四 01:36:35 CST
2018年 08月 02日 星期四 01:36:36 CST
3).确保网络顺畅
[root@cen7 ~]# ping cen7.field.com
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.127 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.069 ms
^C
--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.069/0.098/0.127/0.029 ms
[root@cen7 ~]# ping node2.field.com
PING node2.field.com (192.168.88.133) 56(84) bytes of data.
64 bytes from node2.field.com (192.168.88.133)