Nginx+keepalived实现高可用和负载均衡

1、实现nginx+keepalived至少需要4台虚拟机,两台做负载均衡器,两台做后端服务器

虚拟机需安装服务用途
keepalived(master)需要安装keepalived和nginx主负载
keepalived(backup)需要安装keepalived和nginx主备
nginx1只需要安装nginxweb1
nginx2只需要安装nginxweb2

2、安装好服务后先配置两台后端服务器

[root@nginx1 ~]# vim /usr/share/nginx/html/index.html

nginx2同理,这里做简单的页面用于区分两台后端服务器。

3、配置keepalived服务器上的nginx负载均衡

[root@keepalived-master ~]# vim /etc/nginx/conf.d/default.conf

进入nginx的子配置文件进行修改

upstream nginx {
        server 192.168.188.175:80;
        server 192.168.188.174:80;
}

server {
        listen 80;
        server_name localhost;

        location / {
        proxy_pass http://nginx;
        }
}

keepalived的master端和backup端的nginx子配置文件保持一致

4、配置完成之后使用浏览器访问keepalived端IP,查看负载均衡是否正常

5、配置keepalived(master)配置文件

[root@keepalived-master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#全局配置
global_defs {
   router_id master   #自定义,主和备不能一样(机器标识)
}
vrrp_script check_nginx {
   script "/etc/keepalived/check_nginx_status.sh"
   interval 5     #五秒执行一次
}
#配置虚拟路由器
vrrp_instance VI_1 {
    state MASTER        #定义主还是备
    interface ens33     #VIP绑定接口
    virtual_router_id 80  #整个集群的调度器一致(虚拟路由器的唯一标识)
    priority 100         #优先级,back改为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.188.66/24   # vip
    }
    track_script {
        check_nginx
    }
}

6、配置keepalived(backup)配置文件

[root@keepalived-backup ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#全局配置
global_defs {
   router_id backup   #自定义,主和备不能一样(机器标识)
}
vrrp_script check_nginx {
   script "/etc/keepalived/check_nginx_status.sh"
   interval 5     #五秒执行一次
}
#配置虚拟路由器
vrrp_instance VI_1 {
    state BACKUP        #定义主还是备
    interface ens33     #VIP绑定接口
    virtual_router_id 80  #整个集群的调度器一致(虚拟路由器的唯一标识)
    priority 50         #优先级,back改为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.188.66/24   # vip
    }
    track_script {
        check_nginx
    }
}

7、写判断脚本,功能是当nginx宕机,可以关闭本机的keepalived(主和备都要写)

注意:要给脚本授予执行权,否则无法执行

[root@keepalived-master ~]# vim /etc/keepalived/check_nginx_status.sh
#!/bin/bash												        
/usr/bin/curl -I http://localhost &>/dev/null	
if [ $? -ne 0 ];then										    
	systemctl stop keepalived
fi	

8、启动keepalived(主备都启动)

master端的虚拟IP生成

backup端没有虚拟IP

关闭master端的nginx

注:恢复时,必须先启动nginx,再启动keepalived

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值