5.Nginx高可用解决方案LVS+KeepAlived

玩转Nginx分布式架构:
1.学习Nginx 详细介绍(负载均衡、全局异常、跨域、封禁IP、路径匹配、地址重定向、Websocket反向代理、缓存、压缩)
2.使用Nginx配置域名
3.使用Nginx配置HTTPS传输协议
4.Nginx整合OpenResty+Lua (黑名单控制、内网访问限制、资源下载限速、日志分析、漏桶原理、令牌桶原理)
5.Nginx高可用解决方案LVS+KeepAlived
6.Nginx高可用后配置HTTPS传输协议

Nginx高可用解决方案LVS+KeepAlived

一、全链路高可用之Nginx基础架构问题分析

1、讲解Nginx单点问题剖析

在这里插入图片描述
故障分析:DNS轮询多个IP,假如Nginx挂了,就会导致所有请求都会报错。

DNS(Domain Name System)是一种用于将域名解析为IP地址的系统。当客户端发送请求时,Nginx会根据配置的代理规则将请求转发到指定的后端服务器。在这个过程中,Nginx需要将目标服务器的域名解析为对应的IP地址,以便正确地转发请求。

2、Nginx集群架构(VIP)

在这里插入图片描述LVS:LVS是一个基于Linux内核的负载均衡器,它可以将来自客户端的请求分发到后端的多个真实服务器。LVS提供了多种负载均衡算法,如轮询、加权轮询、最少连接等。

KeepAlived:keepalived是一个开源工具,用于实现虚拟IP和故障转移。它可以监控服务器的状态,并在主服务器发生故障时自动将虚拟IP迁移到备份服务器上,以确保服务的连续性。

结合LVS和keepalived,可以实现以下虚拟IP的工作原理:

  1. 配置虚拟IP:在LVS负载均衡器和备份服务器上,通过keepalived配置虚拟IP。这个虚拟IP将作为负载均衡器的入口地址。
  2. 监控服务器状态:keepalived会定期检测主服务器的状态。如果主服务器正常运行,keepalived将保持虚拟IP绑定到主服务器上。
  3. 故障转移:如果主服务器发生故障或不可用,keepalived会自动检测到,并将虚拟IP迁移到备份服务器上。这样,备份服务器将接管负载均衡器的角色,并继续处理客户端的请求。
  4. 负载均衡:LVS负载均衡器接收来自客户端的请求,并根据预定义的负载均衡算法将请求转发到后端的真实服务器。这些真实服务器可以是多个应用服务器,用于处理客户端请求。

通过使用LVS和keepalived,虚拟IP可以实现高可用性和负载均衡。当主服务器发生故障时,keepalived会自动将虚拟IP迁移到备份服务器上,确保服务的连续性。同时,LVS负责将请求转发到后端的真实服务器,以实现负载均衡和提高系统的性能。这种结合可以提供可靠的服务,并确保在故障发生时能够快速切换到备份服务器。

3、Nginx高可用解决方案(基础)

国际标准化组织(ISO)制定的⼀个⽤于计算机或通信系统间互联的标准体系。

从低到⾼分别是:物理层、数据链路层、⽹络层、传输层、会话层、表示层和应⽤层

**四层⼯作在OSI,**第四层 也就是传输层。**七层⼯作在最⾼层,**也就是应⽤层。

F5、LVS(四层负载 tcp

⽤虚拟ip+port接收请求,再转发到对应的真实机器。

HAproxy、Nginx(七层负载)

⽤虚拟的url或主机名接收请求,再转向相应的处理服务器。

二、业界主流的高可用方案LVS讲解

什么是LVS:

官网:http://www.linuxvirtualserver.org/

LVS是Linux Virtual Server,Linux虚拟服务器,是⼀个虚拟的服务器集群系统。

项⽬是由章⽂嵩博⼠成⽴,是中国国内最早出现的⾃由软件项⽬之⼀。

Linux2.4 内核以后,LVS 已经是 Linux 标准内核的⼀部分软件负载解决的两个核⼼问题是:选谁、转发

在这里插入图片描述
提供了10多重调度算法:轮询、加权轮询、最小链接、目的地址散列、源地址散列等。

三种负载均衡转发技术:

NAT:数据进出都通过 LVS, 前端的Master既要处理客户端发起的请求,⼜要处理后台RealServer的响应信息,将RealServer响应的信息再转发给客户端, 容易成为整个集群系统性能的瓶颈; (⽀持任意系统且可以实现端⼝映射)

DR: 移花接⽊,最⾼效的负载均衡规则,前端的Master只处理客户端的请求,将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Master, 性能要优于LVS-NAT; 需要LVS和RS集群绑定同⼀个VIP(⽀持多数系统,不可以实现端⼝映射)

TUNL:隧道技术,前端的Master只处理客户端的请求,将请求转发给RealServer,然后由后台的RealServer直接响应客户端,不再经过Master;(⽀持少数系统,不可以实现端⼝映射))

三、业界主流的高可用方案keepalived讲解

1、什么是KeepAlived

核心:监控并管理 LVS 集群系统中各个服务节点的状态

keepalived是⼀个类似于交换机制的软件,核⼼作⽤是检测服务器的状态,如果有⼀台web服务器⼯作出现故障,Keepalived将检测到并将有故障的服务器从系统中剔除,使⽤其他服务器代替该服务器的⼯作,当服务器⼯作正常后Keepalived⾃动将服务器加⼊到服务器群中,这些⼯作全部⾃动完成。

后来加⼊了vrrp(虚拟路由器冗余协议),除了为lvs提供⾼可⽤还可以为其他服务器⽐如Mysql、Haproxy等软件提供⾼可⽤⽅案

安装
yum install -y keepalived

# 路径
cd /etc/keepalived
启动和查看命令
# 启动
service keepalived start
# 停⽌
service keepalived stop
# 查看状态
service keepalived status
# 重启
service keepalived restart
# 停⽌防⽕墙
systemctl stop firewalld.service
依赖

注意: 如果有缺少依赖可以执⾏下⾯的命令

yum install -y gcc
yum install -y openssl-devel
yum install -y libnl libnl-devel
yum install -y libnfnetlink-devel
yum install -y net-tools
yum install -y vim wget

在这里插入图片描述

四、Keepalived核心配置讲解

# 目录
/etc/keepalived/keepalived.conf

! Configuration File for keepalived
# 全局定义部分,包含一些全局配置参数,如邮件通知地址、SMTP服务器等。
global_defs {
	 # 指定了需要接收通知的邮件地址列表
   notification_email {
     # 通知将发送到acassen@firewall.loc、failover@firewall.loc和sysadmin@firewall.loc这三个地址。
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   # 指定了发送通知的邮件地址。在这个示例中,通知将使用Alexandre.Cassen@firewall.loc作为发件人地址。
   notification_email_from Alexandre.Cassen@firewall.loc
   # 指定了SMTP服务器的IP地址或主机名。在这个示例中,SMTP服务器的地址是192.168.200.1。
   smtp_server 192.168.200.1
   # 指定了与SMTP服务器建立连接的超时时间,单位是秒。在这个示例中,超时时间是30秒。
   smtp_connect_timeout 30
   # 指定了路由器的ID。在这个示例中,路由器的ID是LVS_DEVEL。
   router_id LVS_DEVEL
   # 设置为跳过检查广告地址。这个配置项告诉keepalived在检查广告地址时跳过一些检查。
   vrrp_skip_check_adv_addr
   # 设置为严格模式。这个配置项告诉keepalived在处理VRRP(虚拟路由冗余协议)时使用严格模式。
   vrrp_strict
   # 指定了GARP(Gratuitous ARP)间隔时间,单位是秒。在这个示例中,GARP间隔时间是0秒,表示禁用GARP。
   vrrp_garp_interval 0
   # 指定了GNA(Gratuitous Neighbor Advertisement)间隔时间,单位是秒。在这个示例中,GNA间隔时间是0秒,表示禁用GNA。
   vrrp_gna_interval 0
}
# 这部分配置是用于定义一个VRRP实例(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)。
# 定义了一个名为VI_1的VRRP实例。
vrrp_instance VI_1 {
		# 指定了该VRRP实例的状态为MASTER,表示该实例将作为主节点。
    state MASTER
    # 指定了该VRRP实例使用的网络接口为eth0。
    interface eth0
    # 指定了该VRRP实例的虚拟路由器ID为51。这个ID用于区分不同的VRRP实例。
    virtual_router_id 51
    # 指定了该VRRP实例的优先级为100。在同一个VRRP组中,优先级高的节点将成为主节点。
    priority 100
    # 指定了该VRRP实例的广告间隔时间,单位是秒。在这个示例中,广告间隔时间为1秒,表示每秒发送一次VRRP广告。
    advert_int 1
    # 指定了VRRP实例的身份验证配置。
    authentication {
    		# 指定了身份验证类型为PASS,表示使用密码进行身份验证。
        auth_type PASS
        # 指定了身份验证密码为1111。
        auth_pass 1111
    }
    # 指定了该VRRP实例的虚拟IP地址列表。在这个示例中,该VRRP实例将使用三个虚拟IP地址:192.168.200.16、192.168.200.17和192.168.200.18。
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}
# 这部分配置是用于定义一个虚拟服务器(virtual server)和一个真实服务器(real server)。
# 定义了一个虚拟服务器,该服务器监听IP地址为192.168.200.100,端口为443。
virtual_server 192.168.200.100 443 {
		# 指定了在轮询算法中的延迟循环次数。在这个示例中,延迟循环次数为6。
    delay_loop 6
    # 指定了负载均衡算法为轮询(round-robin)。这意味着请求将按照顺序依次分发给真实服务器。
    lb_algo rr
    # 指定了负载均衡的类型为NAT(Network Address Translation)。这表示虚拟服务器将使用NAT技术将请求转发给真实服务器。
    lb_kind NAT
    # 指定了持久化超时时间,单位是秒。在这个示例中,持久化超时时间为50秒,表示在此时间内,客户端的请求将被发送到同一个真实服务器。
    persistence_timeout 50
    # 指定了虚拟服务器使用的协议为TCP。
    protocol TCP
		
		# 定义了一个真实服务器,该服务器的IP地址为192.168.201.100,端口为443。
    real_server 192.168.201.100 443 {
    	  # 指定了真实服务器的权重为1。在负载均衡中,权重用于决定请求被分发给各个真实服务器的比例。
        weight 1
        # 指定了在进行SSL握手之前发送的GET请求的配置。
        SSL_GET {
            # 指定了GET请求的URL路径和摘要。
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            # 指定了连接超时时间,单位是秒。在这个示例中,连接超时时间为3秒。
            connect_timeout 3
            # 指定了在连接失败后重试的次数。在这个示例中,重试次数为3次
            nb_get_retry 3
            # 指定了在重试之前的延迟时间,单位是秒。在这个示例中,延迟时间为3秒。
            delay_before_retry 3
        }
    }
}

# 这段代码是一个负载均衡配置的示例,用于将来自虚拟服务器(10.10.10.2:1358)的请求转发到两个真实服务器(192.168.200.2:1358和192.168.200.3:1358)。
virtual_server 10.10.10.2 1358 {
		# 设置延迟循环的时间为6秒。这是指在负载均衡算法中,每个请求到达后等待的时间,以便在真实服务器之间进行均衡分发。
    delay_loop 6
    # 设置负载均衡算法为轮询(Round Robin),即按照顺序将请求分发给每个真实服务器。
    lb_algo rr
    # 设置负载均衡的类型为NAT(Network Address Translation),即通过修改请求和响应的IP地址和端口来实现负载均衡。
    lb_kind NAT
    # 设置持久化超时时间为50秒。这是指在持久化会话中,如果在指定时间内没有新的请求到达,则会话将被终止。
    persistence_timeout 50
    # 设置协议为TCP,表示负载均衡器将使用TCP协议来转发请求。
    protocol TCP

		# 设置一个备用服务器(sorry server),当所有真实服务器都不可用时,请求将被转发到该服务器。
    sorry_server 192.168.200.200 1358

		# 定义第一个真实服务器的配置。
    real_server 192.168.200.2 1358 {
        # 设置权重为1,表示在负载均衡中,该服务器将获得相等的请求分发比例。
        weight 1
        # 指定使用HTTP GET方法来检查真实服务器的可用性。
        HTTP_GET {
            # 定义了三个URL路径和对应的摘要
            url { 
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url { 
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url { 
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            # 设置连接超时时间为3秒,即在3秒内如果无法建立连接,则认为该服务器不可用。
            connect_timeout 3
            # 设置在连接失败后的重试次数为3次。
            nb_get_retry 3
            # 设置在重试之前的延迟时间为3秒。
            delay_before_retry 3
        }
    }
		# 定义第二个真实服务器的配置,与第一个真实服务器(192.168.200.2 1358)的配置类似。
    real_server 192.168.200.3 1358 {
        weight 1
        HTTP_GET {
            url { 
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            url { 
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

# 这段代码是一个负载均衡配置的示例,用于将来自虚拟服务器(10.10.10.3:1358)的请求转发到两个真实服务器(192.168.200.4:1358和192.168.200.5:1358)。
virtual_server 10.10.10.3 1358 {
    # 设置延迟循环的时间为3秒。这是指在负载均衡算法中,每个请求到达后等待的时间,以便在真实服务器之间进行均衡分发。
    delay_loop 6
    # 设置负载均衡算法为轮询(Round Robin),即按照顺序将请求分发给每个真实服务器。
    lb_algo rr
    # 设置负载均衡的类型为NAT(Network Address Translation),即通过修改请求和响应的IP地址和端口来实现负载均衡。
    lb_kind NAT
    # 设置持久化超时时间为50秒。这是指在持久化会话中,如果在指定时间内没有新的请求到达,则会话将被终止。
    persistence_timeout 50
    # 设置协议为TCP,表示负载均衡器将使用TCP协议来转发请求。
    protocol TCP
		
		# 定义第一个真实服务器的配置
    real_server 192.168.200.4 1358 {
    		# 设置权重为1,表示在负载均衡中,该服务器将获得相等的请求分发比例。
        weight 1
        # 指定使用HTTP GET方法来检查真实服务器的可用性。
        HTTP_GET {
        		# 定义了三个URL路径和对应的摘要
            url { 
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url { 
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url { 
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            # 设置连接超时时间为3秒,即在3秒内如果无法建立连接,则认为该服务器不可用。
            connect_timeout 3
            # 设置在连接失败后的重试次数为3次。
            nb_get_retry 3
            # 设置在重试之前的延迟时间为3秒。
            delay_before_retry 3
        }
    }
    
		# 定义第二个真实服务器的配置,与第一个真实服务器(192.168.200.4 1358)的配置类似。
    real_server 192.168.200.5 1358 {
        weight 1
        HTTP_GET {
            url { 
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url { 
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url { 
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

注:这个是keepalived提供的示例代码,可根据实际情况进行调整。有些配置也可以忽略。

五、HaVip结合keepalived实现主备双机高可用

参考文档:https://help.aliyun.com/zh/vpc/user-guide/implement-high-availability-by-using-havips-and-keepalived?spm=a2c4g.11186623.0.0.735110dfV4vIPc

1、Nginx高可用方案相关环境准备

高可用虚拟IP

在这里插入图片描述

弹性公网IP

在这里插入图片描述

云服务器ECS

在这里插入图片描述

清单公网IP内网IP
ECS云服务器1101.200.136.123172.29.253.166
ECS云服务器259.110.68.26172.29.253.164
HaVIP(高可用虚拟IP)172.29.253.165
EIP(弹性公网IP)47.93.61.143

注:
1.高可用虚拟IP需要申请

2.两个云服务内网IP一定要是同一个网段,我的是172.16.0.0/12网段
在这里插入图片描述

2、云服务环境搭建:

# OpenResty安装 官网:https://openresty.org/en/linux-packages.html#centos
# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
# update the yum index:
sudo yum check-update
sudo yum install openresty
# 安装命令⾏⼯具
sudo yum install openresty-resty
# 列出所有 openresty 仓库⾥的软件包
sudo yum --disablerepo="*" --enablerepo="openresty" list available
#查看版本
openresty -v
# 启动Nginx
cd /usr/local/openresty/nginx/sbin/
./nginx
# 访问是否成功
http://101.200.136.123/

# keepalived 安装
yum install -y keepalived
# 路径
cd /etc/keepalived
# 启动
service keepalived start
# 停⽌
service keepalived stop
# 查看状态
service keepalived status
# 重启
service keepalived restart

3、修改keepalive配置文件

主(Master)配置:
! Configuration File for keepalived

global_defs {
   # 设置lvs的id,在一个网络内应该是唯一的
   router_id LVS_DEVEL
   #允许执行外部脚本
   enable_script_security
}

# 配置vrrp_script,用于定义一个VRRP(Virtual Router Redundancy Protocol)脚本,用于检查真实服务器的可用性。主要用于健康检查及检查失败后执行的动作。
vrrp_script chk_real_server {
    # 健康检查脚本,当脚本返回值不为0时认为失败
    script "/etc/keepalived/conf/chk_server.sh"
    # 检查频率,以下配置每2秒检查1次
    interval 2
    # 当检查失败后,将 vrrp_instance 的 priority 减小5
    weight -5
    # 连续监测失败3次,才认为真的健康检查失败。并调整优先级
    fall 3
    # 连续监测2次成功,就认为成功。但不调整优先级
    rise 2
    # 脚本将以root用户的身份运行
    user root
}

# 配置对外提供服务的VIP(虚拟IP) vrrp_instance配置
vrrp_instance VI_1 {
    # 指定vrrp_instance的状态,是MASTER还是BACKUP主要还是看优先级。
    state MASTER
    # 指定vrrp_instance绑定的网卡,最终通过指定的网卡绑定VIP。(查看CentOS系统网卡命令:ip addr show)
    interface eth0
    #相当于 VRID,用于在一个网内区分组播,需要组播域内内唯一。
    virtual_router_id 51
    #本机的优先级,VRID相同的机器中,优先级最高的会被选举为MASTER
    priority 100
    #心跳间隔检查,默认为1s,MASTER会每隔1秒发送一个报文告知组内其他机器自己还活着。
    advert_int 1
    # 指定了VRRP实例的身份验证配置。
    authentication {
    		# 指定了身份验证类型为PASS,表示使用密码进行身份验证。
        auth_type PASS
        # 指定了身份验证密码为1111。
        auth_pass 1111
    }

    unicast_src_ip 172.29.253.164   #设置ECS实例的私网IP地址,本示例配置为192.168.0.209
    unicast_peer {
        172.29.253.166          #对端ECS实例的私网IP地址,本示例配置为192.168.0.210
    }
    
    # 定义虚拟IP(VIP)为123.57.36.233,可多设,每行一个
    virtual_ipaddress {
        172.29.253.165
    }

    # 本vrrp_instance所引用的脚本配置,名称就是vrrp_script 定义的容器名
    track_script {
        chk_real_server
    }
}

chk_server.sh
注:如果Nginx挂调了,则需要终止掉keepalived进程,这才才能实现IP漂移技术

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" -eq "0" ]; then
    service keepalived stop
    echo 'nginx server is died.......'
fi

配置完成后重启:

# 重启
service keepalived restart
# 查看状态
service keepalived status
# 如果查看状态时发现 日志报 WARNING - script '/etc/keepalived/conf/chk_server.sh' is not executable for uid:gid 0:0 - disabling. 脚本文件的权限设置不正确,导致无法被执行。UID和GID为0:0表示该文件的所有者和所属组为root用户和root组。
# 确保脚本文件的权限正确设置为可执行。你可以使用以下命令更改文件权限:
sudo chmod +x /etc/keepalived/conf/chk_server.sh # 执行完后需要重启

在这里插入图片描述

备(Backup)配置:

跟Master几乎一样,只改VI_1.state、VI_1.priority、unicast_src_ip、unicast_peer这四处就行。

! Configuration File for keepalived

global_defs {
   # 设置lvs的id,在一个网络内应该是唯一的
   router_id LVS_DEVEL
   #允许执行外部脚本
   enable_script_security
}

# 配置vrrp_script,用于定义一个VRRP(Virtual Router Redundancy Protocol)脚本,用于检查真实服务器的可用性。主要用于健康检查及检查失败后执行的动作。
vrrp_script chk_real_server {
    # 健康检查脚本,当脚本返回值不为0时认为失败
    script "/etc/keepalived/conf/chk_server.sh"
    # 检查频率,以下配置每2秒检查1次
    interval 2
    # 当检查失败后,将 vrrp_instance 的 priority 减小5
    weight -5
    # 连续监测失败3次,才认为真的健康检查失败。并调整优先级
    fall 3
    # 连续监测2次成功,就认为成功。但不调整优先级
    rise 2
    # 脚本将以root用户的身份运行
    user root
}

# 配置对外提供服务的VIP(虚拟IP) vrrp_instance配置
vrrp_instance VI_1 {
    # 指定vrrp_instance的状态,是MASTER还是BACKUP主要还是看优先级。
    state BACKUP
    # 指定vrrp_instance绑定的网卡,最终通过指定的网卡绑定VIP。(查看CentOS系统网卡命令:ip addr show)
    interface eth0
    #相当于 VRID,用于在一个网内区分组播,需要组播域内内唯一。
    virtual_router_id 51
    #本机的优先级,VRID相同的机器中,优先级最高的会被选举为MASTER
    priority 10
    #心跳间隔检查,默认为1s,MASTER会每隔1秒发送一个报文告知组内其他机器自己还活着。
    advert_int 1
    # 指定了VRRP实例的身份验证配置。
    authentication {
    		# 指定了身份验证类型为PASS,表示使用密码进行身份验证。
        auth_type PASS
        # 指定了身份验证密码为1111。
        auth_pass 1111
    }

    unicast_src_ip 172.29.253.166   #设置ECS实例的私网IP地址,本示例配置为192.168.0.209
    unicast_peer {
        172.29.253.164          #对端ECS实例的私网IP地址,本示例配置为192.168.0.210
    }
    
    # 定义虚拟IP(VIP)为123.57.36.233,可多设,每行一个
    virtual_ipaddress {
        172.29.253.165
    }

    # 本vrrp_instance所引用的脚本配置,名称就是vrrp_script 定义的容器名
    track_script {
        chk_real_server
    }
}

chk_server.sh

注:如果Nginx挂调了,则需要终止掉keepalived进程,这才才能实现IP漂移技术

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" -eq "0" ]; then
    service keepalived stop
    echo 'nginx server is died.......'
fi

配置完成后重启:

# 重启
service keepalived restart
# 查看状态
service keepalived status
# 如果查看状态时发现 日志报 WARNING - script '/etc/keepalived/conf/chk_server.sh' is not executable for uid:gid 0:0 - disabling. 脚本文件的权限设置不正确,导致无法被执行。UID和GID为0:0表示该文件的所有者和所属组为root用户和root组。
# 确保脚本文件的权限正确设置为可执行。你可以使用以下命令更改文件权限:
sudo chmod +x /etc/keepalived/conf/chk_server.sh # 执行完后需要重启

在这里插入图片描述

检测配置是否成功

在这里插入图片描述

4、绑定资源

在这里插入图片描述

请求弹性公网IP(EIP)

访问:http://47.93.61.143/
在这里插入图片描述

5、测试

我停止http://59.110.68.26/ 下的Nginx进程,再次访问http://47.93.61.143/
在这里插入图片描述
如果页面提示Welcome to OpenResty! Backup 2 这表示配置成功!
在这里插入图片描述
事实证明,没这么简单。访问失败了。。。

# 一步一步排查
# 首选确保脚本文件的权限正确设置为可执行。
cd /etc/keepalived/conf
ll
-rwxr-xr-x 1 root root 188 730 00:38 chk_server.sh
# 如果不是 rw-r--r--x root 需要执行这个命令
sudo chmod +x /etc/keepalived/conf/chk_server.sh

# 其次 查看 getenforce 如果是 Disabled 需要执行 getenforce 0
getenforce # 查看
setenforce 0 # 关闭

# 如果还没解决,大概率是脚本问题 尝试执行下.sh脚本,看下报什么错
./chk_server.sh

这些问题都解决后,再次访问http://47.93.61.143/
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值