keepalived+nginx实现高可用

1.安装keepalived、nginx

yum install keepalived –y

//centos默认无nginx源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install -y nginx

2.修改keepalived配置文件(/etc/keepalived/keepalived.conf)

global_defs {
    notification_email {
        [email protected]
        [email protected]
        [email protected]
    }
    notification_email_from [email protected]
    smtp_server 192.168.200.1
    smtp_connect_timeout 30
    router_id BACKUP                        # 主机标识
    vrrp_skip_check_adv_addr
    # vrrp_strict                           # 一定要注释掉
    vrrp_garp_interval 0
    vrrp_gna_interval 0
}



vrrp_script chk_nginx {
    script "/etc/keepalived/chk_nginx.sh"    # 检测脚本
    interval 2                               # 执行脚本间隔 2s
    weight -30                               # 本服务器宕机后权重减少 -30
}


vrrp_instance VI_1 {
    state BACKUP    # MASTER主服务器,BACKUP备份服务器
    interface ens33 #网卡
    virtual_router_id 51    # 虚拟路由ID,主备必须一致
    priority 80     # 优先级,即权重,主比备要高
    advert_int 1    # 服务器心跳 1s 检测一次
    authentication {
        auth_type PASS  # 认证方式 主备需一致
        auth_pass 1111  # 认证密码 主备需一致
    }
    virtual_ipaddress {
        192.168.72.155  # 虚拟地址,可以多个
    }
}

3.nginx检测脚本

#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
# 以下两行暂时先注掉,防止测试时,手动关闭nginx后,脚本又自动启动nginx
#      /usr/sbin/nginx
#       sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                killall keepalived
        fi
fi


# 修改脚本权限
chmod 777 nginx_check.sh

4.重启keepalivee、nginx

service nginx restart
service keepalived restart

5.查看虚地址是否绑定成功

ip a

keepalived+nginx实现高可用_第1张图片

6.测试

断开主节点,看是能飘逸到备节点上

实际运用

原因:Nginx+Tomcat实现负载均衡我们已经能通过Nginx来实现Tomcat应用的负载均衡,但是单个的Nginx会存在单点隐患,如果Nginx挂掉,那么全部的Tomcat应用都将变得不可用,所以实现Nginx的高可用是必不可少的一步。

云环境的运用

1.申请虚拟IP

阿里云和腾讯云的 HAVIP是可以实现的,不清楚天翼云的VIP能不能实现该功能

2.将EIP绑定到虚拟IP,或者过防火墙用防火墙的公网IP

注意不要去绑定某一台主机

3.用keepalived组件把申请的虚拟IP管理起来,保证出故障的时候可以飘逸

keepalived+nginx实现高可用_第2张图片

你可能感兴趣的:(nginx,运维)