Linux下搭建Haproxy+Pacemaker+Corosync集群

我们常常用Haproxy实现应用的高可用和负载均衡,但是也不能忽视它本身也需要高可用,于是通过Pacemeker+Corosync来实现Haproxy本身的高可用,便是一个不错的解决方案。

关键应用介绍

系统环境

主机配置

系统配置(所有主机)

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

时钟配置(所有主机)

vi /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

配置haproxy可参照本文另一篇文章 CentOS下通过Galera+Haproxy+Keepalived搭建MariaDB高可用集群 的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

注意:其中bind绑定的是后面将配置的集群资源的VIP。

另外:在本文中没有搭建haproxy的后端业务,各位可以自行搭建两台httpd应用服务器进行测试。

安装集群(所有节点)

安装 pcs+pacemaker+corosync

yum -y install pcs pacemaker corosync fence-agents resource-agents

配置corosync

该配置文件会在创建集群的时候自动创建,不同集群的配置文件因此而不同。

cat /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
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
标签:LinuxHAproxy集群 发布于:2019-10-16 19:38:47