nginx复习009 keepalived高可用方案

—–nginx+Keepalived高可用方案

1> 什么是高可用
高可用是指通过专门的架构设计,减少整个系统的故障的时间,保持其提供服务的高度可用性.

–在将nginx作为负载均衡服务器使用时,upstream机制能够检测出后端服务器是否可用,如果其中一台服务器宕机,nginx能够自动转移到后端正常的服务器中,以保持系统持续可用.
–衡量一个集群的高可用性在于没有单点故障,即其中任何一台服务器宕机都不会造成整个服务中断.
–若一个集群的前端只有一台nginx反向代理负载均衡服务器,一旦该服务器发生故障,就会造成整个集群的服务中断.

–为了解决这个问题,可以利用keepalived部署备用服务器,实现故障转移.
Keepalived内置了VRRP(Virtual Router Redundancv Protocol, 虚拟路由冗余协议)功能,
VRRP用于解决静态路由出现的单点故障问题,
它通过ip多播的方式通信,当发现主路由故障时,
通过选举策略将备用路由更换为主路由,从而继续提供服务.

–Keepalived利用VRRP实现了将提供对外访问的IP地址(Virtual IP),
自动在:主服务器(Master)和备用服务器(Backup)之间切换.

正常情况下Master使用Virtual IP提供对外访问,当Master故障时,
其他正在监控Master的Backer会通过优先级(priority)机制,
竞争接管Virtual IP继续对外提供服务,
其他落选的Backup会继续监控当前使用的Virtual IP服务器.

–高可用实验环境的搭建思路
角色 | RIP(Real IP) | VIP(Virtual IP) | 说明
Master 192.168.158.131 192.168.158.20 nginx+Keepalived
Backup 192.168.158.132 192.168.158.20 nginx+Keepalived
- 192.168.158.133 - 后端服务器1
- 192.168.158.134 - 后端服务器2

–安装和配置Keepalived服务
1> 部署主服务器
–安装nginx
–安装keepalived
下载
编译安装

tar -zxvf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure
make && make install && cd ..

添加到系统服务,配置开机启动

cd /usr/local/etc/rc.d/init.d
cp keepalived /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived
chkconfig keepalived on

链接配置文件

cd /usr/local/etc/sysconfig
ln -s `pwd`/keepalived /etc/sysconfig/keepalived

链接程序文件

cd /usr/local/sbin
ln -s `pwd`/keepalived /usr/sbin/keepalived

–配置主服务器的keepalived
启动keepalived前需要创建一个配置文件,
keepalived将会根据配置文件中的配置进行工作

执行如下命令可以查看keepalived的配置文件模板,该文件中提供了一些参考配置:

less /usr/local/etc/keepalived/keepalived.conf

在keepalived服务脚本中,默认加载的配置文件路径为”/etc/keepalived/keepalived.conf”
目前该文件并不存在,需要手动创建

mkdir /etc/keepalived
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 21
    mcast_src_ip 192.168.158.131
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress { 
        192.168.158.20
    }
}

启动查看

service keepalived start
ps aux | grep keepalived
ip a | grep 192.168.158.20

2>部署备用服务器
克隆主服务器,修改keepalived配置文件

vrrp_instance VI_1 {
    state BACKUP
    priority 90
    ......
}

Master和Backup服务器中的keepalived通过VRRP的112端口通信,
如端口无法访问这会同时抢占Virtual IP地址
–配置防火墙规则

#备用服务器配置允许主服务器访问
iptables -I INPUT -s192.168.158.131 -p112 -jACCEPT
service iptables save
#主服务器配置允许备用服务器访问
iptables -I INPUT -s192.168.158.132 -p112 -jACCEPT
service iptables save

——使用keepalived监控nginx服务
1>实现思路
使用keepalived除了可以监控其他服务器的keepalived是否正常,
也可以监控本机中某个服务是否正常

下面将实现利用keepalived监控nginx进程是否正常工作,
如果nginx出现问题,则尝试重新启动nginx.如果重启nginx后仍然无法工作,
则停止本机的keepalived服务,从而使其他备用服务器自动接管Virtual IP.

2> 自动监控nginx
修改keepalived配置文件

vrrp_script chk_nginx {    #配置用于检测nginx运行状态的脚本
    script "/chk_nginx.sh" #用于检测的脚本文件路径
    interval 2             #每2秒执行一次脚本
    weight -20             #当检测失败时,权重发生的变化
}
vrrp_instance VI_1 {       #为VI_1添加监控脚本
   ......
   track_script {
        chk_nginx
    }
}

创建监控脚本

vim /chk_nginx.sh

#! /bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    service nginx start
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        service keepalived stop
    fi
fi


chmod +x /chk_nginx.sh
service keepalived reload

测试nginx是否重启

service nginx stop
ps -C nginx --no-header

–如果重启不了,是否切换到备用服务器
–#因为手动测试有延迟,写成脚本执行

cd /usr/local/nginx/sbin
vi test.sh
#! /bin/bash
service nginx stop
chmod -x nginx
chmod +x test.sh
./test.sh

–最近发现这个不错 https://blog.csdn.net/xyang81/article/details/52556886

猜你喜欢

转载自blog.csdn.net/eebaicai/article/details/81323401