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# server1和server2都启动服务
tail -f /var/log/messages
3.在物理机上配置fence_xvm.key并启动服务查看1229是否启动
systemctl start fence_virtd
在server1和server2
yum install -y fence-virt
stonith_admin -I #查看安装的fence相关软件主要有fence_xvm
stonith_admin -a fence_xvm -M #查看相关的配置内容
4.基本指令
crm_mon #查看在线情况
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
(2)添加VIP
[root@server1 cluster]# /etc/init.d/corosync restart
(3)当一台机器挂掉之后另一台接管VIP
[root@server1 cluster]# crm
vim /etc/httpd/conf/httpd.conf
(4)添加apache服务
[root@server1 cluster]# crm
# warnning为设置的时间过长
[root@server1 cluster]# crm_mon
(5)VIP 和服务不在同一个机子上需要进行绑定将website服务和 VIP 两个绑定
[root@server1 cluster]# /etc/init.d/corosync resatrt
[root@server1 cluster]# crm_mon
测试Server2 down了之后由server1接管
[root@server2 corosync]# /etc/init.d/corosync stop
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
[root@server1 cluster]# crm_mon
(3) VIP 服务 存储不在一台机子上进行绑定设置新的资源组apacheservice将VIP webdata website绑定在一起并且确定先后的启动顺序
[root@server1 cluster]# crm_mon
(4)测试
在被挂载的主机上添加测试页
echo hello > /var/www/html/index.html
访问的时候会一直访问这个测试页不管如何刷新服务如何停止
问题
出现这种情况时注意启动物理机中的fence虚拟机中再重新启动corosync
补充
从上面的信息中可以看出vip和httpd有可能会分别运行于两个节点上这对于通过此IP提供Web服务的应用来说是不成立的即此两者资源必须同时运行在某节点上。有两种方法可以解决一种是定义组资源将vip与httpd同时加入一个组中可以实现将资源运行在同节点上另一种是定义资源约束可实现将资源运行在同一节点上。
定义组资源 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个基本规则
任何值 + 无穷大 = 无穷大
任何值 - 无穷大 = -无穷大
无穷大 - 无穷大 = -无穷大
定义资源约束时也可以指定每个约束的分数。分数表示指派给此资源约束的值。分数较高的约束先应用分数较低的约束后应用。通过使用不同的分数为既定资源创建更多位置约束可以指定资源要故障转移至的目标节点的顺序。因此对于前述的vip和httpd可能会运行于不同节点的问题可以通过以下命令来解决
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