一.概念
什么是pacemaker,corosync
pacemaker作为linux系统高可用HA的资源管理器,位于HA集群架构中的资源管理,资源代理层,它不提供底层心跳信息传递功能。(心跳信息传递是通过corosync来处理的这个使用有兴趣的可以在稍微了解一下,其实corosync并不是心跳代理的唯一组件,可以用hearbeat等来代 替)。pacemaker管理资源是通过脚本的方式来执行的。我们可以将某个服务的管理通过shell,python等脚本语言进行处理,在多个节点上启 动相同的服务时,如果某个服务在某个节点上出现了单点故障那么pacemaker会通过资源管理脚本来发现服务在改节点不可用。
pacemaker只是作为HA的资源管理器,所以不要想当然理解它能够直接管控资源,如果你的资源没有做脚本配置那么对于pacemaker来说它就是不可管理的。
corosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。
二.配置
1.配置server2和server4的yum源
2.节点配置
1).server2/4中安装 pacemaker corosync
2).编辑配置文件
1 # Please read the corosync.conf.5 manual page
2 compatibility: whitetank ##兼容0.8以前的版本
3
4 totem {
##totem定义集群内各节点间是怎么通信的,totem本是一种协议,专用于corosync专用于各节点间的协议
5 version: 2 ##totem的版本,不可更改
6 secauth: off ##安全认证
7 threads: 0 ##用于安全认证开启的并线程数
8 interface {
9 ringnumber: 0 ##回环号码
10 bindnetaddr: 172.25.0.0
##绑定心跳网段,corosync会自动判断本地网卡上配置的哪个ip地址是属于这个网络的,并把这个接口作为多播心跳信息传递的接口
11 mcastaddr: 226.94.1.1
##心跳信息组播地址,每个节点的组播地址必须为同一个
12 mcastport: 5405 ##组播时使用的端口
13 ttl: 1
##只向外一跳心跳信息,避免组播报文回路
14 }
15 }
16
17 logging {
18 fileline: off ##指定要打印的行
19 to_stderr: no ##日志信息是否发往错误输出(默认否)
20 to_logfile: yes ##是否记录日志文件
21 to_syslog: yes
##是否记录于syslog日志-->此类日志记录于/var/log/message中
22 logfile: /var/log/cluster/corosync.log ##日志存放位置
23 debug: off
##只要不是为了排错,最好关闭debug,它记录的信息过于详细,会占用大量的磁盘IO.
24 timestamp: on
##是否打印时间戳,利于定位错误,但会产生大量系统调用,消耗CPU资源
25 logger_subsys {
26 subsys: AMF
27 debug: off
28 }
29 }
30
31 amf {
32 mode: disabled
33 }
##如果想让pacemaker在corosync中以插件方式启动,需要 在corosync.conf文件中加上如下内容:
34 service {
35 name: pacemaker ## 模块名,启动corosync时同时启动pacemaker
36 ver: 0
37 }
3).server2/4中安装 pssh-2.3.1-2.1.x86_64.rpm crmsh-1.2.6-0.rc2.2.1.x86_64.rpm
4)启动服务/etc/init.d/corosync start
crm_verify -VL 校验结果依赖性
crm_mon检验,查看集群状态
• 关于crm shell的使用
---crm可以显示并修改配置文件
---直接执行crm命令进行交互式修改配置文件,交互式输入的内容被记 录在配置文件中
---show 显示配置文件
---commit提交
---如果添加资源时出错,首先进入resource,将添加的资源stop,然后进 入cofigure,delete添加错误的资源
[root@server4 ~]# crm ##crm命令进入交互式shell
crm(live)# configure ##进入configure,执行show我们就可以看到配置文件的内容
crm(live)configure# show
5).添加资源
[root@server2 ~]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
##因为在这里我们还没有对fence进行配置,先将stonith-enabled 设置为 false,表示资源不会迁移
crm(live)configure# commit
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.66.100 cidr_netmask=32 op monitor interval=30s
##添加vip资源,params 指定参数 op monitor 监控配置,interval指定执行操作的频率,单位:秒
crm(live)configure# commit ##提交
crm(live)configure# bye
6).测试
[root@server2 ~]# crm node standby
##将所有资源从节点上移走,执行此命令后我们会看到,server4接替了server2的工作
添加服务httpd及创建组
监控
当server2关闭后
server4会自动接管,server1回来时,资源不会回切。
若是一个双结点集群,当有一端关掉服务时,另一结点则会自动丢弃资源,也不再接管,因为一个结点不能构成集群。
在server2和server4上建立/etc/cluster
将主机中的fence钥匙传给server2/4,并打开fence_virtd 服务
在crm环境中打开fence机制为true(资源会迁移)
server/4安装fence-virt,添加fence服务
查询节点状态的变化
崩溃server2内核,server2自动重启
服务起在哪个节点崩溃哪个内核
echo c > /proc/sysrq-trigger
查看server2上corosync重启后节点变化
没有回切。