欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

高可用负载均衡服务器实现(keepalived+haproxy)

程序员文章站 2023-03-16 20:21:35
准备 两台Centos服务器,分别为118、119 一个未被使用的ip地址,180 配置 haproxy 安装haproxy yum -y install haproxy 编辑...
准备

两台Centos服务器,分别为118、119

一个未被使用的ip地址,180

配置 haproxy 安装haproxy
yum -y install haproxy
编辑 haproxy.service 文件
vi /usr/lib/systemd/system/haproxy.service
在 ExecStart 前添加 ExecStartPre
ExecStartPre=/usr/bin/mkdir -p /run/haproxy
配置 haproxy.cfg 文件
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon
        nbproc 1

defaults
        log     global
        timeout connect 5000
        timeout client  50000
        timeout server  50000

listen frontend
        bind 0.0.0.0:80
        mode tcp
        option tcplog
        balance source
        server s1 [ip地址]  check inter 10000 fall 2 rise 2 weight 1
        server s2 [ip地址]  check inter 10000 fall 2 rise 2 weight 1

	配置 keepalived	
安装keepalived
yum -y install keepalived
yum -y install psmisc
编辑 keepalived.conf 文件,两台服务器会分配两个角色:master、backup,分别需要不同的配置。
vi /etc/keepalived/keepalived.conf

//master 118
global_defs {
    router_id 192.168.22.118
}

vrrp_script check-haproxy {
    script "killall -0 haproxy"
    interval 5
    weight -30
}

vrrp_instance VI-lb {
    state MASTER
    priority 120
    dont_track_primary
    interface ens160
    virtual_router_id 52
    advert_int 3
    track_script {
        check-haproxy
    }
    virtual_ipaddress {
        192.168.22.180
    }
}

//backup
global_defs {
    router_id 192.168.22.119
}

vrrp_instance VI-lb {
    state BACKUP
    priority 110
    dont_track_primary
    interface ens160
    virtual_router_id 52
    advert_int 3
    virtual_ipaddress {
        192.168.22.180
    }
}
重启 重新加载 haproxy.service
systemctl daemon-reload
设置 haproxy和keepalived 开机自启并重新启动
systemctl enable haproxy && systemctl restart haproxy
systemctl enable keepalived && systemctl restart keepalived