Linux搭建Haproxy+Pacemaker+Corosync集群

我们常常用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集群

精彩评论

1+1=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏