相较于rhel6/centos6 下的HA配置,rhel7下使用pcs 取代了原先的ccs和luci ,本篇就结合pcs+pacemaker+corosyn+httpd做一个简单的HA配置测试 。
一、主机规划
node1.361way.com : 192.168.122.80 node1.361way.com : 192.168.122.81 VIP : 192.168.122.85
二、软件安装与主机配置
1、先关闭selinux和防火墙并进行时间同步(步骤略)
2、设置主机名
[root@localhost ~]# hostnamectl set-hostname node1.361way.com
另一个节点上用同样的方法配置 。并在/etc/hosts文件内增加如下内容:
192.168.122.80 node1.361way.com node1 192.168.122.81 node2.361way.com node2
3、安装httpd与pacemaker行装软件
[root@localhost ~]# yum -y install httpd [root@localhost ~]# yum install -y pacemaker pcs fence-agents-all
上面软件安装过程中,会自动安装依赖包corosyn 。
三、pcs配置
1、密码配置及pcs服务启动
软件安装完成后,主机上会自动增加有hacluster用户,修改hacluster用户密码:
[root@localhost ~]# cat /etc/passwd|grep hacluster hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin [root@node1 ~]# echo "redhat" |passwd --stdin hacluster [root@node2 ~]# echo "redhat" |passwd --stdin hacluster
分别在两个节点上启用pcsd服务:
[root@node1 ~]# systemctl start pcsd.service [root@node1 ~]# systemctl status pcsd.service
此处服务不用enable,后面有命令可以直接将三个服务enable掉。
2、HA认证及配置文件生成
认证配置和conf文件生成只需要在一个节点上执行,另一个节点会自动产生该文件:
[root@node1 ~]# pcs cluster auth node1 node2 -u hacluster -p redhat node1: Authorized node2: Authorized [root@node1 ~]# pcs cluster setup --name mycluster node1 node2
操作完成后,可以查看下corosync.conf文件,如下:
[root@node1 ~]# cat /etc/corosync/corosync.conf totem { version: 2 secauth: off cluster_name: mycluster transport: udpu } nodelist { node { ring0_addr: node1 nodeid: 1 } node { ring0_addr: node2 nodeid: 2 } } quorum { provider: corosync_votequorum two_node: 1 } logging { to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes }
另一个节点查看,同样有该文件存在。
3、pcs集群服务启动
[root@node1 ~]# pcs status Error: cluster is not currently running on this node [root@node1 ~]# pcs cluster start --all node2: Starting Cluster... node1: Starting Cluster... [root@node2 ~]# pcs status Cluster name: mycluster WARNING: no stonith devices and stonith-enabled is not false Last updated: Wed Nov 9 08:18:17 2016 Last change: Wed Nov 9 08:17:06 2016 by hacluster via crmd on node1 Stack: corosync Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum 2 nodes and 0 resources configured Online: [ node1 node2 ] Full list of resources: PCSD Status: node1: Online node2: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
设置开机自启动:
[root@node1 ~]# pcs cluster enable --all node1: Cluster Enabled node2: Cluster Enabled
配置完成后,通过pcs status再查看,会发现corosync 、pacemaker两个服务会变成开机自启动 。
4、resource资源配置
resource资源同样只需要在其中一个节点上执行即可:
[root@node1 ~]# pcs resource create VirtIP IPAddr ip=192.168.122.85 cidr_netmask=24 op monitor interval=30s [root@node1 ~]# pcs resource create Httpd apache configfile="/etc/httpd/conf/httpd.conf" op monitor interval=30s
再次查看 pcs状态:
[root@node1 ~]# pcs status Cluster name: mycluster WARNING: no stonith devices and stonith-enabled is not false Last updated: Wed Nov 9 08:29:54 2016 Last change: Wed Nov 9 08:29:20 2016 by root via cibadmin on node1 Stack: corosync Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum 2 nodes and 2 resources configured Online: [ node1 node2 ] Full list of resources: VirtIP (ocf::heartbeat:IPaddr): Stopped Httpd (ocf::heartbeat:apache): Stopped PCSD Status: node1: Online node2: Online Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
同样,也可以到2号点执行pcs status查看 。
5、启用resource资源
[root@node1 ~]# pcs status resources VirtIP (ocf::heartbeat:IPaddr): Stopped Httpd (ocf::heartbeat:apache): Stopped [root@node1 ~]# [root@node1 ~]# pcs constraint colocation add Httpd with VirtIP INFINITY [root@node1 ~]# pcs property set stonith-enabled=false [root@node1 ~]# pcs property set no-quorum-policy=ignore [root@node1 ~]# pcs property set default-resource-stickiness="INFINITY" [root@node1 ~]# pcs status resources VirtIP (ocf::heartbeat:IPaddr): Started node1 Httpd (ocf::heartbeat:apache): Started node1
节点2上同样也可以执行pcs status resources进行查看,两边获取的结果是一致的。
分别在两个节点上执行ip a s 确认发现VIP只在其中一个节点上。
四、测试及其他
将其中的主用节点的服务停掉或主机关机,IP停掉,可以发现备用节点可以快速的提供服务 。具体步骤略过。
另外pcsd服务还提供了web管理页面,默认其监听的是ipv6下的2224端口,如果想要使用该服务进行web界面管理,可以分别修改两个节点的/usr/lib/pcsd/ssl.rb文件:
webrick_options = { :Port => 2224, #:BindAddress => '::', :BindAddress => '0.0.0.0', #:Host => '::', :Host => '0.0.0.0',
当前注释的为默认配置,将其修改监听为0.0.0.0 。修改完成后需要重启pscd服务生效。
虽然刚刚我们通过命令行的方式配置过两个节点,不过默认web界面上并不会显示 。这里选择增加一个存在的集群,并将节点IP输入后,其会自动识别并可以进行管理。