Ubuntu18.04安装keepalived

参考博客

安装指南
IFY
计算机网络知识
nginx负载均衡

正文

安装步骤

安装前环境准备
sudo apt-get install libssl-dev
sudo apt-get install libpopt-dev
sudo apt-get install daemon
sudo apt-get install build-essential
sudo apt-get install libssl-dev 
sudo apt-get install openssl 
sudo apt-get install libpopt-dev 
安装

选择一种
1.直接安装

sudo apt-get install keepalived

2.下载编译安装

sudo apt-get install build-essential libssl-dev # 安装编译工具和openssl依赖
wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz # 下载源码
tar -zxvf keepalived-2.0.7.tar.gz # 解压源码
cd keepalived-2.0.7/
./configure --prefix=/usr/local/keepalived # 配置keepalived的安装目录
make # 编译源码
sudo make install # 安装到安装目录,需要使用root权限

守护进程和开机启动

sudo mkdir -p /etc/keepalived
sudo ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
sudo ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
sudo ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/default/keepalived

采用systemd的方式添加到系统服务,执行如下命令:

(
cat <<EOF
[Unit]
Description=Keepalive Daemon (LVS and VRRP)
After=syslog.target network-online.target
Wants=network-online.target
# Only start if there is a configuration file
ConditionFileNotEmpty=/etc/keepalived/keepalived.conf

[Service]
Type=forking
KillMode=process
# Read configuration variable file if it is present
EnvironmentFile=-/etc/default/keepalived
ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF
) > keepalived.service
sudo cp -a keepalived.service /lib/systemd/system/keepalived.service
sudo ln -s /lib/systemd/system/keepalived.service /etc/systemd/system/multi-user.target.wants/keepalived.service

通过文件是否存在判断服务是否存在

此处使用最简单的配置入门,假设我们以/tmp/目录下是否存在service_ok这个文件来判断服务是否可用。
touch /tmp/service_ok
同理可以监控nginx的pid文件是否存在,判断nginx服务是否可用。

配置keepalived.conf

从机配置文件

! Configuration File for keepalived
global_defs {
#添加以下参数即可
script_user root
enable_script_security
}
vrrp_script chk_service_ok {

        script "/bin/ls /tmp/service_ok"
        interval 2
        }

    vrrp_instance VI_1 {
        interface enp5s0
        state BACKUP
        virtual_router_id 51
        priority 100

                virtual_ipaddress {
                         192.168.1.92/25
                         }

                track_script {
                         chk_service_ok
                        }
  }


这里的interface网卡名称和宿主机物理网卡名称一致

在这里插入图片描述
虚拟地址填和MASTER一致。(BACKUP/MASTER)

global_defs {
#添加以下参数即可
script_user root
enable_script_security
}
vrrp_script chk_service_ok {

        script "/bin/ls /tmp/service_ok"
        interval 2
        }

    vrrp_instance VI_1 {
        interface enplo
        state MASTER
        virtual_router_id 51
        priority 100

                virtual_ipaddress {
                         192.168.1.92/25
                         }

                track_script {
                         chk_service_ok
                        }
  }

启动keepalived进程,并设置为开机启动,通过sudo systemctl status keepalived查看状态:

sudo systemctl start keepalived
sudo systemctl status keepalived
sudo systemctl enable keepalived

在这里插入图片描述
如果遇到这种情况按照提示执行命令即可
systemctl daemon-reload

查询网络状态

ip a
在这里插入图片描述

监控nginx脚本

touch /etc/keepalived/check_nginx.sh
chmod +x /etc/keepalived/check_nginx.sh

可以配置KPL执行该脚本监控ng的情况。

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx   #尝试重启nginx
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务
        killall keepalived
    fi
fi

参考

参考

# 检测nginx的脚本
# keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
# 并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh"
  interval 2 # 每2秒检测一次nginx的运行状态
  weight -5  # 失败一次,将自己的优先级减5
}
global_defs {
    router_id ubuntu01 #标识本节点的名称,通常为hostname
}
vrrp_instance VI_1 {
    state MASTER                # 状态,主节点为MASTER,备份节点为BACKUP
    interface enp0s3            # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
    virtual_router_id 200    # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
    mcast_src_ip 192.168.1.104    # 本机IP地址
    priority 100        # 节点优先级,值范围0~254,MASTER要比BACKUP高
    advert_int 1        # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    nopreempt            # 表示不争抢vip
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    # nginx存活状态检测脚本
    track_script {
        chk_nginx
    }
    # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
    virtual_ipaddress {
        192.168.1.200/24
    }
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值