Pacemaker

Server1 172.25.23.1节点1

Server2 172.25.23.2节点2

Server3 172.25.23.3做存储分离的

VIP 172.25.23.100

Selinux iptables 关掉 做解析及时间同步

 

1.安装软件

将原来做的实验全部停掉防止干扰如keepalived.....

Server1 server2 获取安装包  

  crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pssh-2.3.1-2.1.x86_64.rpm

  安装好pacemaker后就没有crm shell命令行工具我们得单独安装即yum installcrmsh

yum install -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm     

yum install -y pacemaker corosync

 

2.修改配置文件

cd /etc/corosync

cp corosync.conf.example corosync.conf

vim corosync.conf

---->

compatibility: whitetank

totem {

        version: 2# totme的版本

        secauth: off# 安全认证

        threads: 0# 安全认证开启并行线程数

        interface {

                ringnumber: 0# 回环数

                bindnetaddr: 172.25.23.0 # 网段地址

                mcastaddr: 226.94.1.1# 心跳信息组播地址

                mcastport: 5428 # 同一个广播域的要不同

                ttl: 1

        }

}

 

logging {

        fileline: off

        to_stderr: no

        to_logfile: yes

        to_syslog: yes

        logfile: /var/log/cluster/corosync.log

        debug: off

 timestamp: on

        logger_subsys {

                subsys: AMF

                debug: off

        }

}

 

amf {

        mode: disabled

}

service {

        name: pacemaker# 添加的服务名

        ver: 0# 0:启动corosync时会自动启动pacemaker以插件的方式来启动不是以脚本的方式来启动,1:不会自动启动

 

}

 

scp corosync [email protected]:/etc/corosync     

/etc/init.d/corosync start# server1server2都启动服务

tail -f /var/log/messages

 

3.在物理机上配置fence_xvm.key并启动服务查看1229是否启动

  systemctl start fence_virtd

  server1server2

yum install -y fence-virt

stonith_admin -I #查看安装的fence相关软件主要有fence_xvm

pacemaker+corosync_第1张图片 

stonith_admin -a fence_xvm -M #查看相关的配置内容

 

 

4.基本指令

crm_mon  #查看在线情况

pacemaker+corosync_第2张图片

crm_verify  -LV #检测是否有语法错误

crm status#查看状态

crm #输入crm命令进入资源配置模式 

crm(live)# help #输入help查看一下会出现很多子命令

crm(live)# configure #输入configure就会进入configure模式下

crm(live)configure# help node #输入help加你想了解的任意命令就会显示该命令的使用帮助与案例

crm(live)# standby#令该节点挂掉

 

注简单说不会的命令help一下

 

5.配置高可用的Web集群

(1)做映射   

# commit提交配置的资源在命令行配置资源时只要不用commit提交配置好资源就不会生效一但用commit命令提交就会写入到cib.xml的配置文件中

 

[root@server1 corosync]# crm

pacemaker+corosync_第3张图片 

(2)添加VIP

wKioL1fVKQKxlwqEAABTevWJA2Y899.pngpacemaker+corosync_第4张图片 

[root@server1 cluster]# /etc/init.d/corosync restart

 

(3)当一台机器挂掉之后另一台接管VIP

[root@server1 cluster]# crm

wKioL1fVKQTDB6PQAABC2PSU0v0330.pngpacemaker+corosync_第5张图片 

 

vim /etc/httpd/conf/httpd.conf

pacemaker+corosync_第6张图片

(4)添加apache服务

[root@server1 cluster]# crm

wKioL1fVKQvQRD0vAAClPh4yxms884.png 

# warnning为设置的时间过长

[root@server1 cluster]# crm_mon

wKioL1fVKQvjjaPfAABXlUa8vOk177.png 

(5)VIP 和服务不在同一个机子上需要进行绑定将website服务和 VIP 两个绑定

wKiom1fVKQywAlH6AAAzvwLBcT0075.png 

pacemaker+corosync_第7张图片 

 

[root@server1 cluster]# /etc/init.d/corosync resatrt

[root@server1 cluster]# crm_mon

pacemaker+corosync_第8张图片 

测试Server2 down了之后由server1接管

[root@server2 corosync]# /etc/init.d/corosync stop

 

wKioL1fVKRTAKBRgAAB37ELLZSo541.png 

 

 

3.存储分离iscsi

1.在服务端新建一个新的磁盘

vim /etc/tgt/targerts.conf

......

    backing-store /dev/vda1

    initiator-address 172.25.23.1

    initiator-address 172.25.23.2

 

......

 

tgt-admin -s

......

       Backing store type: rdwr

            Backing store path: /dev/vda1

            Backing store flags:

    Account information:

    ACL information:

        172.25.23.1

        172.25.23.2

 

2.两边同步server1 server2

[root@server1 cluster]# iscsiadm -m discovery -t st -p 172.25.23.3

Starting iscsid:                                           [  OK  ]

172.25.23.3:3260,1 iqn.2016-07.com.example:storage1

[root@server1 cluster]# iscsiadm -m node -l

Logging in to [iface: default, target: iqn.2016-07.com.example:storage1, portal: 172.25.23.3,3260] (multiple)

Login to [iface: default, target: iqn.2016-07.com.example:storage1, portal: 172.25.23.3,3260] successful.

 

[root@server1 cluster]# fdisk -l  #检测出多了一个sdb

[root@server1 cluster]# fdisk /dev/sdb

......

[root@server1 cluster]# partprobe

[root@server1 cluster]# cat /proc/partpitions

......

  8       16    8388544 sdb

  8       17    8387568 sdb1 #发现 sdb1

[root@server1 cluster]# mkfs.ext4 /dev/sdb1

 

(2)添加存储

[root@server1 cluster]# crm

wKiom1fVKRShnAdWAABIyTLaKwc558.png 

[root@server1 cluster]# crm_mon

pacemaker+corosync_第9张图片 

(3) VIP 服务 存储不在一台机子上进行绑定设置新的资源组apacheserviceVIP webdata website绑定在一起并且确定先后的启动顺序

 

wKioL1fVKRaiCzpNAABGiBi8S7s869.pngpacemaker+corosync_第10张图片

[root@server1 cluster]# crm_mon

 

pacemaker+corosync_第11张图片 

 

(4)测试

在被挂载的主机上添加测试页

echo hello > /var/www/html/index.html

访问的时候会一直访问这个测试页不管如何刷新服务如何停止

 

问题

wKioL1fVKRvhZf2KAABgyD3ZUFw599.png 

出现这种情况时注意启动物理机中的fence虚拟机中再重新启动corosync

 

补充

从上面的信息中可以看出viphttpd有可能会分别运行于两个节点上这对于通过此IP提供Web服务的应用来说是不成立的即此两者资源必须同时运行在某节点上。有两种方法可以解决一种是定义组资源将viphttpd同时加入一个组中可以实现将资源运行在同节点上另一种是定义资源约束可实现将资源运行在同一节点上。

定义组资源 group webservice vip httpd

定义资源约束

crm(live)configure #colocation httpd-with-ip INFUNTY: httpd vip

接着我们还得确保httpd在某节点启动之前得先启动vip这可以使用如下命令实现

crm(live)configure# order httpd-after-vip mandatory: vip httpd 

 

 

删除组资源操作

crm(live)# resource 

crm(live)resource# show  

crm(live)resource# stop webservice  #停止资源 

crm(live)resource# show 

crm(live)resource# cleanup webservice  #清理资源 

crm(live)# configure 

crm(live)configure# delete  

crm(live)configure# delete webservice #删除组资源 

crm(live)configure# commit

 

定义约束使资源运行在同一节点上。首先我们来回忆一下资源约束的相关知识资源约束则用以指定在哪些群集节点上运行资源以何种顺序装载资源以及特定资源依赖于哪些其它资源。pacemaker共给我们提供了三种资源约束方法

Resource Location资源位置定义资源可以、不可以或尽可能在哪些节点上运行

Resource Collocation资源排列排列约束用以定义集群资源可以或不可以在某个节点上同时运行

Resource Order资源顺序顺序约束定义集群资源在节点上启动的顺序

定义约束时还需要指定分数。各种分数是集群工作方式的重要组成部分。其实从迁移资源到决定在已降级集群中停止哪些资源的整个过程是通过以某种方式修改分数来实现的。分数按每个资源来计算资源分数为负的任何节点都无法运行该资源。在计算出资源分数后集群选择分数最高的节点。INFINITY无穷大目前定义为 1,000,000。加减无穷大遵循以下3个基本规则

任何值 + 无穷大 = 无穷大

任何值 - 无穷大 = -无穷大

无穷大 - 无穷大 = -无穷大

定义资源约束时也可以指定每个约束的分数。分数表示指派给此资源约束的值。分数较高的约束先应用分数较低的约束后应用。通过使用不同的分数为既定资源创建更多位置约束可以指定资源要故障转移至的目标节点的顺序。因此对于前述的viphttpd可能会运行于不同节点的问题可以通过以下命令来解决

crm(live)configure #colocation httpd-with-ip INFUNTY: httpd vip

接着我们还得确保httpd在某节点启动之前得先启动vip这可以使用如下命令实现

crm(live)configure# order httpd-after-vip mandatory: vip httpd 

此外由于HA集群本身并不强制每个节点的性能相同或相近。所以某些时候我们可能希望在正常时服务总能在某个性能较强的节点上运行这可以通过位置约束来实现

crm(live)configure# location prefer-node1 vip node_pref::200: node1