一、准备工作

1.1 准备两台centos7.9

1.2 nginxkeepalived软件 双机安装

1.3 ip分配

机器1 机器2 vip
192.168.19.200 192.168.19.201 192.168.19.203

1.4 修改主机名

# 第一台
hostnamectl set-hostname nginx01
# 第二台
hostnamectl set-hostname nginx02

1.5 关闭selinux双机执行

#关闭selinux
#永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
#临时关闭
setenforce 0
#查看
getenforce

1.6 修改hosts双机执行

cat >> /etc/hosts << EOF
192.168.19.130 nginx01
192.168.19.131 nginx02
EOF

二、安装keepalived

2.1 执行一下命令安装keepalived双机执行

2.1.1 yum安装

yum -y install keepalived

2.1.2 编译安装

获取安装包https://www.keepalived.org/download.html
找到自己需要版本安装,本次安装2.1.5,双机下载,也可以wget
在这里插入图片描述

2.1.2.1 安装依赖
yum install curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel -y
2.1.2.2 解压
# 解压源码
tar fx keepalived-2.1.5.tar.gz
# 进入解压后的目录
cd keepalived-2.1.5
# 配置选项
./configure --prefix=/usr/local/keepalived --sysconf=/etc --with-run-dir=/usr/local/keepalived/run
# 编译安装
make && make install
# 检查安装情况 如果等于0则代表成功编译安装
echo $?
# 创建存放pid目录
mkdir /usr/local/keepalived/run
# 拷贝启动文件到/usr/sbin/
cp -rf /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

2.2 编辑keepalived配置文件

2.2.1 清空原有的配置文件(双机执行

>/etc/keepalived/keepalived.conf

2.2.2 执行以下命令编辑keepalived.conf文件。(双机分别执行)

vim /etc/keepalived/keepalived.conf

2.2.3 内容粘在配置文件中,设置不抢占(第一台节点执行)

! Configuration File for keepalived

global_defs {
    # 唯一表示id 规格为keep_ip最优一段
    router_id keep_200
}
vrrp_script check_nginx {
   # 执行的检测脚本
   script "/etc/keepalived/check_nginx.sh"
   # 间隔检测时间2s
   interval 2
   # 检测失败降低权重需要与主实例权重相减后小于备份实例
   weight -20
}
vrrp_instance VI_1 {
    # 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP
    state BACKUP
    # 设置不抢占
    nopreempt
    # 网卡设置 此处记得修改,ip a s显示需要绑定vip网卡
    interface ens33
    # 虚拟路由标识,是一个数字不用更改
    virtual_router_id 51
    # 定义优先级数字越大,优先级越高
    priority 100
    # 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔
    advert_int 1
    # 设置验证类型密码两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 脚本监控状态
    track_script {
        check_nginx
    }
    virtual_ipaddress {
        192.168.19.133
    }
}

2.2.4 内容粘在配置文件中(第二台从节点执行)

! Configuration File for keepalived

global_defs {
    # 唯一表示id 规格为keep_ip最优一段
    router_id keep_201
}
vrrp_script check_nginx {
   # 执行的检测脚本
   script "/etc/keepalived/check_nginx.sh"
   # 间隔检测的时间2s
   interval 2
   # 检测失败降低权重需要与主实例权重相减后小于备份实例
   weight -20
}
vrrp_instance VI_1 {
    # 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP
    state BACKUP
    # 设置不抢占
    nopreempt
    # 网卡设置 此处记得修改,ip a s显示需要绑定vip网卡
    interface ens33
    # 虚拟路由标识,是一个数字不用更改
    virtual_router_id 51
    # 定义优先级数字越大,优先级越高
    priority 99
    # 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔
    advert_int 1
    # 设置验证类型和密码,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 脚本监控状态
    track_script {
        check_nginx
    }
    virtual_ipaddress {
        192.168.19.133
    }
}

2.2.5 编写check_nginx.sh脚本(双机执行)

vim /etc/keepalived/check_nginx.sh

#!/bin/bash
    A=`ps -C nginx --no-header |wc -l`
    if [ $A -eq 0 ];then
        systemctl start nginx
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            systemctl stop keepalived
        else
            exit 0
        fi
    else
        exit 0
    fi

别忘记加执行权限,刚开始忘记写了

chmod +x /etc/keepalived/check_nginx.sh

2.3 设置开机自启动

systemctl enable keepalived

三、安装nginx(双机安装)

# 下载依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
# 创建相关目录src下载nginx安装包目录,soft为nginx安装目录
mkdir -p /data/{src,soft}
# 进入下载目录
cd /data/src/
# 下载nginx安装包
yum -y install wget
wget http://nginx.org/download/nginx-1.21.0.tar.gz
# 解压
tar fx nginx-1.21.0.tar.gz
cd nginx-1.21.0/
# 配置nginx编译环境
./configure --prefix=/data/soft/nginx --with-http_stub_status_module
# 编译安装
make && make install
# 检查安装是否问题
echo $?

四、配置systemctl管理自安装nginx

4.1 创建nginx.service文件

vim /lib/systemd/system/nginx.service

将下面文字直接粘贴进去修改

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/data/soft/nginx/sbin/nginx -c /data/soft/nginx/conf/nginx.conf
ExecReload=/data/soft/nginx/sbin/nginx -s reload
ExecStop=/data/soft/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

ExecStart:nginx的启动命令
ExecReload:nginx的重载命令
ExecStop:nginx的停止命令

4.2 重载systemctl

systemctl daemon-reload

4.3 设置开机自启动

systemctl enable nginx

五、开启keepalived,并测试

5.1 首先区分下 nginx 的index.html页面

一台

"hello world 1" > /data/soft/nginx/html/index.html

第二台

"hello world 2" > /data/soft/nginx/html/index.html

5.2 开启keepalived

# 开启keepalived
systemctl start keepalived
# 检查keepalived状态
systemctl status keepalived

在这里插入图片描述
在这里插入图片描述

5.3 检验 keepalived的可用性

首先查看vip在那台机器上,应该在第一台上,因为给的权重

ip a s

在这里插入图片描述
浏览器访问下,访问vip
在这里插入图片描述
关闭一台机器的nginx,这时候我们check_nginx.sh启动nginx命令先注释下,要不会自动启动

在这里插入图片描述
完成停止一台nginx

# 停止nginx
systemctl stop nginx
# 查看nginx状态
systemctl status nginx
# 查看keepalived 状态
systemctl status keepalived
# 查看vip在哪台机器上(两台执行)
ip a s

nginx 停止
在这里插入图片描述
keepalived也停止
在这里插入图片描述
查看vip 再第二台机器上,说明问题
在这里插入图片描述
访问浏览器http://192.168.19.203/
在这里插入图片描述
因为用的是不抢占模式,所以我们恢复下,看看vip会不会漂移回来(不漂移回来是对的)
首先修改刚刚修改的第一台check_nginx.sh脚本,将注释取消
在这里插入图片描述
直接启动第一台的keepalived,脚本会启动nginx的

# 启动第一台keepalived
systemctl start keepalived
# 查看状态
systemctl status keepalived
# 查看nginx启动状态
systemctl status nginx
# 都启动后查看vip再那台机器上(双机执行)
ip a s

还是再第二台上,说明没问题
在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_47402482/article/details/129364584

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46910.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注