IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【Nginx】学习笔记 02 - Nginx + Keepalived 实现 HA(High-Availability) 双机热备 -> 正文阅读

[系统运维]【Nginx】学习笔记 02 - Nginx + Keepalived 实现 HA(High-Availability) 双机热备

前言

对于 Nginx 高可用场景,学习到了 Nginx + Keepalived 实现 HA(High-Availability) 双机热备的相关内容,在虚拟机中完成了简单的实现以及测试,本文是对实现过程的记录。

参考目录

环境说明

  • Linux 环境(CentOS 8)虚拟机两台。
  • 主机IP:192.168.10.128,备份机IP:192.168.10.129。
  • Nginx 版本 1.17.3。

实现说明

在这里插入图片描述

  1. 有两台机器,当客户端请求访问时,访问的是由 Keepalived 配置自定义的虚拟IP(vip 192.168.10.200),而非机器真实IP。
  2. 默认情况下,vip 指向的是主机(192.168.10.128),只有当异常情况下主机服务不可用时,才会指向备用机(192.168.10.129)。
  3. 异常情况一:主机 Keepalived 不可用时,vip 会指向备用机。
  4. 异常情况二:主机 Nginx 不可用时,vip 无法自动检测到该异常,需要 Nginx 检测脚本定时检测 Nginx 情况,如果检测到 Nginx 出现异常无法启动,则会杀死 Keepalived 进程,使 vip 指向备用机。

Nginx 安装

这一步骤在此不再赘述。

为了方便查看,在 html 文件夹下的 index.html 文件加上了本机的IP,如下图:
在这里插入图片描述

Keepalived 安装

yum 安装

yum install keepalived

修改配置 keepalived.conf

配置文件位置:

/etc/keepalived/keepalived.conf

此处只保留了主要配置,其他配置可以查看参考目录自行添加。

主机配置:

! Configuration File for keepalived

# 主要是配置故障发生时的通知对象以及机器标识
global_defs {
	# 标识本节点的字条串,通常为 hostname,但不一定非得是 hostname
    router_id lb128
}

# vrrp_instance 用来定义对外提供服务的VIP区域及其相关属性; myserver 实例名称自定义
vrrp_instance myserver {
	# 初始状态,MASTER | BACKUP
	# 一旦其他机器启动,将进行选举,具有最高优先级的机器将变为MASTER。
	# 所以这里的配置并不重要。
    state MASTER
	
	# 监听的实际网口
    interface ens160
	
	# 组播ID,通过224.0.0.18可以监听到现在已经存在的VRRP ID,最好不要跟现有ID冲突
    virtual_router_id 51
	
	# 权重为100,权重数字越大就越高
	# 如果不指定 Master 或者 BACKUP,那 priority 最高的就是 Master
    priority 100
	
	# 发送组播包的间隔时间,默认为1秒
    advert_int 1
	
	# 这个是验证类型为 PASS(简单密码),密码为 1111
    authentication {
        auth_type PASS
        auth_pass 1111
    }
	
	# 虚拟IP地址
    virtual_ipaddress {
        192.168.10.200
    }
}

备份机配置:

! Configuration File for keepalived

# 主要是配置故障发生时的通知对象以及机器标识
global_defs {
	# 标识本节点的字条串,通常为 hostname,但不一定非得是 hostname
    router_id lb129
}

# vrrp_instance 用来定义对外提供服务的VIP区域及其相关属性; myserver 实例名称自定义
vrrp_instance myserver {
	# 初始状态,MASTER | BACKUP
	# 一旦其他机器启动,将进行选举,具有最高优先级的机器将变为MASTER。
	# 所以这里的配置并不重要。
    state BACKUP
	
	# 监听的实际网口
    interface ens160
	
	# 组播ID,通过224.0.0.18可以监听到现在已经存在的VRRP ID,最好不要跟现有ID冲突
    virtual_router_id 51
	
	# 权重为100,权重数字越大就越高
	# 如果不指定 Master 或者 BACKUP,那 priority 最高的就是 Master
    priority 50
	
	# 发送组播包的间隔时间,默认为1秒
    advert_int 1
	
	# 这个是验证类型为 PASS(简单密码),密码为 1111
    authentication {
        auth_type PASS
        auth_pass 1111
    }
	
	# 虚拟IP地址
    virtual_ipaddress {
        192.168.10.200
    }
}

注意事项:

  • router_id 可以自定义。
  • myserver 实例名称可以自定义。
  • interface ens160 是我本机的网卡名称,需要根据自身的情况进行修改,查看命令:ip addr
    在这里插入图片描述

启动服务

配置完成后启动服务查看状态:

# 启动
systemctl start keepalived
# 查看状态
systemctl status keepalived

主机:
在这里插入图片描述

备用机:
在这里插入图片描述

设置开机启动

chkconfig keepalived on

在这里插入图片描述

访问测试

使用虚拟IP访问,会指向主机。
在这里插入图片描述

异常情况一:Keepalived 不可用

在这里插入图片描述
主机 Keepalived 不可用时,虚拟IP会指向备用机。

关闭主机 Keepalived

systemctl stop keepalived

在这里插入图片描述
查看IP:

ip addr

在这里插入图片描述
IP没有虚拟地址只有真实地址。

访问测试:指向备用机

使用虚拟IP访问,会指向备用机。
在这里插入图片描述

查看备用机 Keepalived 状态

查看IP:

ip addr

在这里插入图片描述
IP有虚拟地址。

查看 Keepalived 状态:

systemctl status keepalived

在这里插入图片描述

重新开启主机 Keepalived

虚拟IP会重新指向主机,因为主机权重比备用机高,主机 Keepalived 重启时会重新进行选举。

异常情况二:Nginx 不可用

在这里插入图片描述
在视频里面这种情况有提及,但是没有做具体实现。

在前文说明中已经概况了这一实现的方式,所以这里不再赘述。

关闭主机 Nginx

在这里插入图片描述

访问测试:无法使用虚拟IP访问

在这里插入图片描述
Keepalived 正常,所以 vip 无法指向备用机。

Nginx 检测脚本 nginx_check.sh

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

首先查看 nginx 是否运行(ps -C nginx --no-header |wc -l),如果没有启动则执行命令启动(/usr/local/nginx/sbin/nginx),休眠 2s 再进行判断,如果还是无法启动则杀掉 keepalived 进程。

赋予脚本权限:

chmod 777 /etc/keepalived/nginx_check.sh

脚本执行:

sh /etc/keepalived/nginx_check.sh

定时执行脚本:

# 打开定时任务配置文件
crontab -e

# 在配置文件中写入定时任务的操作(每分钟执行一次,输出错误日志)
*/1 * * * * sh /etc/keepalived/nginx_check.sh 2> /usr/local/logs/keepalived/error.log

脚本启动后即可监控 Nginx 状态。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:14:48  更:2022-05-14 10:15:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:29:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码