负载均衡集群、高可用集群详解,DR、NAT超详细搭建步骤

集群概述

流量相关:

    PVPV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量。具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多少次。PV是指页面刷新的次数,每一次页面刷新,就算做一次PV流量。

    UVUV(Unique Visitor)独立访客,统计1天内访问某站点的用户数(以cookie为依据);访问网站的一台电脑客户端为一个访客。可以理解成访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。如果用户不保存cookies访问、清除了cookies或者更换设备访问,计数会加1。00:00-24:00内相同的客户端多次访问只计为1个访客。

    IPIP可以理解为独立IP的访问用户,指1天内使用不同IP地址的用户访问网站的数量,同一IP无论访问了几个页面,独立IP数均为1。但是假如说两台机器访问而使用的是同一个IP,那么只能算是一个IP的访问。

一般情况:PV > UV > IP

拓展:

    IP和UV之间的数据不会有太大的差异,通常UV量和比IP量高出一点,每个UV相对于每个IP更准确地对应一个实际的浏览者。

UV大于IP

    这种情况就是在网吧、学校、公司等,公用相同IP的场所中不同的用户,或者多种不同浏览器访问您网站,那么UV数会大于IP数。

UV小于IP

    在家庭中大多数电脑使用ADSL拨号上网,所以同一个用户在家里不同时间访问您网站时,IP可能会不同,因为它会根据时间变动IP,即动态的IP地址,但是实际访客数唯一,便会出现UV数小于IP数。

性能扩展:

垂直扩展(纵向扩展)

    为同样的计算资源池加入更多资源,比如增加更多内存、磁盘或是虚拟cpu,来应对增加的应用负载,典型案例:对称多处理机(SMP)

水平扩展(横向扩展)

    需要向计算平台加入更多的机器或设备,来处理增长的需求。

2.集群概述

什么是集群?

    集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

    通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

    简单总结为:一组协同工作但对外表现为一个整体的服务器组

集群系统的优点:

    高可扩展性:如上所述,可以通过增加服务器数量达到性能扩展。

    高可用性:集群中的一个节点失效,它的任务可以传递给其他节点。可以有效防止单点故障。

    高性能:负载均衡集群允许系统同时接入更多的用户。

    高性价比:可以采用廉价的硬件服务器构造高性能的系统。

拓展:负载和分布式的区别?

    饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是负载均衡。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是负载均衡

高可用性:提升网站持续运行的运行方式,当主服务器出现故障,备用服务器可以替代主服务器进行工作

3.集群的分类:

LBC:负载均衡集群

HAC:高可用性集群

HPC:高性能计算集群(科学计算集群)

LBC(load balancer Cluster):负载均衡集群

概念:由两个或两个以上的服务实体协调、配合完成一系列工作的模式,对外表现为一个整体。

目的:提高业务性能,降低单台服务器压力

特性:不同节点之间相互独立,不共享任何硬件资源;通过一定算法将客户端的访问请求分配到群集的各个节点上,充分利用每个节点的资源。负载均衡扩展了网络设备和服务器带宽,增加吞吐量,加强网络数据处理能力。

实现方式:

    硬件:单独的硬件设备(独立专门的操作系统)F5(BigIP) A10(Thunder系列) redware

    软件:DNS、LVS、Nginx、RAC、Haproxy等

        LVS:是Linux Virtual Server的缩写,名为Linux虚拟服务器,中国最早的纳入Linux内核的应用层程序

        RAC:是real application clusters的缩写,名为实时应用集群,是Oracle 的负载调用软件

    说明:

        DNS将同一个域名解析为多个不同IP(最早的负载均衡方案)

        缺点:DNS的解析缓存造成任务分配不均,导致单个服务器压力过大。

    无法实现健康状态检查、缓存dns无法实现分配用户请求

dns轮训解析:

算法:

    RR(Round-Robin):轮询

    WRR(wight-Round-Robin):权重(加权轮询)

结构:

agent     负载调度器

业务层    服务器池

存储        共享存储

层级:

硬件:F5    二层、四层、七层

软件:

四层负载调度器

    LVS RAC

七层负载调度器

    LVS mysql proxy、RAC

    nginx

    haproxy

    区别:

    触发条件不同

四层:工作在传输层,转发数据依靠的是三层的ip和四层的port(效率更高)

七层:工作在应用层。转发数据依靠URL或主机名{FQDN}(针对性更强)

 

实现原理不同

四层负载调度器:TCP连接建立一次,客户端和RS主机之间

七层负载调度器:TCP连接建立两次,客户端和负载调度器;负载调度器和RS主机

应用场景不同

四层负载调度器:TCP应用为主     应用:OA、ERP

七层负载调度器:以HTTP协议为主,根据用户访问页面进行判断调度

安全性不同

四层负载调度器:转发SYN攻击

七层负载调度器:拦截SYN攻击

LVS工作原理:ipvs/ipvsadm

IPVS:钩子函数,内核机制,在请求没有到达目的地址之前,捕获并取得优先控制权的函数。

IPVSADM:工作在用户空间,负责为ipvs内核框架编写规则,定义谁是集群服务,谁是后端真实的服务器

名词:

CIP:客户端IP

DIP:负载调度器IP

VIP:集群IP

RIP:真实服务器IP

工作模式:

NAT    地址转换模式

 

工作流程:

    1. 客户端将请求交给负载调度器,客户端发出数据包,此时这个数据包的源ip为CIP,目标ip为VIP(集群ip)
    2. 数据包到达负载调度器后,修改数据包的目标ip地址为真实服务器的ip,此时数据包的源ip为CIP,目标ip为RIP
    3. 将数据包发送给RS,之后RS响应将数据包发回给负载调度器,此时数据包的源ip为RIP,目标ip为CIP
    4. 负载调度器在转发时,会将源ip地址改为自己的VIP地址,然后再发给客户端,此时数据包的源ip为VIP,目标ip为CIP。

特点

    1. 负载调度器和真实服务器,必须位于同一网络
    2. 真实服务器的网关必须指向DIP
    3. 负载调度器必须位于客户端和真实服务器之间
    4. RIP通常都是私有地址,仅用于各个集群节点通信
    5. 支持端口映射
    6. 真实服务器可以使用任意操作系统、负载调度器必须是LINUX系统

缺点

所有数据报文都要经过负载调度器、压力过大

DR:路由模式

实现原理 

工作流程:

    1. 客户端发出数据包,源ip是CIP,目标ip是VIP
    2. 依靠路由把数据发送给负载调度器,负载调度器将数据包的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,此时源ip和目标ip均未修改。
    3. 由于DS和RS在同一网络中,所以通过二层来传输,通过路由再将数据包发到RS
    4. RS接收数据包,之后通过lo接口传送给eth0向外发出,此时的源ip是VIP,目标ip为CIP。
    5. 最后通过路由发给客户端。

    特点

    1. 负载调度器和真实服务器,必须位于同一网络
    2. 真实服务器的网关必须指向路由器
    3. 负载调度只处理入站请求
    4. RIP可以是私有地址,也可以是公网地址
    5. 真实服务器可以使用任意操作系统,负载调度器必须是LINUX系统

    优点:负载调度器压力较小,支持100台左右的RS

    缺点:配置相对复杂

TUN:隧道模式

实现原理

 

工作流程:

    1. 客户端发送数据包到负载调度器,此时数据包的源ip为CIP,目标ip为VIP。
    2. 负载调度器会在数据包的外面再次封装一层ip数据包,封装源ip为DIP,目标ip为RIP。此时源ip为DIP,目标ip为RIP。
    3. 之后负载调度器将数据包发给RS(因为在外层封装多了一层ip首部,所以可以理解为此时通过隧道传输),此时源ip为DIP,目标ip为RIP。
    4. RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP。
    5. 之后将数据包发给客户端。

    特点

    1. 所有真实服务器节点既要有RIP,又要有VIP,并且RIP、必须是公网ip
    2. 负载调度器和真实服务器必须支持隧道功能
    3. 负载调度器只处理入站请求
    4. 真实服务器一定不能使用负载调度集群做默认网关
    5. 不支持端口映射

优点:可跨互联网搭建集群

缺点:对网络环境要求较高

负载调度器算法

静态算法:只考虑算法本身,不考虑服务器状态

rr(轮循):从1开始到n结束

wrr(加权轮循):按权重比例进行调度,权重越大,负责的请求越多

sh(源地址hash):实现会话绑定,保留之前建立的会话信息。将来自于同一个ip地址的请求发送给一个真实服务器。 

dh(目标地址hash):将同一个目标地址的请求,发送给同一个服务器节点。提高缓存命中率

动态算法:既要考虑算法本身,也要考虑服务器状态(原理:通过hash表记录连接状态----active/inactive)

LC(最少连接):将新的连接请求分配给当前连接数最少的服务器。     公式:活动连接*256+非活动连接

WLC(加权最少连接):最少连接的特殊模式。        公式:(活动连接*256+非活动连接)/权重

SED(最短期望延迟):加权最少连接的特殊模式。    公式:(活动连接 +1)*256/权重

NQ    (永不排队):sed的特殊模式,当某台真实服务器连接为0时,直接分配,不计算

LBLC(基于局部性的最少连接):dh的特殊模式,既要提高缓存命中率,又要考虑连接数量。先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

LBLCR(带复制的基于局部性的最少连接):LBLCR=LBLC+缓存共享机制

高可用集群(HA High availability Cluster)

目的:最大限度的保证用户的应用程序持久、不间断的提供服务。(故障转移)

高可用性(HA,High Availablity)是指通过尽量缩短系统停机时间(因日常的维护操作或突发的系统崩溃等),以提高系统和应用的可用性。一般是2个节点做出的HA集群,有很多通俗不科学的名称,比如“双机热备”,“双机互备”。 这样做的好处是当服务启动的时候,两台服务器一个作主(ser1),另外一个作从(ser2)。测试机每几秒会ping主机,当发现主机没有回应,就证明主机拓机了,那么从机马上会启动相应的服务,继续进行服务。这样就可保证服务部间断。

最大限度:

    99%             87.6h

    99.9%        8.8h

    99.99%        53m

    99.999%        5m

故障切换:

心跳检测:RS232串口线:串行电缆被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。

双机备份软件:Rose Haproxy  Keepalived  Heartbeat

特殊:

    脑分裂:在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的“脑裂”,造成数据不完整,服务不可访问

解决:

    设置参考ip,抢夺资源之前,都去ping参考ip(网关),ping不通时,不去抢资源,而是释放资源,将控制权交出去;设置冗余线路,设置两条心跳线,两个网卡,第一个测时不同,再拿第二个去测。

stonish(shoot the other node in the head 爆头):基于能够通过软件指令关闭某节点特殊的硬件设备,掐电源。

keepalive概述:

    案例环境专为LVS和HA设计的一款健康检查工具

    支持故障自动切换

    支持节点健康状态检查

    主备模式,共用同一个IP地址,但优先级不同

端口汇聚:

将多张网卡汇聚为一张虚拟网卡,当其中某张网卡故障,只会影响部分性能

防火墙规则:

实际:五表五链结构(常用:四表五链)

当前学习:一表五链

filter表五链:用于入口处、出口处、转发时,(iptables -L查看)

#在这三个位置设置规则,对数据包后续能否传输做规则限制

nat表五链:路由前、路由后、出口处(iptables -L -t nat查看)

#在这三个位置设置数据包的转发机制{源地址或目标地址的转换}

route add default gw 网关ip

route add -net 网段 gw 网关ip dev 网卡名 :去某个网关固定使用某张网卡

拓展-故障转移

主服务器

备用服务器1

备用服务器2

监控服务器是否正常工作的进程一般有多个,并且进程的数量是奇数个

主观下线判断:第一个发现故障的进程

客观下线判断:被第一个进程通知后发现的

通过监控进程得票为多数的,判断是否爆头主服务器

负载均衡(LVS)集群NAT实验

构建NAT模式的负载均衡集群

实验环境

 

网络图谱:

       客户机:192.168.117.104(公网,注意切换NAT网,使用ens34的话必须关闭ens33)

          路由:192.168.117.103

负载调度器:192.168.117.103(VIP即集群IP)

                    192.168.9.103(局域网)

     服务器1:192.168.9.101(局域网)

          路由:192.168.9.103

     服务器2:192.168.9.102(局域网)

          路由:192.168.9.103

注意:集群IP指的是192.168.117.103(客户机路由IP),此IP为将数据传递至服务器的IP

准备工作:将网卡、网关配置如图所示,并测试内网能否ping通外网

负载调度器上开启路由转发功能

#修改系统配置文件开启路由转发

  • CentOS6:

vim /etc/sysctl.conf

    #修改01

    net.ipv4.ip_forward=1

  • CentOS7:

vim /usr/lib/sysctl.d/50-default.conf

    #添加下行配置

    net.ipv4.ip_forward=1

 

systemctl restart network

安装和配置

1. 两个real server 上都要安装httpd 服务

yum -y install httpd

 

2. 在负载调度器的机器上搭建nfs实现共享(主要是为了节省一台机器,才选择搭在有两个网卡的机器上)

#实际应用时两台服务器资源相同,此处实验为了做区分设置为不同网页

 

3. 在RS1上配置网站

systemctl start httpd

systemctl enable httpd

echo "hello 101" >> /var/www/html/index.html

4. 在RS2上配置网站(此处为了看到负载均衡的效果,网页下的内容要有区别,so不用共享文件了,要自己创建首页文件)

systemctl start httpd

systemctl enable httpd

echo "hello 102" >> /var/www/html/index.html

5. 两个real server的内网网关设置为负载调度器的内网ip

#在生产环境中要写成永久配置

6. 配置负载调度器

    1) 查看是否支持ipvs

#如果做过内核版本升级可能存在多个文件,需查看最新的版本

grep -i "ipvs" /boot/config-3.10.0-957.el7.x86_64

=m代表支持

2)安装ipvsadm工具,用rpm安

yum -y install ipvsadm

3)创建集群-指定vip

#lvs默认没有配置文件

查看:ipvsadm -ln

创建:ipvsadm -A -t 集群IP:端口 -s rr

#-A 创建集群

#-t 指定集群的VIP和port

#-s 集群的算法

#rr 直接轮询

修改:ipvsadm -E -t 集群IP:端口 -s wrr

-E 修改集群的信息,如:修改算法

删除:ipvsadm -D -t 集群IP:端口

-D 删除指定集群

4)向集群内添加服务器,组件服务器或服务器池

#需要把服务器1和服务器2都添加到集群

添加:ipvsadm -a -t 集群IP:80 -r 真实服务器IP:端口 -m

#-a 向某个已存在的集群内添加服务器

#-t 指定向哪个已存在的集群内添加服务器

#-r 指定真实服务器的IP和端口

#-m 声明为NAT模式

修改:ipvsadm -e -t 集群IP:80 -r 真实服务器IP:端口 -m

#-e 修改集群内某一真实服务器的信息

删除:ipvsadm -d -t 集群IP:80 -r 真实服务器IP:端口 -m

#-d 删除集群内的某一个真实服务器

没有专门的配置文件不需要保存

5)修改权重(实验无需操作):

ipvsadm -E -t 192.168.117.93:80 -s wrr

ipvsadm -e -t 集群IP:80 -r 真实服务器IP:端口 -m -w 2

7. 测试(实现刷新一次变一次)

使用浏览器多次刷新,通过页面查看是否进行了负载均衡调度

服务器上可以使用ipvsadm –ln 来查看两台真实机处理的请求次数

8. 拓展-修改算法

使用ab命令进行压测

yum -y install httpd-tools

ab -c 100 -n 1000 http://192.168.117.93:80/index.html

-c 指定并发数量

负载均衡(LVS)集群DR实验

构建DR模式的负载均衡集群

负载调度器压力减少,软件级负载更适用

补充:真实服务器需要配置lo网卡子接口,ip为VIP(集群IP)

拓展

ARP   

arp_annouce    通告

0    将本机任何接口上的任何地址都向外通告

1    尽可能避免向目标网络通告其网络不匹配的地址信息

2    仅向目标网络通告与其网络匹配的地址信息

arp_ignore    响应

0    只要本机配置有该ip就响应

1    仅在请求的目标地址配置在请求到达的接口上时,才给予响应。

实验环境:

测试机

ens33 192.168.117.100  gw 192.168.117.101

路由器

ens33 192.168.9.101

ens34 192.168.117.101

负载调度器   

ens33  192.168.9.102(DIP,负载调度器IP)  gw  192.168.9.101

ens33:0 192.168.9.200(VIP)

真实服务器1

ens33 192.168.9.103    gw 192.168.9.101

真实服务器2

ens33 192.168.9.104    gw 192.168.9.101

#修改系统配置文件开启路由转发

  • CentOS6:

vim /etc/sysctl.conf

    #修改01

    net.ipv4.ip_forward=1

  • CentOS7:

vim /usr/lib/sysctl.d/50-default.conf

    #添加下行配置

    net.ipv4.ip_forward=1

systemctl restart network

安装和配置

1. 两个real server 上都要安装网站服务

yum -y install httpd

systemctl start httpd

2. Director Server(负载调度器)装上安装ipvsadm

yum -y install ipvsadm

3. 配置DS

a. 添加集群的虚拟接口vip

vim /etc/sysconfig/network-scripts/ifcfg-ens33

复制所有内容

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

复制并修改内容

b. 优化配置(关闭路由重定向)

centos7

vim /usr/lib/sysctl.d/50-default.conf

centos6

vim /etc/sysctl.conf

添加下面内容,关闭ip地址的目标地址转换

net.ipv4.conf.all.send_redirects = 0

重启网卡

systemctl restart network

c. 配置负载调度器

ipvsadm -A -t 192.168.9.200:80 -s rr

ipvsadm -a -t 192.168.9.200:80 -r 192.168.9.103:80 -g

ipvsadm -a -t 192.168.9.200:80 -r 192.168.9.104:80 -g

构建集群-并添加服务器到集群中,查看路由情况

ipvsadm -ln

4. 配置RS1

    添加虚拟网卡接口

cd /etc/sysconfig/network-scripts/

cp -a ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

修改内容:

DEVICE=lo:0

IPADDR=192.168.9.200

NETMASK=255.255.255.255

优化配置-调整内核参数

vim /usr/lib/sysctl.d/50-default.conf

添加内容:

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

systemctl restart network

添加路由策略

route add -host 192.168.9.200 dev lo:0

route -n

设置开机启动

vim /etc/rc.local

route add -host 192.168.9.200 dev lo:0

创建首页文件

echo "hello1">> /var/www/html/index.html

5. 配置RS2

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

复制rs服务器1的内容

优化配置-调整内核参数

vim /usr/lib/sysctl.d/50-default.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

systemctl restart network

添加路由策略

route add -host 192.168.9.200 dev lo:0

route -n

设置开机启动

vim /etc/rc.local

route add -host 192.168.9.200 dev lo:0

创建首页文件

echo "hello2">> /var/www/html/index.html

6. 设置防火墙规则

路由器上设置

iptables -t nat -A PREROUTING -i ens34 -d 192.168.117.101 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.200:80

查看防火墙规则

iptables -t nat -L

#规则的位置

-t nat #指定规则写在哪张表里

-A PREROUTING #-A 追加一条规则 PREROUTING路由前 判断时机

-i ens33 #判断数据包的入站网卡 {-i:input -o:output}

-d IP地址 #判断数据包的源地址或目标地址{-d 目标地址|s 源地址 }

-p 协议 #判断此数据包是什么类型协议进行的传输

--dport 端口 #判断数据的目标端口或源端口{--sport | --dport}

注意事项:协议可以独立作为一个判断条件,但端口不可以,端口一般伴随着协议一起写

dns 端口53

udp 处理客户端请求

tcp  做主从同步

#判断之后的处理方案

-j DNAT #数据包处理的一种方案{ACCEPT | REJECT | DROP | DNAT | SNAT}

SNAT | DNAT 还会有后续选项,指明转换后地址

7、测试机测试

curl 192.168.9.200

curl 192.168.117.101

高可用集群实验

20211027

21:11

高可用集群实验:在DR模式基础上添加一个备用负载调度器

实验环境:

测试机

ens33 192.168.117.100  gw 192.168.117.101

路由器

ens33 192.168.9.101

ens34 192.168.117.101

负载调度器1

ens33  192.168.9.102(DIP,负载调度器IP)  gw  192.168.9.101

ens33:0 192.168.9.200(VIP:集群IP)

负载调度器2

ens33  192.168.9.106(DIP,负载调度器IP)  gw  192.168.9.101

ens33:0 192.168.9.200(VIP)

真实服务器1

ens33 192.168.9.103    gw 192.168.9.101

真实服务器2

ens33 192.168.9.104    gw 192.168.9.101

实验搭建(源码安装)

    主负载调度器:配置ens33:0网卡

cp -a /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0

配置网卡为集群IP并启动

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

IPADDR=192.168.9.200

NAME=ens33:0

DEVICE=ens33:0

ifup ens33:0

在主负载调度器上,配置集群

yum -y install keepalived

vim /etc/keepalived/keepalived.conf

删除全部,直接粘贴修改:

! Configuration File for keepalived

global_defs {

        router_id R1    #服务器名称

}

vrrp_instance VI_1 {   

    state MASTER        #表示主服务器

    interface ens33     #使用的网卡

    virtual_router_id 51

    priority 100        #优先级,数值越大优先级越高,从服务器40即可

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.9.200  #指定负载调度器的VIP

    }

}

virtual_server 192.168.9.200 80 {  #调度服务器IP

    delay_loop 6

    lb_algo rr

    lb_kind DR         #工作模式

    persistence_timeout #访问延迟时间

    protocol TCP

   

    real_server 192.168.9.103 80 #真实服务器1IP

        weight 1

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }  

    real_server 192.168.9.104 80 {  #真实服务器2IP

        weight 1

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }  

    }

#注意:NAT模式客户端无需设置,DR模式需要配置配置真实服务器

配置真实服务器

    添加虚拟网卡接口

cd /etc/sysconfig/network-scripts/

cp -a ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

修改内容:

DEVICE=lo:0

IPADDR=192.168.9.200

NETMASK=255.255.255.255

优化配置-调整内核参数

vim /usr/lib/sysctl.d/50-default.conf

添加内容:

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

systemctl restart network

添加路由策略

route add -host 192.168.9.200 dev lo:0

route -n

设置开机启动

vim /etc/rc.local

route add -host 192.168.9.200 dev lo:0

创建首页文件

echo "hello1">> /var/www/html/index.html

查看并删除当前集群

yum -y install ipvsadm

ipvsadm -ln

ipvsadm -D -t VIP地址:80

查看是否删除

ipvsadm -ln

通过keepalived创建集群

systemctl start keepalived

ipvsadm -ln

systemctl enable keepalived

C6:chkconfig keepalived on

   

备份调度器 – 配置为负载调度器

配置网卡及网关

yum -y install keepalived

vim /etc/keepalived/keepalived.conf

#如果版本不同,除网卡名以外,与主服务器保持一致即可

! Configuration File for keepalived

global_defs {

        router_id R1    #服务器名称

}

vrrp_instance VI_1 {   

    state MASTER        #表示主服务器

    interface ens33     #使用的网卡

    virtual_router_id 51

    priority 100        #优先级,数值越大优先级越高,从服务器40即可

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.9.200  #指定负载调度器的VIP

    }

}

virtual_server 192.168.9.200 80 {  #调度服务器IP

    delay_loop 6

    lb_algo rr

    lb_kind DR         #工作模式

    persistence_timeout #访问延迟时间

    protocol TCP

   

    real_server 192.168.9.103 80 #真实服务器1IP

        weight 1

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }  

    real_server 192.168.9.104 80 {  #真实服务器2IP

        weight 1

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }  

    }

给备用负载调度器配置子接口

cp -a /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

IPADDR=192.168.9.200

NAME=ens33:0

DEVICE=ens33:0

配置IP为VIP,将网卡名改为ens33:0,配置备用负载调度器2的ens33网卡的网关

修改配置文件,使用子网卡能不报错启动(注意修改后只能使用ifup启动)

vim /etc/sysconfig/network-scripts/ifup-eth

显示行号:set nu

跳转n行:ngg

    添加以下注释:

 

ifup ens33:0

注意不能使用systemctl restart network的方式启动

将主负载调度器的冲突检测也关闭

vim /etc/sysconfig/network-scripts/ifup-eth

vim /etc/sysctl.conf

添加下面内容,关闭ip地址的目标地址转换

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

-使内核加载配置

sysctl -p

备用负载调度器同时关闭转发功能

vim /etc/sysctl.conf

添加下面内容,关闭ip地址的目标地址转换

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

-使内核加载配置

sysctl -p

重启网卡

systemctl restart network

ifup ens33:0

ifconfig

创建集群   

yum -y install ipvsadm-1.27-7.el7.x86_64

systemctl start keepalived

查看集群

ipvsadm -ln

测试

测试1:

分别ifdown ens33:0测试

解决延迟问题

真实网络服务器配置

cd /usr/share/doc/httpd-2.4.6/

cp -a httpd-default.conf /etc/httpd/conf.d/

cd /etc/httpd/conf.d/

vim httpd-default.conf

修改KeepAliveTimeout 的值为0

systemctl restart httpd 

源码包nginx

vim /usr/local/nginx/conf/nginx.conf

取消注释:

keepalive_timeout 0;

注释掉:

keepalive_timeout 65;

pkill -HUP nginx                         #平滑重启

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
负载均衡高可用web集群是一种常见的架构模式,旨在提高应用程序的可用性和性能。它通常由多个服务器节点组成,这些节点共同处理来自客户端的请求,并通过负载均衡器分配负载。以下是实现负载均衡高可用web集群的一般步骤: 1. 配置负载均衡器:选择一个适合的负载均衡算法(如轮询、最少连接等),并将负载均衡器配置为监听特定的端口和协议。常见的负载均衡器有Nginx、HAProxy等。 2. 设置服务器节点:建立多个服务器节点来处理客户端请求。这些节点可以是物理服务器或虚拟机,并且最好位于不同的物理位置或云服务提供商中,以增加可用性。 3. 配置健康检查:负载均衡器可以通过定期发送请求来检查服务器节点的健康状况。如果节点无法响应或出现错误,负载均衡器将停止将请求发送给该节点,并将流量转移到其他健康的节点上。 4. 同步会话状态:如果应用程序具有会话状态(例如用户登录信息),则需要确保会话状态在多个服务器节点之间同步。这可以通过使用共享会话存储(如数据库或缓存)来实现。 5. 优化静态内容:将静态内容(如图片、CSS和JavaScript文件)存储在专门的静态文件服务器上,以减轻动态请求对负载均衡器和应用服务器的压力。 6. 监视和扩展:设置监视系统来实时监控整个集群的性能和健康状况。根据负载情况和性能指标,可以动态地扩展集群规模,增加服务器节点数量。 通过以上步骤,您可以实现一个具有负载均衡高可用性的web集群,提供可靠且高性能的服务

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值