环境:centos 7
节点数:2
node1: 192.168.122.101
node2: 192.168.122.102
修改主机名
hostnamectl --static --transient set-hostname node1
或者 vi /etc/hostname
修改 /etc/hosts 文件,并且注释掉127.0.0.1 node1(如有,否则步骤11会出问题)
192.168.122.101 node1
192.168.122.102 node2
***配置静态ip(如需要)
添加静态IP
cd /etc/sysconfig/network-scripts/
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.122.101
NETMASK=255.255.255.0
GATEWAY=192.168.122.254
检查:通信中使用的名字与节点名字必须保持一致:“uname -n”命令,或“hostname”展示出的名字保持一致
以上步骤可以不做,把node1和node2换成对应的IP即可,测试网络是否可通
同步服务器时间到主机(除非特别说明,以下命令每个节点都要执行,简单布置的情况下该步骤也可不做)
yum install ntp -y
ntpdate cn.pool.ntp.org
或者同步硬件时间到主机
hwclock -s
或者节点之间时间同步(只需在一个执行 *注:如果是虚机,最好找物理主机进行同步,虚机之间的同步将不可用“no server suitable”)
先找路径
which ntpdate
crontab -e
*/3 * * * * /usr/sbin/ntpdate 192.168.0.1 &> /dev/null
配置互信,可参考这篇文章 Linux配置互信完全版
安装
yum install -y pacemaker pcs psmisc policycoreutils-python
如果安装不成功,则配置yum源mv /etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-Base.repo.bak wget -O
/etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
添加DNS
echo nameserver 8.8.8.8 > /etc/resolv.conf
yum makecache
如有必要,可关闭防火墙以及selinux
或者放开 tcp 2224端口 udp 5405端口
否则会导致两个问题
1、auth验证无法成功
2、 双机同时启动却都认为对方offline
打开pcsd进程,并设置开机启动
systemctl start pcsd.service
systemctl enable pcsd.service
passwd hacluster
9. 验证操作(只在node1执行)
pcs cluster auth node1 node2
Username: hacluster
Password:
node2: Authorized
node1: Authorized
pcs cluster setup --name mycluster node1 node2
pcs cluster start --all
如需单个节点执行可用如下 pcs cluster start nodename 或者
pcs cluster start
Starting Cluster…
或者systemctl start corosync.service systemctl start pacemaker.service
corosync-cfgtool -s
Printing ring status.
Local node ID 1
RING ID 0
id = 192.168.122.101
status = ring 0 active with no faults
当为127.0.0.1时说明集群是失败的 更改/etc/hosts将127.0.0.1 主机名删除 只留默认项
使用pcs status
或者
pcs status corosync
Membership information
----------------------
Nodeid Votes Name
1 1 node1 (local)
2 1 node2
检查工具
crm_verify -L -V
error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
pcs property set stonith-enabled=false
设置pacemaker,corosync开机自启动:
[root@node1 ~]> pcs cluster enable --all
node1: Cluster Enabled
node2: Cluster Enabled
13. 添加资源,测试
[root@node1 ~]> pcs resource create ClusterIP ocf?IPaddr2
ip=192.168.122.120 cidr_netmask=32 op monitor interval=30s
查看资源命令
pcs resource --help
查看pacemaker支持资源高可用的列表:
pcs resource list
或者
pcs resource list lsb
pcs resource list ocf
例子:以haproxy为例
先查询 pcs resource list|grep haproxy
查到,可以使用systemd或者service类型,也可自定义ocf类型,这里选择前者
service:haproxy - systemd unit file for haproxy
systemd:haproxy - systemd unit file for haproxy
具体描述
pcs resource describe service:haproxy
创建资源
[root@node1 ~]> pcs resource create Haproxy service:haproxy op start timeout=20s op stop timeout=20s op monitor interval=15s timeout=30s
pcs resource -h 可以查看资源命令
查看状态
pcs status
pcs cluster stop node1
在node2上查看
pcs status
打开节点1的集群
pcs cluster start node1
或者也可以使用待机模式,这时的pacemaker和corosync不会关闭,但无法运行资源,可以模拟故障
pcs cluster standby node1
pcs cluster unstandby node1
或者也可以通过kill 进程,关闭网络的方式模拟生产环境下中断电断网的突发状况
然后通过VIP和haproxy,可以将一些服务进行负载均衡配置,这样可以做到水平扩展,关于haproxy负载均衡的配置,如果不理解,可参考我的另一篇
https://blog.csdn.net/weixin_44436386/article/details/88559775
参考例子:
创建资源
查看资源列表、创建
pcs resource list | grep apache
pcs resource create WebSite ocf : heartbeat:apache configfile=/etc/httpd/conf/httpd.conf
statusurl=“http://localhost/server-status”
op monitor interval=1min
更改默认超时参数
pcs resource op defaults timeout=240s
Warning: Defaults do not apply to resources which override them with their own defined values
pcs resource op defaults
timeout: 240s
创建资源约束,启动顺序等
pcs constraint colocation add WebSite with ClusterIP INFINITY
pcs constraint
以上命令显示资源约束类型
Resource Location(资源位置):定义资源可以、不可以或尽可能在哪些节点上运行;
Resource Collocation(资源排列):排列约束用以定义集群资源可以或不可以在某个节点上同时运行;
Resource Order(资源顺序):顺序约束定义集群资源在节点上启动的顺序;
pcs constraint order ClusterIP then WebSite
移动资源到某节点
pcs resource move WebSite node1
等等…
以上。
参考: http://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/