实现nginx高可用

两台nginx服务器通过keepalived做主从高可用,通过虚拟IP,若主Nginx宕机,则自动切换到备用服务器上。

环境

1
2
3
4
5
VIP(虚拟IP):192.168.1.20  需同网段IP
主nginx:	192.168.1.182
从nginx:192.168.1.183
web服务器:192.168.1.94:8080
web服务器192.168.1.95:8080

步骤

安装nginx

主从服务器都安装nginx。

安装keepalived

1
yum -y install keepalived 默认安装在 /etc/keepalived/

配置文件

先清空默认配置文件

1
2
cd /etc/keepalived
> keepalived.conf
主配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
vrrp_script check_nginx_alive {
   script "/etc/keepalived/check_nginx_alive.sh"  
   interval 3
   weight -10
}
global_defs {
    router_id LVS_DEVEL         # 设置路由标识信息,在一个网络应该是唯一的
}
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface eth0            # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
    virtual_router_id 51        # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.20        # 定义虚拟ip(VIP),可多设,每行一个
    }
}

注:check_nginx_alive:监视nginx,若nginx挂了,切断keepalived.如下。
从配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vrrp_script check_nginx_alive {
   script "/etc/keepalived/check_nginx_alive.sh"
   interval 3
   weight -10
}
global_defs {
    router_id LVS_BACKUP         # 设置路由标识信息,在一个网络应该是唯一的
}
vrrp_instance VI_1 {
    state BACKUP            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface eth0            # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
    virtual_router_id 51        # 虚拟路由编号,主从要一直
    priority 99            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.20        # 定义虚拟ip(VIP),可多设,每行一个
    }
}
检测nginx

在/etc/keepalived/下新建check_nginx_alive.sh,用来监视nginx状态

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ]
   then
     echo 'nginx server is died'
     killall keepalived
fi

日志

keepalived默认日志存放在系统日志:/var/log/messages下。

1,要把日志单独存放,需要修改/etc/sysconfig/keepalived:

1
KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"

2,在/etc/rsyslog.conf 末尾添加

1
local0.*       /var/log/keepalived.log

3,重启日志记录服务

1
systemctl restart rsyslog

4,重启keepalived

1
systemctl restart keepalived

5,查看日志

1
tail -f /var/log/keepalived.log

成功

可以在主服务器上通过 ip a 来查看。会发现网卡 eth0已经绑定了你的虚拟IP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javafanwk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值