我们常常用Haproxy实现应用的高可用和负载均衡,但是也不能忽视它本身也需要高可用,于是通过Pacemeker+Corosync来实现Haproxy本身的高可用,便是一个不错的解决方案。
关键应用介绍
pacemaker | 资源管理器,负责启停服务,位于集群架构中资源管理、资源代理层 |
corosync | 消息层组件,管理成员关系、消息与仲裁,为高可用环境中提供通讯服务,位于高可用集群架构的底层,为各节点之间提供心跳信息 |
resource-agents | 资源代理,在节点上接收CRM的调度,一般通过脚本对资源进行管理 |
fence-agents | 关闭不稳定或无答复的节点,以保障集群的其它资源,其主要功能是消除脑裂 |
pcs | 命令行工具集 |
系统环境
主机配置
主机名称 | 主机IP |
hacluster1 | 10.10.100.101 |
hacluster2 | 10.10.100.102 |
hacluster3 | 10.10.100.103 |
系统配置(所有主机)
systemctl disable firewalld systemctl stop firewalld #iptables –F sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 echo -e "10.10.100.101 hacluster1\n10.10.100.102 hacluster2\n10.10.100.103 hacluster3" >> /etc/hosts
网络配置(所有主机)
echo -e "net.ipv4.ip_nonlocal_bind = 1\nnet.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
时钟配置(所有主机)
修改配置/etc/chrony.conf:
server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst
配置免密登录(非必要)
ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys for n in 2 3; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@hacluster$n; done
安装并配置haproxy
安装haproxy
yum -y install haproxy systemctl enable haproxy
配置haproxy
以下是配置示例:
listen httpd bind 10.10.100.100:80 balance source option tcpka option httpchk option tcplog server controller01 10.10.100.101:5000 check inter 2000 rise 2 fall 5 server controller02 10.10.100.102:5000 check inter 2000 rise 2 fall 5 server controller03 10.10.100.103:5000 check inter 2000 rise 2 fall 5
安装集群(所有节点)
安装 pcs+pacemaker+corosync
yum -y install pcs pacemaker corosync fence-agents resource-agents
配置corosync
配置文件/etc/corosync/corosync.conf会在创建集群的时候自动创建,不同集群的配置文件因此而不同。
totem { version: 2 cluster_name: ha_cluster secauth: off transport: udpu } nodelist { node { ring0_addr: hacluster1 nodeid: 1 } node { ring0_addr: hacluster2 nodeid: 2 } node { ring0_addr: hacluster3 nodeid: 3 } } quorum { provider: corosync_votequorum } logging { to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes }
启动 pcsd
systemctl start pcsd systemctl enable pcsd
配置用户
安装pcs时会自动创建hacluster用户,此时只需修改密码 (Hacluster@123):
passwd hacluster
配置集群(任意节点)
创建集群
# 配置节点认证 pcs cluster auth -u hacluster -p Hacluster@123 hacluster1 hacluster2 hacluster3 # 创建集群 pcs cluster setup --force [ --start ] --name ha_cluster hacluster1 hacluster2 hacluster3 # 启动集群 pcs cluster start --all pcs cluster enable --all # 查看集群状态 pcs [ cluster ] status ps aux | grep pacemaker
检查配置
# 检验corosync状态 corosync-cfgtool -s corosync-cmapctl | grep members pcs status corosync # 验证集群配置 crm_verify -L -V
# 根据检查结果,禁用STONITH pcs property set stonith-enabled=false # 检查到无法仲裁时,设置忽略 pcs property set no-quorum-policy=ignore # 设置合适的输入处理历史记录及策略引擎生成的错误与警告 pcs property set pe-warn-series-max=1000 pe-input-series-max=1000 pe-error-series-max=1000 # 基于时间驱动的方式进行状态处理 pcs property set cluster-recheck-interval=5
配置资源(任意节点)
配置 VIP
pcs resource create vip ocf:heartbeat:IPaddr2 ip=10.10.100.100 cidr_netmask=24 nic=ens33 op monitor interval=3s # 查看集群资源 pcs resource # 查看VIP状态 ip a show ens33
添加Haproxy
pcs resource create lb-haproxy systemd:haproxy --clone pcs resource
绑定HAProxy和VIP必须在同一节点(建议)
pcs constraint colocation add lb-haproxy-clone with vip
配置必须先启动VIP后再启动haproxy(建议)
pcs constraint order start vip then lb-haproxy-clone kind=Optional
原创文章禁止转载:技术学堂 » Linux搭建Haproxy+Pacemaker+Corosync集群