LNMP详解(九)——Nginx虚拟IP实战

LNMP详解(九)——Nginx虚拟IP实战今天继续给大家介绍Linux运维的相关知识,本文主要内容是Nginx的虚拟IP实战。一、实战背景二、虚拟IP配置三、效果检验

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

今天继续给大家介绍Linux运维的相关知识,本文主要内容是Nginx的虚拟IP实战。

一、实战背景

LNMP详解(七)——Nginx反向代理配置实战一文中,我们实现了如下所示的架构:
在这里插入图片描述
在该架构中,Nginx作为反向代理,起到了负载均衡的作用,还可以在该架构的基础上实现动静分离。但是,该架构存在一个很明显的缺陷,即当Nginx发生故障后,整个架构就会宕掉,无法正常工作。
为了弥补这一缺陷,我们可以引入两台Nginx服务器,这两台Nginx服务器一主一备,当主Nginx服务器宕机后,备用Nginx服务器立即工作,起到了故障转移的作用。为了实现这一目的,我们不希望在Nginx主备切换时更改DNS消息或者其他设置,因此,我们可以借鉴计算机网络中VRRP的思路,使这两台Nginx服务器共享一个虚拟的IP地址,当主Nginx服务正常运行时,备Nginx时刻监听主Nginx服务器的状态;当主Nginx服务宕机后,备Nginx会新创建一个虚拟网卡,监听该虚拟IP地址。这样,就实现了两台Nginx服务器的故障转移了。

二、虚拟IP配置

接下来,我们进行Nginx的虚拟IP配置实战,实战架构如下:
设备1IP:192.168.136.101
设备2IP:192.168.136.102
虚拟IP:192.168.136.200
为了实现Nginx虚拟IP的设置,我们需要在每个Nginx设备上运行脚本,脚本思路如下:首先,检测自身是否开启Nginx服务,当自身没有开启Nginx服务时,就必须关闭虚拟IP所对应的网卡。当自身开启Nginx服务时,就要检测虚拟IP地址是否存在,如果存在,则说明另一台设备上已经运行了虚拟IP地址,那么我们就不能启动该虚拟IP对应的网卡,以防网卡冲突,如果虚拟IP地址不存在,就说明另一台设备上没有运行虚拟IP地址对应的网卡,那么我们自身就可以创建并启动虚拟IP网卡,监听虚拟IP地址,提供Nginx服务。
Nginx虚拟网卡对应的脚本(包含详细解释)如下所示:

#!/bin/bash
# 2022-02-17
# writed by pzz
# Used to realize the failover of nginx

NGINX_NUM=`ps -ef | grep nginx | wc -l`
# ps -ef | grep nginx表示抓取当前系统中的所有进程,并选取包含Nginx字符的进程,wc -l 表示统计行数
# NGINX_NUM变量保存了上述执行的结果,用于下面的if判断语句,采用这种方式来判断自身的Nginx服务是否开启
if [$NGINX_NUM -eq 3];then
# 判断自身Nginx服务是否开启,if表达式表示Nginx服务没有开启,之所以该值不等于1,是因为grep自身的进程和本进行会也会被抓取,这会影响抓取结果
        ifdown ens32-virtual > /dev/null 2>&1
# 当Ngixn服务没有开启,自身需要关闭虚拟IP对应的网卡,后面的标识无论是否执行正确,结果都不会显示在桌面上。
        rm -rf /etc/sysconfig/network-scripts/ifcfg-ens32-virtual
# 表示删除虚拟网卡文件
else
# 表示当自身的Nginx服务开启后
        ping -c 1 192.168.136.200 > /dev/null 2>&1
# 表示检测虚拟IP地址是否存在
        if [$? -ne 0];then
# 如果虚拟IP地址不存在,那么上一条命令会执行失败,那么结果也就不会为0,就会进入这个if语句
                cat >/etc/sysconfig/network-scripts/ifcfg-ens32-virtual <<EOF TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens32-virtual ONBOOT=no IPADDR=192.168.136.200 NETMASK=255.255.255.0 GATEWAY=192.168.136.254 DNS1=114.114.114.114 EOF
# 以上命令表示把EOF之中的内容写成ifcfg-ens32-virtual文件中,放在/etc/sysconfig/network-scripts/目录下
                ifup ens32-virtual > /dev/null 2>&1
# 以上命令表示开启虚拟IP对应的网卡
        fi
fi

上述脚本完成后,我们需要将该脚本写成定时任务,间隔执行,进行检测,如下:

while sleep 5; do bash /root/nginx_vip.sh ; done &

执行该命令后,我们的Nginx虚拟IP实战就配置完成了。

三、效果检验

最后,让我们进行结果检验。在两个设备上,都开启Nginx服务,并且都运行上述检测脚本。从另一台设备上不断访问虚拟IP地址,这时关闭其中一台设备的Nginx服务,观察现象如下所示:
在这里插入图片描述
可以看出,该虚拟IP地址在短暂的终端后,恢复正常响应,这就说明了我们在断开Nginx服务的时候,该设备上的后台脚本启动,关闭了自身的网卡,同时,另一台设备开启了自身的虚拟IP网卡,这就解释了为什么会失去响应后立即恢复的现象。
当我们访问该虚拟IP地址网页时,发现一切正常,如下所示:
在这里插入图片描述
综上,我们的Nginx虚拟IP实战配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183430.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 研究生新生大数据!一大波00后“涌入”同济,最小博士生20岁

    研究生新生大数据!一大波00后“涌入”同济,最小博士生20岁再过几天,2019级新同济人就要来报到啦,想必大家都很好奇,今年的萌新们都是啥情况?多少人?男女比?有没有跟自己同年同月同日生的有缘人?哪些星座很强势?来吧,研究生新生大…

  • ER图(实体-联系图)「建议收藏」

    ER图(实体-联系图)「建议收藏」概念E-R图也称实体-联系图(EntityRelationshipDiagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成ER图有实体(entity)、属性(attribute)、关系(relationship)三部分。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆框”表示实体的属性,将属性名记入框中;用”菱形框“表示实体型之间的关系,在菱形…

  • JMM模型_kmv模型

    JMM模型_kmv模型1.JMM介绍: javamemorymodel,java内存模型2.JMM内存模型的组成:主内存(共享内存):*heap堆:存放所有对象的实例;堆不存放对象引用和基本数据类型,只存放对象实例本身*methodarea方法区(也叫静态区):方法区存放Class类对象以及一些static,final变量;方法区的数据都是唯一的,常量池也在方法区中工作内存(线程私有内存,每个…

  • 典型的电容有_电容的容量

    典型的电容有_电容的容量【硬见小百科】二十种电容分类详解!一、瓷介电容器(CC)【硬见小百科】二十种电容分类详解!1.结构用陶瓷材料作介质,在陶瓷表面涂覆一层金属(银)薄膜,再经高温烧结后作为电极而成。瓷介电容器又分1类电介质(NPO、CCG);2类电介质(X7R、2X1)和3类电介质(Y5V、2F4)瓷介电容器。2.特点1类瓷介电容器具有温度系数小、稳定性高、损耗低、耐压高等优点。最大容量不超过1…

  • 三大战略分析方法——SWOT、PEST、波特五力模型

    三大战略分析方法——SWOT、PEST、波特五力模型目录1.SWOT分析模型「SWOT分析模型简介」「SWOT模型含义介绍」「SWOT分析步骤」2.PEST分析模型PEST分析的内容3.波特五力模型[定义][五力模型]1.SWOT分析模型「SWOT分析模型简介」(也称TOWS分析法、道斯矩阵)。在现在的战略规划报告里,SWOT分析应该算是一个众所周知的工具。来自于麦肯锡咨询公司的SWOT…

  • .NET(C#):ToString(CultureInfo.InvariantCulture)

    .NET(C#):ToString(CultureInfo.InvariantCulture).NET(C#):CultureInfo中重要的InvariantCulture目录CultureInfo简述通过示例了解InvariantCultureInvariantCulture和字符串比较总结 返回目录CultureInfo简述CultureInfo类位于System.Globalization命名空间内,这个类和这个命名空间许多人都不

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号