keepalived+nginx实现负载均衡

本文详细描述了如何在Linux系统中通过yum安装Keepalived,编辑配置文件实现主从VRRP模式,监控Nginx状态并设置虚拟IP,以便在服务器集群中实现高可用服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本信息:

172.16.4.103为主

172.16.4.106为从

bash脚本暂时不会编写,自己写的测试时候没用,就不献丑了,有能力的编写请联系我。

1.安装keepalived
yum install -y keepalived
2.编辑配置文件
vi /etc/keepalived/keepalived.conf
  • 主keepalived.conf(172.16.4.103)

global_defs {  
    router_id LVS_DEVEL 
}  
​
# 检查nginx状态的脚本,健康监测脚本
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" # 脚本路径
    interval 2 # 脚本执行间隔时间
    weight -20
}
  
vrrp_instance VI_1 {  
    state MASTER  
    interface ens32  # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 51  # 虚拟路由编号,主从要一至
    priority 150 # 优先级,数值越大,获取处理请求的优先级越高 master要大于slave
    advert_int 1
    unicast_src_ip 172.16.4.103 # 本机ip
    
    track_script {
        chk_nginx
    }
​
    nopreempt
    authentication {  
        auth_type PASS  # 指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)
        auth_pass 1111  # 指定认证所使用的密码。最多8位
    }  
    unicast_peer { # 另外一台的服务器ip,如果是多台就配多个ip
        172.16.4.106
    }
    virtual_ipaddress {  # 指定VIP地址
        172.16.4.110
    }  
​
}  
  • 从keepalived.conf(172.16.4.106)

# 定义全局变量  
global_defs {  
    # 设置路由器的ID,通常用于标识参与VRRP的路由器  
    router_id LVS_DEVEL  
}  
  
# 定义一个VRRP脚本,用于检查nginx的状态  
vrrp_script chk_nginx {  
    # 脚本的路径,该脚本应该返回0表示nginx正常,非0表示nginx异常  
    script "/etc/keepalived/nginx_check.sh"  
    # 脚本执行的间隔,单位为秒  
    interval 2  
    # 根据脚本的返回值调整优先级。这里表示如果nginx异常,则降低优先级20  
    weight -20   
}  
  
# 定义一个VRRP实例  
vrrp_instance VI_1 {  
    # 设置实例的状态为BACKUP,表示该实例是一个备份路由器  
    state BACKUP  
    # 指定用于VRRP通信的网络接口  
    interface ens32  
    # 设置虚拟路由器的ID,确保在同一个局域网内的所有VRRP路由器此值唯一  
    virtual_router_id 51  
    # 设置该实例的优先级,数值越大优先级越高  
    priority 90  
    # 发送VRRP通告的间隔,单位为秒  
    advert_int 1  
    # 指定发送VRRP通告的源IP地址  
    unicast_src_ip 172.16.4.100  #另外一个写相同的IP
    # 指定接收VRRP通告的对端IP地址列表  
    unicast_peer {  
        172.16.4.103  
        172.16.4.106  
    }  
  
    # 设置该实例不会抢占MASTER状态,即使它的优先级更高  
    nopreempt  
    # 设置VRRP实例的认证方式  
    authentication {  
        # 使用密码认证  
        auth_type PASS  
        # 设置认证密码  
        auth_pass 1111  
    }  
  
    # 跟踪之前定义的chk_nginx脚本。如果nginx异常,可能会影响该实例的优先级或状态  
    track_script {  
        chk_nginx  
    }  
  
    # 设置虚拟IP地址列表,当该实例成为MASTER时,这些IP地址将被赋予该实例  
    virtual_ipaddress {  
        172.16.4.110  
    }  
}
3.启动keepalived
启动keepalived

service keepalived start
设置keepalived开机自启

sudo systemctl enable keepalived
查看keepalived状态
sudo systemctl status keepalived

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值