haproxy实现7层的负载均衡[haproxy+pacemaker+fencing]

1、环境配置

## server1 server4 关掉keepalived服务
[root@server4 keepalived]# systemctl stop keepalived
[root@server1 keepalived]# systemctl stop keepalived

## 删除虚拟vip 刷新arptables策略 打开apache服务
[root@server2 ~]# arptables -F
[root@server2 ~]# ip addr del 192.168.0.101/32 dev eth0
[root@server2 ~]# systemctl start httpd

[root@server3 ~]# arptables -F
[root@server3 ~]# ip addr del 172.25.15.100/32 dev eth0
[root@server3 ~]# systemctl start httpd

2、haproxy的配置及实验效果

2.1 安装及测试

4层负责数据转发,7层负责策略文件

在这里插入图片描述

## 安装haproxy 编辑配置文件
[root@server1 keepalived]# yum install haproxy -y
[root@server1 keepalived]# cd /etc/haproxy/
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# systemctl stop httpd
[root@server1 haproxy]# systemctl start haproxy
[root@server1 haproxy]# netstat -antlp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14757/haproxy   
[root@foundation images]# curl 192.168.0.1
server3
[root@foundation images]# curl 192.168.0.1
server2
[root@foundation Desktop]# for i in {1..6};do curl 192.168.0.1;done

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
两个app 分别是server2 server3
在这里插入图片描述

2.2 设置日至信息的存放
[root@server1 haproxy]# vim /etc/rsyslog.conf 
[root@server1 haproxy]# systemctl restart rsyslog
[root@server1 haproxy]# systemctl start haproxy.service 
[root@server1 haproxy]# cat /var/log/haproxy.log 
[root@foundation Desktop]# curl 192.168.0.1
server2
[root@foundation Desktop]# curl 192.168.0.1
server3
[root@foundation Desktop]# curl 192.168.0.1
server2
[root@foundation Desktop]# curl 192.168.0.1
server3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 设置访问密码
[root@server1 log]# cd /etc/haproxy/
[root@server1 haproxy]# vim haproxy.cfg 
        stats auth admin:westos
[root@server1 haproxy]# systemctl reload haproxy.service 

在这里插入图片描述
在这里插入图片描述

2.4 source模式
- 介绍
	- 	源地址散列调度(Source Hashing Scheduling)算法正好与目标地址
	- 散列调度算法相反,它根据请求的源 IP 地址,作为散列键(Hash Key)从静
	- 态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送
	- 到该服务器,否则返回空。
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# systemctl reload haproxy.service 

client --> cdn --> haproxy --> server
cdn 是反向的负载均衡,客户端将cdn当成服务器端,cdn从server上获取数据;如果用source模式,不同的客户端经过cdn后,cdn以反向代理的机制访问到haproxy,haproxy能够拿到的地址就是cdn的地址;所有的客户端经过cdn后,cdn的工作方式是反向代理,cdn会帮客户端到后端去取,访问后端的是cdn,haproxy只能知道cdn的地址,一旦用了cdn后,客户端地址就变为cdn地址。
在这里插入图片描述
source 相当于ip hash,根据源地址进行判断,源地址一样的时候,后端服务器调度不变。haproxy调度算法没有lvs多。
在这里插入图片描述

2.5 default_backend和use_backend的使用
- 配置文件解释
-	 
	default_backend <backend>
	use_backend <static>
	  在没有匹配的”use_backend”规则时为实例指定使用的默认后端,因此,
	其不可应用于backend区段。在”frontend”和”backend”之间进行内容交换时,
	通常使用”use-backend”定义其匹配规则;而没有被规则匹配到的请求将由此
	参数指定的后端接收。
[root@server1 haproxy]# vim haproxy.cfg 
65 frontend  main *:80   ##定义acl访问控制列表 定义url路径
    acl url_static       path_beg  ##开启     -i /static /images /javascript /stylesheets
    acl url_static       path_end   ##结束    -i .jpg .gif .png .css .js
 ##判断定位到哪个后端
    use_backend static          if url_static   ##静态执行
    default_backend             app       ##默认访问app   app1 192.168.0.2

backend static
    balance     roundrobin
    server      static 192.168.0.2:80 check

backend app
    balance     roundrobin
    server  app1 192.168.0.3:80 check
[root@server1 haproxy]# systemctl reload haproxy.service 

[root@foundation Desktop]# curl 192.168.0.1
server3
[root@foundation Desktop]# curl 192.168.0.1
server3
[root@foundation Desktop]# curl 192.168.0.1
server3

[root@server2 html]# ls
index.html  vim.jpg
[root@server2 html]# mkdir images
[root@server2 html]# mv vim.jpg images/
[root@server2 images]# ls
vim.jpg

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
default_backend app 默认
在这里插入图片描述

自动定位到server2
在这里插入图片描述
默认访问的是server3 app后端

在这里插入图片描述

2.6 backup
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# systemctl reload haproxy.service 

[root@server1 haproxy]# vim /etc/httpd/conf/httpd.conf 
Listen 8080
[root@server1 haproxy]# systemctl start httpd
[root@server1 haproxy]# vim /var/www/html/index.html
server1 please try again later

[root@server3 haproxy]# systemctl stop httpd
[root@server3 haproxy]# systemctl start httpd

在这里插入图片描述
正常的时候不访问backup
在这里插入图片描述

在这里插入图片描述
server3 后端关闭
在这里插入图片描述

2.7 设置黑名单及自动跳转网址
[root@server1 haproxy]# vim haproxy.cfg 
 69         acl blacklist src 192.168.0.100          ##设置黑名单,屏蔽192.168.0.100
        tcp-request content reject if blacklist  
[root@server1 haproxy]# systemctl reload haproxy.service 
[root@foundation ~]# curl 192.168.0.1
curl: (52) Empty reply from server
[root@server4 ~]# curl 192.168.0.1
server3


[root@server1 haproxy]# vim haproxy.cfg 
 69         acl blacklist src 192.168.0.100

        tcp-request content accept if blacklist
        tcp-request content reject
[root@server1 haproxy]# systemctl reload haproxy.service 
[root@foundation ~]# curl 192.168.0.1
server3
[root@server4 ~]# curl 192.168.0.1
curl: (52) Empty reply from server

[root@server1 haproxy]# vim haproxy.cfg 
 69         acl blacklist src 192.168.0.100
 74         block if blacklist            ##直接屏蔽,禁用blacklist,发生403错误
[root@server1 haproxy]# systemctl reload haproxy.service 
[root@foundation ~]# curl 192.168.0.1 -I
HTTP/1.0 403 Forbidden
Cache-Control: no-cache
Connection: close
Content-Type: text/html


[root@server1 haproxy]# vim haproxy.cfg 
 75         errorloc 403 http://www.baidu.com   ##发生403错误 重定向到百度
[root@server1 haproxy]# systemctl reload haproxy.service 
[root@foundation ~]# curl 192.168.0.1 -I
HTTP/1.1 302 Found
Cache-Control: no-cache
Content-length: 0
Location: http://www.baidu.com

浏览器访问192.168.0.1 自动重定向到百度。
在这里插入图片描述
在这里插入图片描述

2.8 redirect location默认访问地址

直接进行重定向

[root@server1 haproxy]# vim haproxy.cfg 
        redirect location http://www.toabao.com if blacklist
[root@server1 haproxy]# systemctl reload haproxy.service 
[root@foundation ~]# curl 192.168.0.1 -I
HTTP/1.1 302 Found
Cache-Control: no-cache
Content-length: 0
Location: http://www.toabao.com
Connection: close
[root@server4 ~]# curl 192.168.0.1
server3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.9 访问控制
[root@server1 haproxy]# vim haproxy.cfg 
        acl denyjpg path /images/vim.jpg
        http-request deny if denyjpg blacklist
[root@server1 haproxy]# systemctl reload haproxy.service 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
server4 成功获取
在这里插入图片描述

2.10 acl write method POST | PUT
- (读的时候是默认的app,在server2上,写的时候的在server3上,
- 数据存储在server3上,server2和server3上需要同样的文件,实现读写分离)
[root@server1 haproxy]# vim haproxy.cfg 
        acl write method PUT
        acl write method POST

    use_backend static          if url_static write
[root@server1 haproxy]# systemctl reload haproxy.service 

在这里插入图片描述

[root@server3 ~]# cd /var/www/html/
[root@server3 html]# ls
index.html  upload
[root@server3 html]# cd upload/
[root@server3 upload]# ls
index.php  upload_file.php
[root@server3 upload]# mv index.php ..
[root@server3 upload]# cd ..
[root@server3 html]# yum install -y php
[root@server3 html]# systemctl restart httpd
[root@server3 html]# cat index.php
<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

[root@server3 html]# vim upload/upload_file.php 
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))   ##更改大小
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
[root@server3 html]# chmod 777 upload
[root@server3 html]# cd upload/
[root@server3 upload]# ls
上传照片后 没有

192.168.0.1/index.php 默认访问server3
在这里插入图片描述
上传照片 404错误 访问的是server2上后端的页面。
在这里插入图片描述

[root@foundation15 html]# scp upload_file.php 192.168.0.2:/var/www/html/
[root@server2 html]# ls
index.html  upload_file.php
[root@server2 html]# yum install -y php
[root@server2 html]# vim upload_file.php 
&& ($_FILES["file"]["size"] < 2000000))
[root@server2 html]# systemctl restart httpd
[root@server2 html]# mkdir upload
[root@server2 upload]# chmod 777 /var/www/html/upload
提交成功
[root@server2 upload]# ls
vim.jpg

192.168.0.1/index.php 默认访问server3,server3只是前期的访问动作,当判断是上传动作时,切到server2。读在server3,写在server2上。读写分离。
haproxy定向到server2 照片最终上传到server2上的upload文件
在这里插入图片描述
在这里插入图片描述

3、haproxy+pacemaker高可用

3.1 pacemaker的搭建(集群,没有主辅之分)

实验前配置pacemaker

[root@server1 haproxy]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# ls
redhat.repo  westos.repo
[root@server1 yum.repos.d]# vim westos.repo  ##添加行
[HighAvailability]
name=rhel7.6
baseurl=http://192.168.0.100/rhel7.6/addons/HighAvailability
gpgcheck=0
## 安装
[root@server1 yum.repos.d]# scp westos.repo  server4:/etc/yum.repos.d/
[root@server1 yum.repos.d]# yum install -y pacemaker pcs psmisc policycoreutils-python.x86_64 
[root@server1 yum.repos.d]# ssh server4 yum install -y pacemaker pcs psmisc policycoreutils-python.x86_64 

## server1 4 安装并开启pacemaker服务,
[root@server1 yum.repos.d]# systemctl enable --now pcsd.service 
[root@server1 yum.repos.d]# ssh server4 systemctl enable --now pcsd.service 

## 安装后会自动生成一个用户hacluster,需要为他设置一个密码。
[root@server1 yum.repos.d]# echo westos | passwd --stdin hacluster
[root@server1 yum.repos.d]# ssh server4 "echo westos | passwd --stdin hacluster"

## 将server1 4 设置成管理用户
[root@server1 yum.repos.d]# pcs cluster auth server1 server4
Username: hacluster  
Password: westos
[root@server1 yum.repos.d]# pcs cluster setup --name mycluster server1 server4
[root@server1 ~]# pcs cluster start --all  ##开启集群心跳程序
server1: Starting Cluster (corosync)...   ##corosync 心跳,基于openas开发的
server4: Starting Cluster (corosync)...
server1: Starting Cluster (pacemaker)...   ##pacemaker 集群资源管理器
server4: Starting Cluster (pacemaker)...
[root@server1 yum.repos.d]# pcs cluster enable --all  ## 开启所有节点,并设置开机自启
[root@server1 yum.repos.d]# pcs status   ##查看集群状态
[root@server1 yum.repos.d]# pcs property set stonith-enabled=false
[root@server1 yum.repos.d]# crm_verify -LV   ## 解决WARNINGS
[root@server1 yum.repos.d]# pcs status

创建名为mycluster的集群,生成并同步server1 4 两个节点
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

[root@server1 ~]# pcs resource standards ##查看系统自带标准脚本
[root@server1 ~]# pcs status corosync   ##查看心跳的状态
[root@server1 ~]# pcs resource providers  ## 查看资源的提供者
[root@server1 ~]# pcs resource agents ocf:heartbeat  ##列出资源提供者包含的代理
[root@server1 ~]# pcs resource create --help
[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.0.101 op monitor interval=30s  ##创建一个名为vip的资源。
[root@server1 ~]# pcs status
[root@server1 ~]# ip addr

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2 关闭集群指定节点

失效备元

[root@server1 ~]# pcs cluster stop server1
server1: Stopping Cluster (pacemaker)...
server1: Stopping Cluster (corosync)...
[root@server4 ~]# pcs status
Online: [ server4 ]
OFFLINE: [ server1 ]

 vip	(ocf::heartbeat:IPaddr2):	Started server4
[root@server4 ~]# ip addr

[root@server1 ~]# pcs cluster start server1
server1: Starting Cluster (corosync)...
server1: Starting Cluster (pacemaker)...
[root@server1 ~]# pcs status
 vip	(ocf::heartbeat:IPaddr2):	Started server4

不会切回来 没有主副

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.3 禁止掉haproxy服务

配置自动自动启动haproxy服务

[root@server4 ~]# yum install -y haproxy
[root@server1 ~]# systemctl disable --now haproxy   ##将服务交给集群,手工不能开启
[root@server1 ~]# cd /etc/haproxy/
[root@server1 haproxy]# scp haproxy.cfg server4:/etc/haproxy/

[root@server4 ~]# systemctl start haproxy.service 
[root@foundation mnt]# curl 192.168.0.4
server3
[root@server4 ~]# systemctl stop haproxy.service 
[root@server1 haproxy]# pcs resource standards 
lsb
ocf
service
systemd
[root@server1 haproxy]# pcs resource agents systemd
[root@server1 haproxy]# systemctl status haproxy.service 
/usr/lib/systemd/system/haproxy.service
[root@server1 haproxy]# pcs resource create haproxy systemd:haproxy op monitor interval=30s
[root@server1 haproxy]# pcs status
[root@foundation upload]# curl 192.168.0.101
curl: (7) Failed to connect to 192.168.0.101 port 80: Connection refused

[root@server1 haproxy]# pcs resource group add hagroup vip haproxy
[root@foundation upload]# curl 192.168.0.101
server3
[root@foundation upload]# curl 192.168.0.101
server3

两个资源是分开的,需要统一到一台节点上
在这里插入图片描述

在这里插入图片描述

3.4 standy节点的使用

在这里插入图片描述

[root@server4 haproxy]# pcs node standby
[root@server1 haproxy]# pcs status
server1
转换成standy节点 server4状态变成了standy,资源跳转到server1,接管成功。

在这里插入图片描述
全部上线,资源不会跳转回去。

[root@server4 ~]# pcs node unstandby
[root@server1 haproxy]# pcs status
server1

在这里插入图片描述

3.5 删除vip 关掉haproxy服务
[root@server1 haproxy]# systemctl stop haproxy
[root@server1 haproxy]# pcs status
[root@server1 haproxy]# ip addr del 192.168.0.101/24 dev eth0
[root@server1 haproxy]# pcs status

在这里插入图片描述

在这里插入图片描述

节点server1恢复,自动添加vip成功。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.6 down掉网卡
[root@server1 haproxy]# ip link set down eth0
[root@server4 ~]# pcs status

在这里插入图片描述
在这里插入图片描述

4、stonith的设置(fencing设备)

- 网卡坏了,内核坏了也不可能手动去重启网卡,重启电脑。所以需要设置stonith。
- 脑裂 相当于两个用户同时修改一个文件,导致存储损坏。
- 
- 	stonith相当于电源交换机,插排,可以发信息告诉stonith需要断开哪个电源(直接断电),
- 开启哪个电源,实现了远程自动开关机。

qemu 半虚拟化
kvm 硬件虚拟化 解决cpu、内存
libvirtd 图形化控制 管理接口 systemctl status libvirtd 服务停掉后对虚拟机没有影响
virt-manager – > libvirtd --> kvm/qemu

[root@foundation upload]# cd /etc/cluster/
[root@foundation cluster]# rpm -qa | grep fence
fence-virtd-0.4.0-4.el8.x86_64
libxshmfence-1.3-2.el8.x86_64
fence-virtd-libvirt-0.4.0-4.el8.x86_64
fence-virtd-multicast-0.4.0-4.el8.x86_64
[root@foundation cluster]# fence_virtd -c
Interface [none]: br0
其他都是默认
[root@foundation cluster]# ls
fence_xvm.key
[root@foundation cluster]# dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
[root@foundation cluster]# systemctl restart fence_virtd
[root@foundation cluster]# systemctl status fence_virtd
[root@foundation cluster]# ll fence_xvm.key
-rw-r--r--. 1 root root 128 Jan 10 15:59 fence_xvm.key
[root@foundation cluster]# netstat -anulp | grep :1229
udp        0      0 0.0.0.0:1229            0.0.0.0:*  

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@server1 ~]# mkdir /etc/cluster
[root@server4 ~]# mkdir /etc/cluster
[root@foundation cluster]# scp fence_xvm.key root@192.168.0.1:/etc/cluster
[root@foundation cluster]# scp fence_xvm.key root@192.168.0.4:/etc/cluster
##server1 4做同样的操作
[root@server1 ~]# yum install fence-virt.x86_64 -y
[root@server1 ~]# stonith_admin -I
 fence_xvm
 fence_virt
2 devices found
[root@server1 ~]# cd /etc/cluster
[root@server1 cluster]# ls
fence_xvm.key
[root@server4 cluster]# ls
fence_xvm.key

## 主机名和域名映射 集群内看到的名称hostname 主机名server1 server4和外部的域名vm1 vm4不一致
[root@foundation cluster]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     vm1                          running
 2     vm2                          running
 3     vm3                          running
 4     vm4                          running
[root@server1 cluster]# pcs stonith describe fence_xvm 
[root@server1 cluster]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:vm1;server4:vm4" op monitor interval=60s   ##vmfence 策略, fence_xvm 代理,pcmk_host_map主机映射  
[root@server1 cluster]# pcs property set stonith-enabled=true
[root@server1 cluster]# crm_verify -LV  ##检测没有错误
[root@server1 cluster]# pcs status

策略建立在服务器的对端
在这里插入图片描述

检测配置了stonith之后的效果

- 可以实现摧毁内核,然后自动重启。
- 注意点:如果stonith设备老是自动停止,可能是真机的防火墙和selinux设置问题。
- 可以关闭防火墙,将selinux配置文件改为disabled。

server1内核崩溃

[root@server1 haproxy]# echo c > /proc/sysrq-trigger

在这里插入图片描述
server1自动重启
在这里插入图片描述

5、nginx 负载均衡

[root@foundation ~]# curl -I taobao.com
HTTP/1.1 302 Found
Server: Tengine
Date: Tue, 13 Jul 2021 10:09:26 GMT
Content-Type: text/html
Content-Length: 258
Connection: keep-alive
Location: http://www.taobao.com/

[root@server1 cluster]# pcs cluster stop --all
[root@server1 cluster]# pcs cluster disable --all
[root@server1 cluster]# cd
[root@server1 ~]# tar zxf nginx-1.18.0.tar.gz
[root@server1 ~]# cd nginx-1.18.0
[root@server1 nginx-1.18.0]# yum install -y gcc pcre-devel openssl-devel

[root@server1 nginx-1.18.0]# cd auto/
[root@server1 auto]# cd cc/
[root@server1 cc]# vim gcc
172 #CFLAGS="$CFLAGS -g"

[root@server1 cc]# cd ..
[root@server1 auto]# cd ..
[root@server1 nginx-1.18.0]# pwd
/root/nginx-1.18.0
[root@server1 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module  ##生成Makefile
[root@server1 nginx-1.18.0]# ll Makefile 
-rw-r--r-- 1 root root 376 Jul 13 08:51 Makefile
[root@server1 nginx-1.18.0]# make
[root@server1 nginx-1.18.0]# make install
[root@server1 nginx-1.18.0]# cd /usr/local/nginx/
[root@server1 nginx]# ls
conf  html  logs  sbin
[root@server1 nginx]# du -sh
976K	.

[root@server1 sbin]# pwd
/usr/local/nginx/sbin
[root@server1 sbin]# cd
[root@server1 ~]# vim .bash_profile 
PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin
[root@server1 ~]# source .bash_profile
[root@server1 ~]# which nginx
/usr/local/nginx/sbin/nginx
[root@server1 ~]# nginx
[root@server1 ~]# netstat -antlp
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      32250/nginx: master 
[root@server1 ~]# curl localhost -I
[root@server1 ~]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf ##在文件最后添加 
        upstream westos {       ##定义负载均衡器
        server 192.168.0.2:80;
        server 192.168.0.3:80;
        }

server {
        listen 80;
        server_name demo.westos.org;

        location / {
                proxy_pass http://westos;  ##当访问网站根目录的时候,做一个反向代理,代理到上面定义的负载均衡器westos上。
        }
}
}
[root@server1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx -s reload
[root@server1 conf]# curl 192.168.0.1
<title>Welcome to nginx!</title>

[root@foundation ~]# vim /etc/hosts
192.168.0.1  demo.westos.org
[root@foundation ~]# ping demo.westos.org
[root@foundation ~]# curl demo.westos.org
server2
[root@foundation ~]# curl demo.westos.org
server3
[root@foundation ~]# curl demo.westos.org
server2
[root@foundation ~]# curl demo.westos.org
server3

[root@server2 upload]# systemctl stop httpd
[root@foundation ~]# curl demo.westos.org
server3
[root@foundation ~]# curl demo.westos.org
server3
[root@foundation ~]# curl demo.westos.org
server3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值