nginx+keepalived高可用架构----安装keepalived

Centos 7 安装keepalived

keepalived 安装分为两种方式:源码安装、rpm离线安装;源码安装是使用的最新的版本号keepalived-2.2.8,rpm离线安装使用的是keepalived-1.3.5版本。

1、 源码安装
1)下载keepalived

以2.2.8版本为例,如下为下载地址

https://www.keepalived.org/software/keepalived-2.2.8.tar.gz

2) 安装依赖软件

yum -y install curl automake gcc openssl-devel libnl libnl3-devel
备注:因在公安内网,无需安装net-snmp-devel;如是在正常网络环境使用,可以安装net-snmp-devel,以用来在切换主备后发送邮件提醒。

3)解压软件

tar -xvf keepalived-2.2.8.tar.gz

4) 在keepalived-2.2.8目录执行./autogen.sh

./autogen.sh

5)使用configure命令配置安装目录与核心配置文件所在位置

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

  • prefix:keepalived安装的位置
  • sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/messages中会报错
6) 安装

make && make install

2、 rpm方式离线安装

一般CentOS7系统安装的为openssl 1.0.2k-fips版本,keepalived对应的版本为keepalived-1.3.5-19.el7.x86_64.rpm(因openssl升级比较麻烦,还涉及对openssl-devel等包的升级,建议使用对应系统的版本)

2.1 在互联网环境准备离线安装包

在互联网找到一个和公安网一致的Centos系统(可以启动一个Docker镜像,dockerfile见“含有keepalived的dockerfile”文件),执行如下命令自动导出离线安装包(保存在/soft/rpm/ ):

yum install --downloadonly --downloaddir=/soft/rpm/ keepalived openssl-devel libnl libnl-devel

2.2 Centos 7 离线安装keepalived

1)把安装包copy到内网的/soft/rpm下,进入/soft/rpm目录执行安装命令(自动分析依赖后,自动安装程序)

rpm -Uvh *.rpm --nodeps --force

2.3 启动程序

使用这种命令安装的启动程序为/usr/sbin/keepalived

3、 启动keepalived
3.1 配置 /etc/keepalived/keepalived.conf(见最后)

keepalived启动时,会使用 /etc/keepalived/keepalived.conf配置文件,在程序启动前,需要提前编辑该文件。

3.2 启动keepalived

service keepalived start

3.3 查看keepalived启动状态

service keepalived status

3.4 停止keepalived

service keepalived stop

3.5 配置keepalived开机启动

systemctl enable keepalived  开机启动服务

systemctl disable keepalived  禁止开机启动

systemctl daemon-reload 修改服务配置文件后需要重新加载服务

systemctl is-enabled keepalived 查询是否自启动服务

4、修改keepalived的日志输出到单独文件

在Redhat系统下,默认keepalived的日志会输出到/var/log/messages文件中。如果需要修改,可通过如下方式修改(输出到 /var/log/keepalived.log文件):

1)修改/etc/sysconfig/keepalived 文件(该文件只有成功启动过keepalived程序才会存在)

KEEPALIVED_OPTIONS=“-D -d -S 0”

2)修改/etc/rsyslog.conf,在文件中添加

local0.* /var/log/keepalived.log

3)重新启动keepalived和rsyslog服务:

service rsyslog restart

service keepalived stop

service keepalived start

5、keepalived问题排查
5.1 keepalived刚安装后未启动起来

1) 排查下是不是忘记设置/etc/keepalived/keepalived.conf,并保证该文件的正确性,确认interface关联的网卡是否正确。

2)查看vrrp_script配置的脚本是否设置了可执行权限。

3)并查阅/var/log/messages及 /var/log/keepalived.log中的日志是否有相关报错。

5.2 如果使用到virtual_server功能,怎么判断端口是否映射

执行 ipvsadm -ln 会看到如下结果(将请求到10.9.242.82:8083端口的请求转发到10.9.242.88:8082):

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 10.9.242.82:8083 rr persistent 50

-> 10.9.242.88:8082 Masq 1 0 0

5.3 如何判断虚拟IP是否设置成功

下面命令的eht0为keepalived部署机器的对应的网卡(需要与keepalived.conf中interface eth0配置的一致),查看是否有对应的IP映射。

ip addr show eth0

6、技术支持

taoruicheng@126.com

  • 特殊版本的rpm安装包在如下网站下载:https://rpmfind.net/linux/RPM/index.html
  • 查找yum安装包也可在https://pkgs.org/网站搜索。

keepalived.conf(备的priority 可以设置为120)

global_defs {
   router_id LVS_8 #运行keepalived的机器的一个标识
}
#添加检测脚本
vrrp_script nginx_check {
        script "/usr/local/keepalived/sbin/nginx_check.sh" #如果返回状态码为0,就认为服务正常,如果返回状态码为1,则认为服务故障
        interval 2   # 检测脚本执行的间隔
        #weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加。(成功weight值增加后,当失败时会恢复到原值)
        #weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)(失败weight值减少后,当成功时会恢复到原值)
        weight  -100
        fall 1  #如果请求连续失败一次,认为失败
        rise 1 #表示如果请求一次成功,就认为此节点资源恢复正常。
}
vrrp_instance VI_1 {
    state MASTER   #主机这里是MASTER 从机是BACKUP
    interface ens3f0  #网卡
    virtual_router_id 31  # 主、从机的virtual_router_id必须相同,取值在0-255之间
    priority 150   # 主备机取不同的优先级,主机优先级大,该项取值范围是1-255
    advert_int 2  # 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)
    authentication {
        auth_type PASS
        auth_pass 12306
    }
    virtual_ipaddress {
        15.193.199.31/24 dev ens3f0  # VRRP 虚拟IP ;可换行输入多个进行绑定
    }
    track_script { #在实例中引用脚本
        nginx_check
    }
    preempt #抢占模式
    debug TPEFOAC
}

nginx_check.sh

#!/bin/bash
if [[ -n $(docker ps -q -f "name=^proxyNginx$") ]];then
  exit 0
else
  docker start proxyNginx >> /dev/null 2>&1
  sleep 1
  logger -t nginx-ha-keepalived "check>> Nginx Proxy does not start"
  exit 1
fi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值