当前位置: 首页 > news >正文

keepalived+nginx 双机热备搭建

keepalived+nginx 双机热备搭建

  • 一、准备工作
    • 1.1 准备两台centos7.9
    • 1.2 nginx 与 keepalived软件 双机安装
    • 1.3 ip分配
    • 1.4 修改主机名
    • 1.5 关闭selinux(双机执行)
    • 1.6 修改hosts(双机执行)
  • 二、安装keepalived
    • 2.1 执行一下命令安装keepalived(双机执行)
      • 2.1.1 yum安装
      • 2.1.2 编译安装
        • 2.1.2.1 安装依赖
        • 2.1.2.2 解压
    • 2.2 编辑keepalived配置文件
      • 2.2.1 清空原有的配置文件(双机执行)
      • 2.2.2 执行以下命令,编辑keepalived.conf文件。(双机分别执行)
      • 2.2.3 内容粘在配置文件中,设置不抢占(第一台主节点执行)
      • 2.2.4 内容粘在配置文件中(第二台从节点执行)
      • 2.2.5 编写check_nginx.sh脚本(双机执行)
    • 2.3 设置开机自启动
  • 三、安装nginx(双机安装)
  • 四、配置下systemctl管理自安装nginx
    • 4.1 创建nginx.service文件
    • 4.2 重载systemctl
    • 4.3 设置开机自启动
  • 五、开启keepalived,并测试下
    • 5.1 首先区分下 nginx 的index.html页面
    • 5.2 开启keepalived
    • 5.3 检验 keepalived的可用性

一、准备工作

1.1 准备两台centos7.9

1.2 nginx 与 keepalived软件 双机安装

1.3 ip分配

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

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

! Configuration File for keepalivedglobal_defs {# 唯一表示id 规格为keep_ip最优一段router_id keep_201
}
vrrp_script check_nginx {# 执行的检测脚本script "/etc/keepalived/check_nginx.sh"# 间隔检测的时间2sinterval 2# 检测失败降低权重,需要与主实例权重相减后小于备份实例weight -20
}
vrrp_instance VI_1 {# 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUPstate BACKUP# 设置不抢占nopreempt# 网卡设置 此处记得修改,ip a s显示需要绑定vip的网卡interface ens33# 虚拟路由标识,是一个数字,不用更改virtual_router_id 51# 定义优先级,数字越大,优先级越高priority 99# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔advert_int 1# 设置验证类型和密码,两个节点必须一致authentication {auth_type PASSauth_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/bashA=`ps -C nginx --no-header |wc -l`if [ $A -eq 0 ];thensystemctl start nginxif [ `ps -C nginx --no-header |wc -l` -eq 0 ];thensystemctl stop keepalivedelseexit 0fielseexit 0fi

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.18.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

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

http://www.lryc.cn/news/32272.html

相关文章:

  • 零基础如何入门学习Python?
  • 认识CSS之基础选择器
  • JavaScript面试题整理汇总
  • 科普| 什么是云原生?
  • Spring Boot 3.0系列【9】核心特性篇之依赖管理
  • 每日算法题
  • xss靶场绕过
  • 【数据结构】核心数据结构之二叉堆的原理及实现
  • Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案
  • RocketMQ-03
  • 大神教你在 Linux 中查看你的时区
  • Redis持久化策略
  • 显著性检验【t-test、方差分析、ks检验】
  • 访问学者在德国访学生活衣食住行攻略
  • SQL-刷题技巧-删除重复记录
  • 基于JSP的虚拟账号交易平台
  • LeetCode201_201. 数字范围按位与
  • 一款好的风险管理软件可以做什么
  • html2canvas使用文档
  • HTML DOM 改变 CSS
  • 基于EB工具的TC3xx_MCAL配置开发01_WDG模块配置介绍
  • Activty启动到显示的过程[二]
  • ubuntu 18.04.06LST安装R4.0+版本报错及解决过程
  • 数据湖架构Hudi(五)Hudi集成Flink案例详解
  • 【Java学习笔记】9.Java 循环结构 - for, while 及 do...while
  • 【面向对象初步】之面向对象VS面向过程
  • 原型链(回顾)
  • DS内排—2-路归并排序
  • 深度账户抽象(Account Abstraction)第 3 部分:Wallet创建
  • 代码分享:面波数据快速成图