keepalived+nginx高可用实践

本文介绍了如何在Linux系统中通过源码安装Keepalived,并配置与Nginx的高可用故障转移。首先,详细列出了安装Keepalived及其依赖的步骤,然后讲解了Keepalived的日志配置和VRRP脚本配置。接着,快速部署了Nginx服务。最后,展示了Keepalived的Master和Slave配置示例,以及用于检查Nginx状态的脚本,确保在Nginx故障时能触发故障转移。
摘要由CSDN通过智能技术生成

安装keepalived,从源码构建,可以先到官网下载源码,安装所需依赖

安装gcc的c++编译环境:yum install gcc-c++

安装解析正则表达式的库:yum install -y pcre pcre-devel

安装数据压缩函式库:yum install -y zlib zlib-devel

安装用于安全通信的库:yum install -y openssl openssl-devel

安装Linux系统基于Netlink协议通信的API接口库,用于支持ipv6:yum install libnl libnl-devel -y

源码上传服务器,解压源码,进入keepalived解压目录,执行以下命令配置:

./configure  --prefix=/usr/local/keepalived --sysconf=/etc

配置完成,没有问题执行以下命令进行安装:make && make install

具体可参照这里

配置keepalived日志路径

vi /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS=“-D -S 0 -d”
-S 0 代表local0,local0在rsyslog.conf中需要配置,所以编辑这个文件
vi /etc/rsyslog.conf
加上以下一行,将local0设备的所有日志都放到keepalived.log中
local0.* /var/log/keepalived.log

如果是已经启动过服务的需要重启服务,否则不需要,rsyslog必须要重启,keepalived由于我们现在是第一次配置,还没有重启过,所以keepalived可以不用重启。

systemctl restart rsyslog
systemctl restart keepalived  #根据需要重启

安装nginx

可以使用源码,也可以使用yum安装,这里为了方便就使用yum安装了。

配置yum repo,创建文件/etc/yum.repos.d/nginx.repo,配置以下内容

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装 yum-utils

yum install yum-utils

这个可以装可以不装,因为以后可能会用到这个工具,索性先装了,和我们这次安装nginx没有关系。

执行以下命令安装nginx

yum install nginx

nginx配置就不详细说了。

keepalived配置

 首先是配置master

! Configuration File for keepalived
global_defs {
   #路由id,全局唯一,表示当前keepalived节点的唯一性
   router_id rs_master
}

vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"         ##监控脚本
    interval 2                                      ##时间间隔,2秒
    weight 2                                        ##权重
}
vrrp_instance VI_1 {
    #设置当前实例状态为MASTER。MASTER代表是主实例,BACKUP代表是备用实例
    state MASTER
    #当前实例绑定的网卡
    interface eth2
    #当前实例的虚拟路由id,一组主备的实例的路由id是相同的
    virtual_router_id 51
    #当前实例的优先级
    priority 100
    #主备之间同步检查时间间隔
    advert_int 1
    #一组主备实例的认证密码,方式非法节点进入路由组
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        check_nginx        #监控脚本
    }
    #设置当前实例的虚拟IP
    virtual_ipaddress {
        192.168.1.100/24
    }
}

slave的配置就不贴了,差不多,但是有几个地方不同

state 要改为BACKUP

priority 改小一点,比MASTER的小就行了。

router_id 也换一下,唯一就行了。

接下来是nginx检查文件,就是用来检查nginx是否还活着,如果nginx挂了,那么就杀掉keepalived这样就是实现故障转移了。

#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l`      ## 查看是否有 nginx进程 把值赋给变量A 
if [ $A -eq 0 ];then                    ## 如果没有进程值得为 零
       service keepalived stop          ## 则结束 keepalived 进程
fi

备机也是一样的配置,这时候就可以测试了,可以手动停掉任何一边的服务,无论是keepalived或者是nginx,如果还能继续访问,那么就成功实现了故障转移,如果不能访问那么就要考虑一下是否配置有问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值