linux 集群化

一集群概述

实验环境

1、集群是什么?

定义:集群是一组协同工作的服务器,各有分工,对外表现为一个整体

集群的意义:更好的利用现有资源实现服务器的高度可用

集群的扩展方式

  1. 垂直扩展:更改服务器硬件
  2. 水平扩展:添加更多的服务器节点

常建的集群拓扑图(尚硅谷图)
在这里插入图片描述

2、集群的分类

1.2.1 负载均衡集群 - LBC

使用意图:减轻单台服务器压力,将用户请求分担给多台服务器一起处理

实现方法
软件:LVS RAC Nginx
硬件:F5 BIG-IP

负载均衡集群架构拓扑(尚硅谷图)

在这里插入图片描述
调度器分类

1触发条件不同

  四层:传输层		IP+PORT
  七层:应用层		URL

2实现的原理不同

  四层:TCP连接只建立一次,客户端和真实服务器
  七层:TCP连接建立两次,客户机与负载调度器,负载调度器与真实服务器

3实现场景不同

  四层:TCP 应用 如:基础 C/S 机构的 ERP 系统
  七层:HTTP 应用 如:根据用户访问域名的方式,判断用户的语言

4安全性不同

  四层:转发 SYN 攻击
  七层:可以拦截 SYN 攻击

使用范围:业务并发较大的应用程序

1.2.2 高可用集群 – HAC

使用意图: 最大限度的保证用户的应用持久,不间断的提供服务

最大限度
99% 99 87.6 小时
99.9% 999 8.8 小时
99.99% 9999 53 分钟
99.999% 99999 5 分钟

实现原理: 心跳检测

实现方法

一、软件:
	1. heartbeat linux-HA
	2. RHCS
	3. ROSE
	4. keepalived

二、硬件:
	1.  F5

特殊情况: 脑分裂

可能出现的问题:数据不完整、数据不可访问
解决方法:预防:冗余、强制隔离:电源交换机
使用范围: 需要持续提供服务的应用程序

1.2.3 高性能运算集群 – HPC

使用意图: 提供单台计算机所不具备的计算能力

LBC 与 HAC 的原理对比:

负载均衡集群通过提高单位时间内执行的任务数来提升效率
高性能运算集群通过缩短单个任务的执行时间来提高效率

使用范围: 天气计算、火箭弹道演算

二、负载均衡集群

2.1、LVS 相关原理

LVS简介

  LVS(Linux Virtual Server)即 Linux 虚拟服务器,是由国人章文嵩博士主导的开源负载均衡项目,目前 LVS 已经被集成到 Linux 内核模块中。该项目在 Linux 内核中实现了基于IP的数据请求负载均衡调度方案,LVS在四层传输层

LVS的组成
IPVS:运行在内核空间
IPVSADM:运行在用户空间,管理集群服务的命令行工具

LVS只做了简单的地址信息的更改,并没有涉及真实的流量转发

  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

2.2、LVS 工作方式

在这里插入图片描述

3.3.1 LVS-NAT 模式搭建

原理:
  基于 IP 伪装 MASQUERADES,原理是多目标DNAT。所以请求和响应都经由 Director 调度器。

优点:

  1. 支持端口映射
  2. RS可以使用任意操作系统
  3. 节省公有IP地址。
    3.1 RIP和DIP都应该使用同一网段私有地址,而且RS的网关要指向DIP。
    3.2 使用nat另外一个好处就是后端的主机相对比较安全。

缺点:

  1. 请求和响应报文都要经过Director转发;极高负载时,Director可能成为系统瓶颈。就是效率低的意思。

实验环境

实验环境

负载调度器
ens33(外网)IP:20.1.1.11/24
ens34(内网)IP:10.1.1.11/24

web 服务器-1 ens33(内网)IP:10.1.1.12/24

web 服务器-2 ens33(内网)IP:10.1.1.13/24

配置好 IP地址
搭建本地 yum 源
关闭防火墙与 selinux

主机的仅主机网卡,添加一个20.1.1.240 的外网 IP
在这里插入图片描述

  

负载调度器配置

[root@server1 ~]$ echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf #开启路由转发
[root@server1 ~]$ sysctl -p #重新加载内核配置
net.ipv4.ip_forward = 1
[root@server1 ~]$ iptables -F	#清空防火墙规则
[root@server1 ~]$ iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o ens33 -j SNAT --to-source 20.1.1.11	#添加防火墙规则,当源地址是内网网段并且出口网卡为ens33的时候进行SNAT转换,转换源地址为外网卡地址
[root@server1 ~]$ iptables -t nat -L	#查看是否添加成功

  
web服务器-1

[root@web-1 ~]$ yum -y install httpd	#安装 httpd 服务
[root@web-1 ~]$ echo "www.http1.com" > /var/www/html/index.html	#写个网页
[root@web-1 ~]$ systemctl start httpd && systemctl enable httpd	#启动并自启动
[root@web-1 ~]$ curl localhost	#查看 http 网页
[root@web-1 ~]$ route add default gw 10.1.1.11	#将网关指向负载调度器的内网IP
[root@web-1 ~]$ echo "route add default gw 10.1.1.11" >> /etc/rc.local #添加到开启自启
[root@web-1 ~]$ route -n	#查看路由表
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.1.11       0.0.0.0         UG    0      0        0 ens33
10.1.1.0        0.0.0.0         255.255.255.0   U     100    0        0 ens33

  
web服务器-2

[root@web-2 ~]$ yum -y install httpd	#安装 httpd 服务
[root@web-2 ~]$ vim /etc/httpd/conf/httpd.conf 
#把 Listen 80 改为 Listen 8080 #测试 NAT 模式的端口映射
[root@web-2 ~]$ echo "www.http2.com" > /var/www/html/index.html	#写个网页
[root@web-2 ~]$ systemctl start httpd && systemctl enable httpd	#启动并自启动
[root@web-2 ~]$ curl localhost:8080	#查看 http 网页
[root@web-2 ~]$ route add default gw 10.1.1.11	#将网关指向负载调度器的内网IP
[root@web-2 ~]$ echo "route add default gw 10.1.1.11" >> /etc/rc.local #添加到开启自启
[root@web-2 ~]$ route -n #查看路由表
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.1.11       0.0.0.0         UG    0      0        0 ens33
10.1.1.0        0.0.0.0         255.255.255.0   U     100    0        0 ens33

  
负载调度器配置 ipvsadm

[root@server1 ~]$ yum -y install ipvsadm	#安装
[root@server1 ~]$ ipvsadm -A -t 20.1.1.11:80 -s rr	#添加 ipvsadm TCP 集群
[root@server1 ~]$ ipvsadm -a -t 20.1.1.11:80 -r 10.1.1.12:80 -m	#添加集群节点 web1
[root@server1 ~]$ ipvsadm -a -t 20.1.1.11:80 -r 10.1.1.13:8080 -m 	#添加集群节点 web2
# -s rr 是轮询算法
[root@server1 ~]$ ipvsadm -Ln	#查看已添加虚拟服务等
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  20.1.1.11:80 rr
  -> 10.1.1.12:80                 Masq    1      0          0         
  -> 10.1.1.13:8080               Masq    1      0          0         
[root@server1 ~]$ ipvsadm -Ln --stats	#查看 ipvsadm 模块转发情况
`访问后才有记录`
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  20.1.1.11:80                       18       97       17     6750     1961
  -> 10.1.1.12:80                        9       51       12     3881     1439
  -> 10.1.1.13:8080                      9       46        5     2869      522
[root@server1 ~]$ ipvsadm -S > /etc/sysconfig/ipvsadm	#ipvsadm 配置保存

浏览器访问测试

在这里插入图片描述

在这里插入图片描述

3.2.1 LVS-DR 模式搭建

原理

当Director接收到请求之后,通过调度方法选举出RealServer。
讲目标地址的MAC地址改为RealServer的MAC地址。
RealServer接受到转发而来的请求,发现目标地址是VIP。RealServer配置在lo接口上。
处理请求之后则使用lo接口上的VIP响应CIP。

LVS-DR的优点与缺点
优点:

  1. RIP可以使用私有地址,也可以使用公网地址。
    只要求DIP和RIP的地址在同一个网段内。
  2. 请求报文经由Director调度,但是响应报文不经由Director。
  3. RS可以使用大多数OS

缺点:

  1. 不支持端口映射。
  2. 不能跨局域网。

总结:
三种模型虽然各有利弊,但是由于追求性能和便捷,DR是目前用得最多的LVS模型。

实验环境(centos7)

负载调度器 ens33(网卡)IP:10.1.1.11

web 服务器-1 ens33(网卡)IP:10.1.1.12

web 服务器-2 ens33(网卡)IP:10.1.1.13

配置好 IP 地址
搭建好本地 yum 源
关闭防火墙与 selinux

负载调度器

配置虚拟IP

[root@server ~]$ systemctl stop NetworkManager	#关闭网卡守护进程
[root@server ~]$ cd /etc/sysconfig/network-scripts/
[root@server network-scripts]$ cp -a ifcfg-ens33 ifcfg-ens33:0
[root@server network-scripts]$ vim ifcfg-ens33:0 #配置 IP
#配置如下内容
BOOTPROTO=static
DEVICE=ens33:0
ONBOOT=yes
IPADDR=10.1.1.100	#虚拟IP
PREFIX=24
[root@server network-scripts]$ ifup ens33:0	#启动网卡

  
关闭网卡重定向功能

[root@server ~]$ vim /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirect s= 0
net.ipv4.conf.ens33.send_redirects = 0
[root@server ~]$ sysctl -p	#更新参数使其生效
#centos7也可这样配置
#[root@server ~]$ echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
#[root@server ~]$ echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
#[root@server ~]$ echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects

web 服务器-1 配置
  
配置虚拟IP

[root@httpd1 ~]$ systemctl stop NetworkManager && systemctl ensdis NetworkManager #关闭并永久关闭网卡守护进程
[root@httpd1 ~]$ cd /etc/sysconfig/network-scripts/
[root@httpd1 network-scripts]$ cp -a ifcfg-lo ifcfg-lo:0
[root@httpd1 network-scripts]$ vim ifcfg-lo:0
#修改一下配置
DEVICE=lo:0
IPADDR=10.1.1.100	#虚拟IP
NETMASK=255.255.255.255

  
关闭对应的 ARP 响应及公告功能

[root@httpd1 network-scripts]$ cd
[root@httpd1 ~]$ vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
[root@httpd1 ~]$ sysctl -p	#更新参数使其生效

  
启动虚拟IP地址对应的子网卡

[root@httpd1 ~]$ ifup lo:0	#启动 lo 的子网卡
[root@httpd1 ~]$ route add -host 10.1.1.100 dev lo:0 #添加路由
[root@httpd1 ~]$ echo "route add -host 10.1.1.100 dev lo:0" >> /etc/rc.local #添加到开机自启

  
安装 httpd 启动并自启动

[root@httpd1 ~]$ yum -y install httpd
[root@httpd1 ~]$ echo "www.server2.com" >> /var/www/html/index.html
[root@httpd1 ~]$ systemctl start httpd && systemctl enable httpd

  
web服务器-2 配置

配置虚拟IP

[root@httpd2 ~]$ systemctl stop NetworkManager
[root@httpd2 ~]$ cd /etc/sysconfig/network-scripts/
[root@httpd2 network-scripts]$ cp -a ifcfg-lo ifcfg-lo:0
[root@httpd2 network-scripts]$ vim ifcfg-lo:0
#修改一下配置
DEVICE=lo:0
IPADDR=10.1.1.100	#虚拟IP
NETMASK=255.255.255.255

  
关闭对应的 ARP 响应及公告功能

[root@httpd2 network-scripts]$ cd
[root@httpd2 ~]$ vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
[root@httpd2 ~]$ sysctl -p	#更新参数使其生效

  
启动虚拟IP对应的子网卡

[root@httpd2 ~]$ ifup lo:0	#启动 lo 的子网卡
[root@httpd2 ~]$ route add -host 10.1.1.100 dev lo:0
[root@httpd2 ~]$ echo "route add -host 10.1.1.100 dev lo:0" >> /etc/rc.local #添加开机自启

  
安装 httpd 启动并自启动

[root@httpd2 ~]$ yum -y install httpd
[root@httpd2 ~]$ echo "www.server3.com" >> /var/www/html/index.html
[root@httpd2 ~]$ systemctl start httpd && systemctl enable httpd

  
负载调度器配置 ipvsadm

[root@server ~]$ yum -y install ipvsadm
[root@server ~]$ ipvsadm -v
[root@server ~]$ ipvsadm -A -t 10.1.1.100:80 -s rr	#添加虚拟服务器,协议为tcp/udp,算法为rr (rr/wrr/lc/wlc)
[root@server ~]$ ipvsadm -a -t 10.1.1.100:80 -r 192.168.154.20:80 -g	#添加真实服务器一的子群节点
[root@server ~]$ ipvsadm -a -t 10.1.1.100:80 -r 192.168.154.30:80 -g	#添加真是服务器二的子群节点
[root@server ~]$ ipvsadm -Ln	#查看 LVS 规则表
[root@server ~]$ ipvsadm -Ln --stats #查看状态
[root@server ~]$ ipvsadm -S > /etc/sysconfig/ipvsadm	#ipvsadm 配置保存

浏览器访问测试
10.1.1.100
立即刷新可能不会切换,停留五秒左右再刷新,就能明显看到切换服务器

在这里插入图片描述

在这里插入图片描述

三、负载均衡集群相关算法

3.1、静态调度算法

特点:只根据算法而不考虑服务器

  RR 轮询:将用户的每次请求分配给后端服务器,从第一台开始到最后一台结束,然后循环。

  WRR 加权轮询:按照权重比例实现在多台主机之间进行调度。

  SH(source hash)源地址散列:将同一个IP的用户请求,发送给同一个服务器。

  DH(destination hash)目标地址散列:将同一个目标地址的用户请求发送给同一个真实服务器(常用在有缓存服务器下,提高缓存的命中率)

3.2、动态调度算法

特点:除了考虑算法也考虑服务器状态

算法说明

  LC (lest-connection)最少连接:将新的连接请求,分配给连接数最少的服务器(算法:活动连接*256+非活动连接 = 连接数)

  WLC 加权最少连接:特殊的最少连接算法,权重越大承担的请求数越多(算法:活动连接*256+非活动连接 / 权重 = 连接数)

  SED 最短期望延迟:特殊的WLC算法(算法:(活动链接+1)*256 / 权重)

  NQ 永不排队:特殊的SED算法,无需等待,如有真实服务器的连接数等于0直接分配不需要运算。

  LBLC 特殊的DH算法:既能提高缓存命中率,又考虑服务器性能。

  LBLCR LBLC+缓存:尽可能提高负载均衡和缓存命中率的折中算法。

3.3、LVS 持久链接

普遍应用在 HTTPS 上,优先于通用算法

PCC (持久客户端连接)
定义:客户端持久,将来自于同一个客户端的所有请求都定向至此前选定的RS,也就是只要IP相同,分配的服务器始终相同。
代码演示

example:ipvsadm -A -t 20.1.1.11:0 -s wlc -p 120
#添加一个tcp负载集群,集群地址为 20.1.1.11 算法为wlc,持久化时间为120s

PPC (持久端口连接)
定义:端口持久,将来自同一个客户端对同一个服务的请求始终定向至此前选定的RS。
代码演示

example:ipvsadm -A -t 20.1.1.11:80 -s rr -p 120
#添加一个tcp负载集群,集群地址为 20.1.1.11:80 算法为wlc,持久化时间为120s

PFMC 持久防火墙标记链接
定义:将来自同一客户但对指定服务(端口)的请求始终定向至此前选定的RS,不过它可以将两个毫不相干的端口定义为一个集群服务器。

代码演示

iptables -t mangle -A PREROUTING -d 20.1.1.11 -p tcp --dport 80 -j MARK --set-mark 10
#添加一个防火墙规则,当目标地址为 20.1.1.11 并且目标端口为80时给数据包打一个标记,设置mark值为10
iptables -t mangle -A PREROUTING -d 10.1.1.10 -p tcp --dport 443 -j MARK --set-mark 10
#添加一个防火墙规则,当目标地址为 20.1.1.11 并且目标端口为443时给数据包打一个标记,设置mark值为10
services iptables save		#保存防火墙规则持久化生效
ipvsadm -A -f 10 -s wlc -p 120	#添加一个负载调度器,当mark值为10时进行负载均衡使用wlc算法,持久化生效时间为120s

四、高可用集群搭建

4.1、Keepalived相关说明

软件介绍
  案例环境专为LVS和HA设计的一款健康检查工具
  支持故障自动切换(Failover)
  支持节点健康状态检查(HealthChecking)
  官方网站:http://www.keepalived.org/

keepalived的三个核心模块

core核心模块    chech健康监测    vrrp虚拟路由冗余协议

keepalived主要功能

  对RealServer进行健康状态检查,支持3层、4层、7层协议进行健康检查;并支持VRRP冗余协议,所以keepalived两个功能是监控检查,VRRP冗余协议;

keepalived的作用

  检查web服务器的状态,如果有一台web服务器/mysql服务器宕机或故障,keepalived将故障节点从系统中剔除,当故障恢复的时候自动加入服务器集群中,非常智能化,只需要手动修复坏的节点即可。

keepalived的layer3、4、7层分别是IP层、传输层、应用层的实现原理如下:

layer3: keepalived定期向集群中服务器发送ICMP的包,如果发现哪台ping不通,便报告这台服务器失效,并将其剔除集群;(判断标准为IP是否有效)

layer4: 主要以TCP端口(也可以是udp)状态来决定服务器工作是否正常,如web服务器的80端口如果没有工作,则将其剔除集群(判断标准为端口)

layer7: 应用层,keepalived将根据用户的设定,检查服务器程序的运行是否正常,如果不是设定值,则将其剔除集群(判断标准为程序是否正常)

软件实现原理
  VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)
  一主+多备,共用同一个IP地址,但优先级不同
在这里插入图片描述
漂移地址:主机地址会切换

4.2、Keepalived+LVS高可用实验构建

实验构建图
在这里插入图片描述

实验环境(centso 7)

负载调度器-1(主)
IP:10.1.1.11
虚拟IP:10.1.1.100

负载调度器-2(从)
IP:10.1.1.1
虚拟IP:10.1.1.100

web服务器-1
IP:10.1.1.13
虚拟IP:10.1.1.100

web服务器-2
IP:10.1.1.14
虚拟IP:10.1.1.100

配置好 IP地址
搭建好本地 yum 源
关闭防火墙与 selinux
全部关闭 NetworkManager 网卡守护进程

先搭建 LVS-DR 模式,负载调度器-1 与 两个 web 服务器,可参照上面实验搭建

4.3、负载调度器-1

安装 Keepalived 
[root@server1 ~]$ mkdir /mnt/iso1
[root@server1 ~]$ mount -o loop Keepalived.iso /mnt/iso1 #挂载
[root@server1 ~]$ cp -a /mnt/iso1/* .
[root@server1 ~]$ yum -y install kernel-devel openssl-devel popt-devel gcc gcc-c++ #安装所需依赖包
[root@server1 ~]$ tar -xf keepalived-1.2.2.tar.gz #解压
[root@server1 ~]$ cd keepalived-1.2.2/
[root@server1 keepalived-1.2.2]$ ./configure --prefix=/ --with-kernels-dir=/usr/src/kernels/3.10.0-693.el7.x86_64/
[root@server1 keepalived-1.2.2]$ make && make install #编译安装
[root@server1 keepalived-1.2.2]$ echo $? #检查是否出错
[root@server1 keepalived-1.2.2]$ chkconfig --add keepalived #设置开机自启
[root@server1 keepalived-1.2.2]$ chkconfig keepalived on

关闭网卡重定向功能
[root@localhost ~]$ vim /etc/sysctl.conf 
#最后一行添加
net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.default.send_redirects = 0 
net.ipv4.conf.ens33.send_redirects = 0 
[root@localhost ~]$ sysctl -p #重新加载配置文件

配置 Keepalived 服务
[root@server1 keepalived-1.2.2]$ vim /etc/keepalived/keepalived.conf #修改配置
! Configuration File for keepalived

global_defs {
   router_id R1 #设置主机名,同一个组内名称不能相同
}

vrrp_instance VI_1 { #VRRP 设置
    state MASTER #设置服务器类型主/从(MASTER/SLAVE)
    interface ens33 #指定那块网卡用来监听
    virtual_router_id 10 #设置组号,如果是一组就是相同 ID 号,一个组内只能有一个主服务器和多个从服务器
    priority 80 #服务器优先级,主服务器优先级高,主从差距最好是50左右(官方建议)
    advert_int 1 #心跳检测时间,检测对方是否存活
    authentication { #存活验证密码
        auth_type PASS
        auth_pass 1111
    }   
    virtual_ipaddress {
        10.1.1.100 #设置集群地址 VIP(虚拟 IP 地址)
    }   
}
#虚拟服务
virtual_server 10.1.1.100 80 { #设置集群地址(VIP)以及端口号
    delay_loop 6 #健康检查时间
    lb_algo rr #使用轮询调度算法
    lb_kind DR #DR 模式的集群
    #net_mask 255.255.255.0 #子网掩码
	#persisitence_timeout 50 #持久化
    protocol TCP #使用的协议
    #真实服务器健康状态监测,几个真实服务器就写几个real_server
        real_server 10.1.1.13 80 { #管理网站节点以及对应端口
        weight 1 #权重,优先级 在源文件基础上删除修改
        TCP_CHECK { #状态检查方式
                connect_port 80 #检查端口
                connect_timeout 3 #连接超时(秒)
                nb_get_retry 3 #重试次数
                delay_before_retry 4 #重试间隔(秒)
                  }   
}
        real_server 10.1.1.14 80 {
        weight 1
        TCP_CHECK {
                connet_port 80
                connet_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                  }
}
}
#多余的删除即可

4.4、负载调度器-2

IP 配置
[root@server2 ~]$ systemctl stop NetworkManager && systemctl disble NetworkManager
[root@server2 ~]$ cd /etc/sysconfig/network-scripts/
[root@server2 network-scripts]$ cp ifcfg-ens33 ifcfg-ens33:0
[root@server2 network-scripts]$ vim ifcfg-ens33:0
BOOTPROTO=static
DEVICE=ens33:0
ONBOOT=yes
IPADDR=10.1.1.100
PREFIX=24
[root@server2 network-scripts]$ ifup ens33:0 #启动报错修改一下内容
[root@server2 network-scripts]$ vim /etc/sysconfig/network-scripts/ifup-eth
注释掉这个 257-264 区域
257            #     if [ "${REALDEVICE}" != "lo" ] && [ "${arpcheck[$idx]}" !=     "no" ] ; then
258            #         ARPING=$(/sbin/arping -c 2 -w ${ARPING_WAIT:-3} -D -I     ${REALDEVICE} ${ipaddr[$idx]})
259            #         if [ $? = 1 ]; then
260            #             ARPINGMAC=$(echo $ARPING |  sed -ne 's/.*\[\(.*\)\    ].*/\1/p')
261            #            net_log $"Error, some other host ($ARPINGMAC) alrea    dy uses address ${ipaddr[$idx]}."
262            #             exit 1
263            #         fi
264            #     fi
[root@server2 network-scripts]$ ifup ens33:0

关闭网卡重定向功能
[root@server2 network-scripts]$ cd
[root@server2 ~]$ vim /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@server2 ~]$ sysctl -p

安装 Keepalive 服务
[root@server2 ~]$ tar -xf keepalived-1.2.2.tar.gz 
[root@server2 ~]$ cd keepalived-1.2.2/
[root@server2 ~]$ yum -y install kernel-devel openssl-devel popt-devel gcc gcc-c++
[root@server2 keepalived-1.2.2]$ ./configure --prefix=/ --with-kernels-dir=/usr/src/kernels/3.10.0-693.el7.x86_64/
[root@server2 keepalived-1.2.2]$ echo $?
[root@server2 keepalived-1.2.2]$ make && make install
[root@server2 keepalived-1.2.2]$ chkconfig --add keepalived
[root@server2 keepalived-1.2.2]$ chkconfig keepalived on

配置 Keepalived 服务
[root@server2 keepalived-1.2.2]$ scp root@10.1.1.11:/etc/keepalived/keepalived.conf #拷贝负载调度器-1的配置文件
[root@server2 keepalived-1.2.2]$ vim /etc/keepalived/keepalived.conf #进入配置文件
修改 state MASTER 为 state SLAVE #修改为从服务器
修改 priority 80  为 priority 30 #差值在50左右最好
修改 router_id R1 为 router_id R2 #名字不能重复
[root@server2 keepalived-1.2.2]$ cd 
[root@server2 ~]$ systemctl start keepalived

[root@server2 ~]$ yum -y install ipvsadm
[root@server2 ~]$ ipvsadm -Ln #查看如果没有节点,手动添加
[root@server2 ~]$ ipvsadm -A -t 10.1.1.100:80 -s rr #添加集群
[root@server2 ~]$ ipvsadm -a -t 10.1.1.100:80 -r 10.1.1.13:80 -g #添加集群节点
[root@server2 ~]$ ipvsadm -a -t 10.1.1.100:80 -r 10.1.1.14:80 -g
[root@server2 ~]$ ipvsadm -Ln #查看集群节点

测试
把 10.1.1.11 服务器关闭,浏览器访问 10.1.1.100 依然可以访问
把 Apache 服务器停掉一台,就会发现被停掉的 Apache 服务器会被踢出集群节点

五、Heartbeat + Nginx 搭建

Heartbeat 的介绍
  Heartbeat是Linux-HA项目中的一个组件,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat项目里,由heartbeat模块实现了这两个功能。Heartbeat是目前开源HA项目中十分成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等,自1999年开始到现在,Heartbeat在行业内得到了广泛的应用。heartbeat最核心的功能包括两个部分,心跳监测和资源接管。心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

HeartBeat 的作用
  通过HeartBeat,可以将资源(IP以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用的服务。在实际的生产应用场景中,heartbeat的功能和另一个高可用的开源软件keepalived有很多的相同之处,在我们实际的生产业务中也是有区别的。

Heartbeat工作原理
  
  通过修改配置文件,指定哪一台Heartbeat服务器作为主服务器,则另一台将自动成为备份服务器。然后在指定备份服务器上配置Heartbeat守护进程来监听来自主服务器的心跳。如果备份服务器在指定时间内未监听到来自主服务器的心跳,就会启动故障转移程序,并取得主服务器上的相关资源服务所有权,接替主服务器继续不间断的提供服务,从而达到资源服务高可用性的目的。
  以上描述的是Heartbeat主备的模式,Heartbeat还支持主主模式,即两台服务器互为主备,这时它们之间会相互发送报文来告诉对方自己当前的状态,如果在指定的时间内为收到对方发送的心跳报文,那么久认为对方失效或者宕机了,这时就会启动自身的资源接管模块来接管运行在对方主机上的资源或者服务,继续对用户提供服务。正常情况下,可以较好的实现主机故障后,业务仍不间断的持续运行。
  keepalived主要控制IP飘移,配置应用简单,而且分层,layer3,4,5,各自配置极为简单。heartbeat不但可以控制IP飘移,更擅长对资源服务的控制,配置,应用比较复杂。lvs的高可用建议用keepavlived;业务的高可用用heartbeat。

Hearbeat和Keepalived区别

  1. Keepalived使用的VRRP协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
  2. Heartbeat是基于主机或网络的服务的高可用方式;
  3. Keepalived的目的是模拟路由器的双机;
  4. Heartbeat的目的是用户Service的双机;
  5. LVS的高可用建议用Keepavlived;
  6. 业务的高可用用Heartbeat;

  Keepalived 主要控制IP飘移,配置应用简单,而且分层,layer3,4,5,各自配置极为简单
  Heartbeat 不但可以控制IP飘移,更擅长对资源服务的控制,配置,应用比较复杂

实验环境(centos 6)
10.1.1.15(主)
主机名:www.centos1.com
10.1.1.16(从)
主机名:www.centos2.com
搭建本地 yum 源
关闭防火墙与 SLinux

把所需软件包上传到两台服务器上
链接:https://pan.baidu.com/s/1uZIn-_2vPLjLOijvOHj5zw 提取码:r6fc

  

5.1、主服务器配置

[root@www ~]$ yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel #安装所需依赖包
[root@www ~]$ tar -xf nginx-1.2.6.tar.gz	#解压
[root@www ~]$ useradd -s /sbin/nologin -M nginx	#创建不可登录没有家目录的用户
[root@www ~]$ cd nginx-1.2.6
[root@www nginx-1.2.6]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
#编译 Nginx 并指定用户与组
[root@www nginx-1.2.6]$ make && make install #安装
[root@www nginx-1.2.6]$ echo "1111111111" > /usr/local/nginx/html/index.html #编写网站内容
[root@www nginx-1.2.6]$ /usr/local/nginx/sbin/nginx #启动 Nginx
[root@www nginx-1.2.6]$ cd 
[root@www ~]$ scp nginx-1.2.6.tar.gz 80.sh heartbeat.tar.gz root@10.1.1.16:/root/ #将软件包传给从服务器
[root@www ~]$ yum -y install ntp #安装时间服务
[root@www ~]$ vim /etc/ntp.conf	 #修改配置文件
注释以及添加一下内容
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap #提供给那个网段用

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0
[root@www ~]$ service ntpd start && chkconfig ntpd on #启动并自启动时间服务

[root@www ~]$ hostname www.centos1.com #临时设置主机名
[root@www ~]$ vim /etc/sysconfig/network 
#修改配置文件永久设置主机名,注意:需要重启才能够永久生效
NETWORKING=yes
HOSTNAME=www.centos1.com
[root@www ~]$ vim /etc/hosts #添加对应的解析主机名
10.1.1.15 www.centos1.com
10.1.1.16 www.centos2.com
#注意:修改完配置文件需要重启才能永久生效


安装服务并认证,节点之间的认证配置
[root@www ~]$ tar -xf heartbeat.tar.gz #解压
[root@www ~]$ cd heartbeat
[root@www heartbeat]$ yum -y install * #安装所有软件包
[root@www heartbeat]$ cd /usr/share/doc/heartbeat-3.0.4/
[root@www heartbeat-3.0.4]$ cp -a ha.cf authkeys haresources /etc/ha.d/
#把模板文件复制到 heartbeat 主目录下
[root@www heartbeat-3.0.4]$ cd /etc/ha.d/
[root@www ha.d]$ dd if=/dev/random bs=512 count=1 | openssl md5 #生成密钥随机数
记录了0+1 的读入
记录了0+1 的写出
78字节(78 B)已复制,5.855e-05 秒,1.3 MB/秒
(stdin)= 38c8f556547943959f160acf1ee74deb
[root@www ha.d]$ vim authkeys
#注释掉底部并添加生成的密钥随机数
auth 3
1 crc
2 sha1 HI!
3 md5 38c8f556547943959f160acf1ee74deb
[root@www ha.d]$ chmod 600 authkeys #权限设置为 600 ,不然对服务有影响(觉得不安全)
[root@www ha.d]$ vim ha.cf #修改主配置文件
#注释掉这一行,修改node
bcast   eth0            # Linux
#一主一备节点,需注意能后被两台主机之间解析
node    www.centos1.com
node    www.centos2.com
[root@www ha.d]$ vim haresources
#最后一行添加 作用等同于与 ifconfig eth0:0 10.1.1.100 netmask 255.255.255.0
www.centos1.com IPaddr::10.1.1.100/24/eth0:0
[root@www ha.d]$ cd 
[root@www ~]$ service heartbeat start && chkconfig heartbeat on #启动并自启动

  

5.2、从服务器配置

[root@www ~]$ yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel #安装所需依赖包
[root@www ~]$ tar -xf nginx-1.2.6.tar.gz
[root@www ~]$ useradd -s /sbin/nologin -M nginx
[root@www ~]$ cd nginx-1.2.6
[root@www nginx-1.2.6]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@www nginx-1.2.6]$ make && make install
[root@www nginx-1.2.6]$ echo "22222222" > /usr/local/nginx/html/index.html 
[root@www nginx-1.2.6]$ /usr/local/nginx/sbin/nginx
[root@www nginx-1.2.6]$ yum -y install ntpdate #安装 ntdate 服务
[root@www nginx-1.2.6]$ cd
[root@www ~]$ ntpdate -u 10.1.1.15 #同步 …15 主机的时间

[root@www ~]$ hostname www.centos2.com
[root@www ~]$ vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=www.centos2.com
#注意:修改配置文件需要重启服务器才会生效
[root@www ~]$ vim /etc/hosts #添加以下内容
10.1.1.15 www.centos1.com
10.1.1.16 www.centos2.com
[root@www ~]$ tar -xf heartbeat.tar.gz 
[root@www ~]$ cd heartbeat
[root@www heartbeat]$ yum -y install *
[root@www heartbeat]$ cd /etc/ha.d/
[root@www ha.d]$ scp root@10.1.1.15:/etc/ha.d/authkeys . #将主服务器的配置文件拷贝到本地
[root@www ha.d]$ scp root@10.1.1.15:/etc/ha.d/ha.cf .
[root@www ha.d]$ scp root@10.1.1.15:/etc/ha.d/haresources .
[root@www ha.d]$ service heartbeat start && chkconfig heartbeat on

访问测试
浏览器访问 10.1.1.100 ,然后断开主服务器的网卡,断开网卡会有延迟,稍等一会刷新就可以了
如果断开他的 heartbeat 服务是立马切换,无需等待
如果断开的是 nginx 服务,那就无法实现主从切换

可以写个脚本定时检查,如果发现 nginx 断开,就立马断开 heartbeat 服务实现主从切换( 80.sh )

[root@www ~]$ mkdir /usr/local/script
[root@www ~]$ vim /usr/local/script/80.sh
#!/bin/bash

PWD=/usr/local/script
#脚本所在目录
URL="http://10.1.1.15/index.html"
#当前服务器要检测的IP地址
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`

if [ $HTTP_CODE != 200 ]
        then
                service heartbeat stop
fi
[root@www ~]$ bash /usr/local/script/80.sh 
#可以设置成定时任务,

六、多级负载(四层+七层)

实验环境

六台服务器

10.1.1.11-LVS-DR(centos7)
10.1.1.12-Nginx (centos7)
10.1.1.13-Nginx (centos7)
10.1.1.14-Apache-1 (centos6)
10.1.1.15-Apache-2 (centos6)
10.1.1.16-Apache-3 (centos6)
操作系统不影响实验
配置好 IP地址
搭建本地 yum 源
全部关闭防火墙与 selinux 与 NetworkManager网卡守护进程

  

6.1、搭建 Apache 服务 ( 14、15、16 IP地址的主机)

  
6.1.1 Apache-1

[root@server4 ~]$ yum -y install httpd #安装 httpd 服务
[root@server4 ~]$ echo "www.apache.com-1" > /var/www/html/index.html #编写默认网页
[root@server4 ~]$ service httpd start && chkconfig httpd on #启动并自启动 httpd

  
6.1.2 Apache-2

[root@server5 ~]$ mkdir /mnt/cdrom/
[root@server5 ~]$ mount /dev/sr0 /mnt/cdrom/
[root@server5 ~]$ yum -y install httpd
[root@server5 ~]$ echo "www.apache.com-2" > /var/www/html/index.html
#网页内容不一致,为了看到是实验效果(生产环境保持一致)
[root@server5 ~]$ service httpd start && chkconfig httpd on

  
6.1.3 Apache-3

[root@server6 ~]$ mkdir /mnt/cdrom/
[root@server6 ~]$ mount /dev/sr0 /mnt/cdrom/
[root@server6 ~]$ yum -y install httpd
[root@server6 ~]$ echo "www.apache.cn" > /var/www/html/index.html
[root@server6 ~]$ service httpd start && chkconfig httpd on

6.2、搭建 Nginx 服务 (12、13IP地址的主机)

  
6.2.1 Nginx-1
上传所需的软件包(上面 HearBeat+Nginx 下有)

[root@server2 ~]$ scp nginx-1.2.6.tar.gz root@10.1.1.13:/root #将软件包传到另一台 Nginx 服务器
[root@server2 ~]$ systemctl stop NetworkManager && systemctl disable NetworkManager #关闭网卡守护
[root@server2 ~]$ yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel #安装所需依赖包
[root@server2 ~]$ tar -xf nginx-1.2.6.tar.gz #解压 Nginx 软件包
[root@server2 ~]$ cd nginx-1.2.6 #进入解压后目录
[root@server2 nginx-1.2.6]$ useradd -s /sbin/nologin -M nginx #创建一个不可远程登录 -M不创建家目录的用户
[root@server2 nginx-1.2.6]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx #检测环境编译前准备,指定用户与组
[root@server2 nginx-1.2.6]$ make && make install #编译安装
[root@server2 nginx-1.2.6]$ cd 
[root@server2 ~]$ vim /usr/local/nginx/conf/nginx.conf #配置 Nginx 反向代理的 Apache 服务器
	……
   #配置 .com 负载均衡
	upstream apache.com {
        server 10.1.1.14:80;
        server 10.1.1.15:80;
   }
   #配置 .cn 负载均衡
    upstream apache.cn {
        server 10.1.1.16:80;
   }
   #一个 server标签就是一个网站
    server {
        listen       80;
        server_name  www.apache.com;

        location / { #反向代理服务器
                proxy_pass http://apache.com;
       					}
}
    server {
        listen       80;
        server_name  www.apache.cn;

        location / { #反向代理服务器
                proxy_pass http://apache.cn;
	        			}
}

[root@server2 ~]$ /usr/local/nginx/sbin/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@server2 ~]$ /usr/local/nginx/sbin/nginx #启动 Nginx

  
6.2.2 Nginx-2

[root@server3 ~]$ systemctl stop NetworkManager && systemctl disable NetworkManager
[root@server3 ~]$ yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel
[root@server3 ~]$ tar -xf nginx-1.2.6.tar.gz 
[root@server3 ~]$ cd nginx-1.2.6
[root@server3 nginx-1.2.6]$ useradd -s /sbin/nologin -M nginx
[root@server3 nginx-1.2.6]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@server3 nginx-1.2.6]$ make && make install
[root@server3 nginx-1.2.6]$ cd 
[root@server3 ~]$ vim /usr/local/nginx/conf/nginx.conf
	……
   #配置 .com 负载均衡
	upstream apache.com {
        server 10.1.1.14:80;
        server 10.1.1.15:80;
   }
   #配置 .cn 负载均衡
    upstream apache.cn {
        server 10.1.1.16:80;
   }
   #一个 server 标签就是一个网站
    server {
        listen       80;
        server_name  www.apache.com;

        location / { #反向代理服务器
                proxy_pass http://apache.com;
       					}
}
    server {
        listen       80;
        server_name  www.apache.cn;

        location / { #反向代理服务器
                proxy_pass http://apache.cn;
	        			}
}
[root@server3 ~]$ /usr/local/nginx/sbin/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@server3 ~]$ /usr/local/nginx/sbin/nginx 

6.2.3 访问测试 (检查 Nginx 是否可用)
修改 C:\Windows\System32\drivers\etc\hosts 文件 生产环境搭建需要搭建 DNS
如果修改保存不了https://blog.csdn.net/weixin_44642304/article/details/90139316

#10.1.1.12 www.apache.com
#10.1.1.12 www.apache.cn
10.1.1.13 www.apache.com
10.1.1.13 www.apache.cn

浏览器访问测试 www.apache.comwww.apache.cn 会出现 apache 服务器的内容
10.1.1.1210.1.1.13 都要测试

  

6.3、搭建 LVS 负载调度器(10.1.1.11)

6.3.1 开启并配置子接口
#可以使用 ifconfig ens33:0 10.1.1.100 netmask 255.255.255.0 命令配置子接口

[root@server1 ~]$ systemctl stop NetworkManager && systemctl disable NetworkManager #关闭并永久关闭网卡守护
[root@server1 ~]$ cd /etc/sysconfig/network-scripts/ #进入网卡配置目录
[root@server1 network-scripts]$ cp -a ifcfg-ens33 ifcfg-ens33:0 #拷贝子接口文件
[root@server1 network-scripts]$ vim ifcfg-ens33:0
#修改配置与下列一致
BOOTPROTO=static #静态获取 IP
DEVICE=ens33:0 #网卡名称
ONBOOT=yes #启用
IPADDR=10.1.1.100 #IP地址
PREFIX=24 #掩码
[root@server1 network-scripts]$ cd
[root@server1 ~]$ ifup  ens33:0 #启动子接口

  
6.3.2 修改内核配置文件

[root@server1 ~]$ vim /etc/sysctl.conf
#在末尾添加
net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.default.send_redirects = 0 
net.ipv4.conf.ens33.send_redirects = 0
#注意:这里的网卡名称,centos 7 是 ens33 ,centos 6 是 eth0
[root@server1 ~]$ sysctl -p #重新加载内核配置文件

  
6.3.3 安装 ipvsadm 并添加 ipvs 规则

[root@server1 ~]$ yum -y install ipvsadm #安装 ipvsadm 服务
[root@server1 ~]$ ipvsadm -v 查看 ipvs 集群内容
[root@server1 ~]$ ipvsadm -A -t 10.1.1.100:80 -s rr
#添加一个 ipvs TCP 集群, -A 添加一个集群,-t TCP协议,-s 指定算法,rr轮询算法
[root@server1 ~]$ ipvsadm -a -t 10.1.1.100:80 -r 10.1.1.12:80 -g
#添加 ipvsadm 集群子节点,-a 集群子节点,-t TCP协议,-r 真实服务器,-g DR模式
[root@server1 ~]$ ipvsadm -a -t 10.1.1.100:80 -r 10.1.1.13:80 -g
[root@server1 ~]$ ipvsadm -Ln #查看集群, 加上 --stats 查看轮询的分配
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.1.100:80 rr
  -> 10.1.1.12:80                 Route   1      0          0         
  -> 10.1.1.13:80                 Route   1      0          0     

6.4、搭建LVS-DR 真实服务器(12、13IP地址的主机)

  
6.4.1 Nginx-1

开启并配置回环网卡子接口

[root@server2 ~]$ cd /etc/sysconfig/network-scripts/
[root@server2 network-scripts]$ cp -a ifcfg-lo ifcfg-lo:0
[root@server2 network-scripts]$ vim ifcfg-lo:0
#修改内容如下
DEVICE=lo:0
IPADDR=10.1.1.100
NETMASK=255.255.255.255
[root@server2 network-scripts]$ ifup lo:0

  
修改内核文件

[root@server2 network-scripts]$ cd 
[root@server2 ~]$ vim /etc/sysctl.conf
#在末尾添加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@server2 ~]$ sysctl -p

  
添加路由记录,并开启自启动

[root@server2 ~]$ route add -host 10.1.1.100 dev lo:0
#添加 10.1.1.100 的VIP地址交给 lo:0 网卡处理  
[root@server2 ~]$ echo "route add -host 10.1.1.100 dev lo:0" >> /etc/rc.local #开启自启

  
6.4.2 Nginx-2
开启并配置回环网卡子接口

[root@server3 ~]$ cd /etc/sysconfig/network-scripts/
[root@server3 network-scripts]$ cp -a ifcfg-lo ifcfg-lo:0
[root@server3 network-scripts]$ vim ifcfg-lo:0
#修改一下内容
DEVICE=lo:0
IPADDR=10.1.1.100
NETMASK=255.255.255.255

[root@server3 network-scripts]$ ifup lo:0

  
修改内核配置文件

[root@server3 network-scripts]$ cd 
[root@server3 ~]$ vim /etc/sysctl.conf
#在末尾添加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@server3 ~]$ sysctl -p

  
添加路由记录

[root@server3 ~]$ route add -host 10.1.1.100 dev lo:0
[root@server3 ~]$ echo "route add -host 10.1.1.100 dev lo:0" >> /etc/rc.local

到此多级负载就已经搭建完成了

访问测试

修改 C:\Windows\System32\drivers\etc\hosts 文件 生产环境搭建需要搭建 DNS
#把之前的写的IP地址删除或注释
10.1.1.100 www.apache.com
10.1.1.100 www.apache.cn

浏览器访问两个域名进行测试

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

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值