keepalived+nginx负载均衡

10 篇文章 0 订阅
3 篇文章 0 订阅

keepalived+nginx负载均衡

  • 环境:

centos7.6
nginx 1.16.0
keepalived v1.3.5
ip:
    master-nginx-ip:192.168.117.146
    slave-nginx-ip:192.168.117.147
    vip:192.168.117.152
  • 安装nginx和keepalived
-   1.安装 yum 源: 
        sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
        检查是否将yum源安装成功: sudo yum repolist
-   2.安装nginx
        yum install nginx -y
-   3.防火墙处理
        关闭防火墙: systemctl stop firewalld 
        或者
        映射到指定端口:
        firewall-cmd --zone=public --add-port=80/tcp --permanent
        firewall-cmd --reload
        打开网页输入ip和端口测试一下是否是nginx界面
-   3.安装keepalived
        yum install keepalived -y
-   4.备注:
        1.本人习惯yum安装,你可以选择编译安装。
        2.nginx相关启动命令:systemctl start|stop|restart|status nginx
        3.keepalived相关启动命令:systemctl start|stop|restart|status keepalived
  • 配置keepalived
! Configuration File for keepalived
global_defs {
    router_id 146 ## 标识本节点的字条串,通常为 hostname
}

vrrp_script nginx_check {
    script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
    interval 2 ## 检测时间间隔
    weight -20 ## 如果条件成立,权重-20
}

vrrp_instance VI_1 {
    state MASTER  ## 主节点为 MASTER, 对应的备份节点为 BACKUP
    interface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,通过ifconfig或者ip 查看
    virtual_router_id 51 ## 虚拟路由的 ID 号, 两个节点设置必须一样
    mcast_src_ip 192.168.117.146
    priority 100   ## 节点优先级
    nopreempt ## 优先级高的设置 nopreempt
    advert_int 1  ## 组播信息发送间隔
   
    authentication {
        auth_type PASS
        auth_pass 1111  ## 真实生产,按需求对应该过来
    }

    track_script {
        nginx_check ## 执行 Nginx 监控的服务
    } 
   
    virtual_ipaddress {
        192.168.117.152 ## 虚拟 ip,可以定义多个
    }
}

-   备注:
        1.此配置文件为master配置文件,slave配置需要将 :
            state MASTER-> state BACKUP
            priority 100 -> priority 90 (slave优先级要低于master)
            mcast_src_ip 192.168.117.146 -> mcast_src_ip 192.168.117.147
        2.脚本nginx_check.sh脚本见底部
        
  • 启动keepalived(见上文启动命令)
systemctl start keepalived
  • 检查是否配置成功
-   输入ip add
[root@hdp3 log]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ae:3f:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.117.146/24 brd 192.168.117.255 scope global noprefixroute dynamic ens33
       valid_lft 1105sec preferred_lft 1105sec
    inet 192.168.117.152/32 scope global ens33 ##   代表启动成功
       valid_lft forever preferred_lft forever
    inet6 fe80::6d95:5754:b4d2:44ed/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
  • 测试是否高可用
-   关闭master,systemctl stop keepalived ,查看日志
Jul 30 16:45:50 hdp4 Keepalived_healthcheckers[7066]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 30 16:45:51 hdp4 Keepalived_vrrp[7067]: VRRP_Instance(VI_1) Changing effective priority from 100 to 80
Jul 30 16:45:52 hdp4 Keepalived_vrrp[7067]: /etc/keepalived/nginx_check.sh exited due to signal 15
Jul 30 16:45:53 hdp4 Keepalived_vrrp[7067]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: /etc/keepalived/nginx_check.sh exited due to signal 15
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: VRRP_Instance(VI_1) Entering MASTER STATE
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: VRRP_Instance(VI_1) setting protocol VIPs.
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.117.152
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:54 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:56 hdp4 Keepalived_vrrp[7067]: /etc/keepalived/nginx_check.sh exited due to signal 15
Jul 30 16:45:58 hdp4 Keepalived_vrrp[7067]: /etc/keepalived/nginx_check.sh exited due to signal 15
Jul 30 16:45:59 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:59 hdp4 Keepalived_vrrp[7067]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.117.152
Jul 30 16:45:59 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:59 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:59 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152
Jul 30 16:45:59 hdp4 Keepalived_vrrp[7067]: Sending gratuitous ARP on ens33 for 192.168.117.152

nginx_check.sh脚本

# vim /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    killall keepalived
fi
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值