keepalived+nginx 双机热备搭建

您所在的位置:网站首页 nginx双机 keepalived+nginx 双机热备搭建

keepalived+nginx 双机热备搭建

2023-09-11 01:58| 来源: 网络整理| 查看: 265

keepalived+nginx 双机热备搭建 一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux(双机执行)1.6 修改hosts(双机执行) 二、安装keepalived2.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管理自安装nginx4.1 创建nginx.service文件4.2 重载systemctl4.3 设置开机自启动 五、开启keepalived,并测试下5.1 首先区分下 nginx 的index.html页面5.2 开启keepalived5.3 检验 keepalived的可用性

一、准备工作 1.1 准备两台centos7.9 1.2 nginx 与 keepalived软件 双机安装 1.3 ip分配 机器1机器2vip192.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 # 执行的检测脚本 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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3