基于nginx做负载均衡器配合keepalived做高可用

准备集群

  • nginx01服务器 192.168.50.104
  • nginx02服务器 192.168.50.105
  • keepalived+nginx四层代理 192.168.50.102
  • keepalived+nginx四川代理 192.168.50.103

一、安装nginx

#四台服务器全部安装nginx
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install  nginx

二、安装keepalived

# 192.168.50.102  192.168.50.103 安装keepalived服务
yum -y install keepalived

#修改主机192.168.50.102的keepalived配置文件 yum方式安装的会生产配置文件在/etc/keepalived下
vim keepalived.conf
keepalived.conf:
#检测脚本
vrrp_script chk_http_port {
    script "/etc/keepalived/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 1                          #(检测脚本执行的间隔,单位是秒)
    weight 1                            #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 51    # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.50.200            # 定义虚拟ip(VIP)
    }
}

scp keepalived.conf 192.168.50.103:`pwd`  #复制配置文件到103主机 修改state状态和priority优先级

三、准备脚本文件

## 192.168.50.102  192.168.50.103 
vim /etc/keepalived/check_nginx.sh
#!/bin/bash

if ! killall -0 nginx &> /dev/null; then   
    systemctl stop keepalived
fi

-----------------------------------------------------------------------------------------------------
killall -0 nginx: 这个命令尝试发送信号0给名为 "nginx" 的进程。由于信号0不会对进程产生影响,它仅用于检查进程是否存在。如果进程存在,则命令的退出状态为0;如果进程不存在,则退出状态为非0。
 ! 符号用于对命令的退出状态进行逻辑非操作。如果 killall -0 nginx 命令返回非0,则条件成立。
systemctl stop keepalived:如果条件成立(即不存在名为 "nginx" 的进程),则执行该命令停止 Keepalived 服务。
-----------------------------------------------------------------------------------------------------
chmod +x check_nginx.sh #给执行权限

四、测试服务

浏览器访问 http://192.168.50.200
killall nginx           # 关闭192.168.50.102的nginx
ip addr show ens 33     #查看vip漂移到103主机
systemctl status keepalived #查看keepalived状态 102的keepalived自动停止
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值