Keepalived部署双主热备

Keepalived部署双主热备


一、Keepalived安装部署

1.1、去Keepalived官网下载压缩包

1.2、上传压缩包到服务器,并解压

# 上传压缩包
scp ./keppalived.tar.gz [email protected]:/home/software
# 解压
tar -zxvf keppalived.tar.gz

1.3、进入解压目录使用configure命令进行配置安装

./configure --prefix=/usr/local/keepalived --sysconf=/etc
  • prefix:keepalived安装的位置
  • sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/message中会报错

警告

  • 安装过程可能报错:WARNING -this build will not support IPVS with IPv6. …
  • 解决:安装libnl/libnl-3依赖,重新configure一下,就OK了
    yum -y install libnl libnl-devel

1.4、安装keepalived

make && make install

进入/etc/keepalived,该目录下为keepalived核心配置文件


二、配置Keepalived主和从

2.1配置Keepalived - 主

2.1.1、通过命令 vim keepalived.conf打开配置文件,文件位置/etc/keepalived文件夹下

global_defs {
   # 路由id:当前安装keepalived节点主机的标识符,全局唯一标识符
   router_id keep_192.168.64.131
}

# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.131的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.121
    }
}

ip addr 命令可以查看自己的ip和网卡地址

2.1.2、启动Keepalived

# 进去启动目录
cd /usr/local/keeplived/sbin

# 启动
./keepalived

# 查看进程
ps -ef|grep keepalived

# 查看虚拟ip
ip addr

2.2、配置Keepalived - 从

2.2.1、通过命令 vim keepalived.conf打开配置文件,文件位置/etc/keepalived文件夹下

global_defs {
   # 路由id:当前安装keepalived节点主机的标识符,全局唯一标识符
   router_id keep_192.168.64.132
}

# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.131的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.121
    }
}

ip addr 命令可以查看自己的ip和网卡地址

2.3、启动Keepalived

# 进去启动目录
cd /usr/local/keeplived/sbin

# 启动
./keepalived

# 查看进程
ps -ef|grep keepalived

# 查看虚拟ip
ip addr

三、Keepalived注册为系统服务

3.1、进入keepalived解压目录并拷贝配置文件到指定位置

# 进入解压目录
cd /home/software/keepalived-2.0.18

# 进入keepalived目录
cd keepalived

# 进入etc目录
cd etc

# 拷贝配置文件到系统etc下的init.d文件夹下
cp init.d/keepalived /etc/init.d/

# 拷贝配置文件到系统etc下的sysconfig文件夹下
cp sysconfig/keepalived /etc/sysconfig/

# 刷新配置
systemctl daemon-reload

3.2、使用系统服务器进行keepalived启动关闭

# 启动keepalived服务
systemctl start keepalived.service

# 检测keepalived服务状态,两种方法都可以
systemctl status keepalived.service
ps -ef|grep keepalived

# 停止keepalived服务
systemctl stop keepalived.service

# 重启keepalived服务
systemctl restart keepalived.service

四、Keepalived配置Nginx自动重启

4.1、增加nginx重启检测脚本

vim /etc/keepalived/check_nginx_alive_or_not.sh

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
    sleep 3
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi
  • 增加运行权限
    chmod +x /etc/keepalived/check_nginx_alive_or_not.sh
    

4.2、配置keepalived监听nginx脚本

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2 # 每隔两秒运行上一行脚本
    weight 10 # 如果脚本运行成功,则升级权重+10
}

这段代码配置在/etc/keepalived/keepalived.conf脚本中’

4.3、配置vrrp_instance中新增监控的脚本

track_script {
        check_nginx_alive   # 追踪 nginx 脚本
}

4.4、重启Keepalived是的配置文件生效

systemctl restart keepalived

附:Keepalived.conf完整配置

global_defs {
   # 路由id:当前安装keepalived节点主机的标识符,全局唯一标识符
   router_id keep_192.168.64.131
}

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2 # 每隔两秒运行上一行脚本
    weight 10 # 如果脚本运行成功,则升级权重+10
}

# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.131的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx_alive   # 追踪 nginx 脚本
    }

    virtual_ipaddress {
        192.168.64.121
    }
}

五、配置Keepalived双主热备

5.1、进入主节点然后 vim /etc/keepalived/keepalived.conf

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2 # 每隔两秒运行上一行脚本
    weight 10 # 如果脚本运行成功,则升级权重+10
}

# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.131的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx_alive   # 追踪 nginx 脚本
    }

    virtual_ipaddress {
        192.168.64.121
    }
}


vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.64.122
    }
}

5.2、进入主节点然后 vim /etc/keepalived/keepalived.conf

global_defs {
   # 路由id:当前安装keepalived节点主机的标识符,全局唯一标识符
   router_id keep_192.168.64.132
}

# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.131的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.121
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.122
    }
}

5.3、分别重启两台服务器的keepalived服务

systemctl restart keepalived.service
发布了15 篇原创文章 · 获赞 4 · 访问量 3142

猜你喜欢

转载自blog.csdn.net/qq_40873718/article/details/105313598