集群LVS、KeepAlived

导读:本篇文章讲解 集群LVS、KeepAlived,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、集群

1.1什么是集群

简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。

1.2、集群特性

(1)高性能

一些国家重要的计算密集型应用(如天气预报,核试验模拟等),需要计算机有很强的运算处理能力。以全世界现有的技术,即使是大型机,其计算能力也是有限的,很难单独完成此任务。因为计算时间可能会相当长,也许几天,甚至几年或更久。因此,对于这类复杂的计算业务,便使用了计算机集群技术,集中几十上百台,甚至成千上万台计算机进行计算。

(2)价格有效性

通常一套系统集群架构,只需要几台或数十台服务器主机即可。与动辄价值上百万元的专用超级计算机相比便宜了很多。在达到同样性能需求的条件下,采用计算机集群架构比采用同等运算能力的大型计算机具有更高的性价比。

早期的淘宝,支付宝的数据库等核心系统就是使用上百万元的小型机服务器。后因使用维护成本太高以及扩展设备费用成几何级数翻倍,甚至成为扩展瓶颈,人员维护也十分困难,最终使用PC服务器集群替换之,比如,把数据库系统从小机结合Oracle数据库迁移到MySQL开源数据库结合PC服务器上来。不但成本下降了,扩展和维护也更容易了。

(3)可伸缩性

当服务负载,压力增长时,针对集群系统进行较简单的扩展即可满足需求,且不会降低服务质量。

通常情况下,硬件设备若想扩展性能,不得不增加新的CPU和存储器设备,如果加不上去了,就不得不购买更高性能的服务器,就拿我们现在的服务器来讲,可以增加的设备总是有限的。如果采用集群技术,则只需要将新的单个服务器加入现有集群架构中即可,从访问的客户角度来看,系统服务无论是连续性还是性能上都几乎没有变化,系统在不知不觉中完成了升级,加大了访问能力,轻松地实现了扩展。集群系统中的节点数目可以增长到几千乃至上万个,其伸缩性远超过单台超级计算机。

(4)高可用性

单一的计算机系统总会面临设备损毁的问题,如CPU,内存,主板,电源,硬盘等,只要一个部件坏掉,这个计算机系统就可能会宕机,无法正常提供服务。在集群系统中,尽管部分硬件和软件也还是会发生故障,但整个系统的服务可以是7*24小时可用的。

集群架构技术可以使得系统在若干硬件设备故障发生时仍可以继续工作,这样就将系统的停机时间减少到了最小。集群系统在提高系统可靠性的同时,也大大减小了系统故障带来的业务损失,目前几乎100%的互联网网站都要求7*24小时提供服务。

1.3、集群的种类

计算机集群架构按功能和结构可以分成以下几类:

  • 负载均衡集群,简称LBC或者LB

以提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为目标,获得高并发、高负载的整体性能。LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。

  • 高可用性集群,简称HAC

以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。HA的工作方式包括双工、主从两种模式——双工即所有节点同时在线,主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。

  • 高性能计算集群,简称HPC

 这类集群致力于提供单个计算机所不能提供的强大的计算能力,以提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力.通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。

 1.4、负载均衡集群

 在当今各种互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等的要求越来越高,单台服务器将难以承担所有的访问。除了使用价格昂贵的大型机、专用负载分流设备以外,企业还有另外一种选择来解决难题,就是构建集群服务器——通过整合多台相对廉价的普通服务器,以同一个地址对外提供相同的服务。
 负载均衡集群:以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载的整体性能。

1.5、负载均衡集群的分层结构

集群LVS、KeepAlived

  前端至少有一个负载调度器(load balancer [ˈbælənsər],或称为director),负责接收并分发来自客户机的访问请求;后端由大量真实服务器(real server)构成服务器池(server pool),提供实际的应用服务,整个集群的伸缩性通过增加、删除服务器节点来完成,而这些过程对客户机是透明的;为了保持服务的一致性,所有节点使用共享存储设备。

  •  第一层,负载调度器:这是访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP(virtual IP,虚拟IP)地址,也称为集群IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后平滑替换至备用调度器,确保高可用性。
  •  第二层,服务器池:集群所提供的应用服务(如HTTP)由服务器池承担,其中的每个节点具有独立的RIP(real IP,真实IP)地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等侍错误排除以后再重新纳入服务器池。
  •  第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个集群的统一性,在linux/unix环境中,共享存储可以使用ceph存储或者提供NFS共享服务的专用服务器。

1.6、 负载均衡集群(LB)实现手段

 硬件的实现: F5负载均衡器
 软件的实现: LVS(4层,传输层) ,Nginx(7层,应用层)  haproxy(既可以工作再4层,又可以工作在7层)

2、LVS集群

2.1、LVS(Linux Virtual Server)介绍

LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统。

 LVS工作在一台server上提供Director(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的real server(真正提供服务的主机),从而实现集群环境中的负载均衡。
 LVS工作在ISO模型中的第四层,由于其工作在第四层,因此与iptables类似,必须工作在内核空间上。因此lvs与iptables一样,是直接工作在内核中的,叫ipvs,主流的linux发行版默认都已经集成了ipvs,因此用户只需安装一个管理工具ipvsadm即可。

2.2、 LVS的组成

  LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。
 LVS的核心组件ipvs工作在kernel中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的real server。而另一个组件ipvsadm是工作在用户空间的一个让用户定义ipvs规则的工具。故我们只要在server上装了ipvsadm软件包就可以定义ipvs规则,
而在linux kernel的2.6版本之后kernel是直接支持ipvs的。

2.3、LVS集群工作结构图:

集群LVS、KeepAlived

 2.3.1、负载调度器

调度器(Director): 整个集群对外的最前端主机, 负责接收用户请求, 并且根据相关的调度算法, 将请求转发到后端真实服务器上,而客户端认为服务是来自一个IP地址(我们可称之为VIP虚拟IP地址)上的

 2.3.2、服务器池: Server Pool

真正为用户提供服务的服务器, 每一台服务器就是一台RS[RealServer],执行的服务有WEB、MAIL、FTP和DNS等

2.3.3、共享存储: Shared Storaged

为RS保持相同内容, 提供数据的一致性,也就是说,它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务

2.4、 LVS的专用名词

缩写 名称
调度器 director,dispatcher,balancer
RS Real Server(后端真实提供服务主机)
CIP Client IP(客户访问的IP)
VIP Director Virtual IP(提供外网访问的虚拟IP)
DIP Director IP(虚拟IP主机上的真实IP)
RIP Real Server IP(后端真实提供服务主机的IP)

2.5、LVS负载均衡的算法

  1. 轮叫调度 rr
    均等地对待每一台服务器,不管服务器上的实际连接数和系统负载

  2. 加权轮叫 wrr
    调度器可以自动问询真实服务器的负载情况,并动态调整权值

  3. 最少链接 lc
    动态地将网络请求调度到已建立的连接数最少的服务器上
    如果集群真实的服务器具有相近的系统性能,采用该算法可以较好的实现负载均衡

  4. 加权最少链接 wlc
    调度器可以自动问询真实服务器的负载情况,并动态调整权值
    带权重的谁不干活就给谁分配,机器配置好的权重高

  5. 基于局部性的最少连接调度算法 lblc
    这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

  6. 复杂的基于局部性最少的连接算法 lblcr
    记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

  7. 目标地址散列调度算法 dh
    该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

  8. 源地址散列调度算法 sh
    与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

  9. 最少期望延迟 sed
    不考虑非活动链接,谁的权重大,优先选择权重大的服务器来接收请求,但权重大的机器会比较忙

  10. 永不排队 nq
    无需队列,如果有realserver的连接数为0就直接分配过去

 2.6、LVS负载均衡模式及工作原理

可伸缩网络结构都与需要一个前端负载调度器负责分配。
基于NAT(网络地址转换)的负载均衡技术:

  • NAT路由转发模式(Virtual Server via Network Address Translation)
  • TUN IP隧道模式(Virtual Server via IP Tunneling)
  • DR直接路由模式(Virtual Server via Direct Routing)

 2.6.1、NAT(网络地址映射)

 NAT: 网络地址转换
         DNAT: 目标地址转换  改变的是目标地址
         SNAT: 原地址转换    改变的是源地址
         LVS-NAT 就是使用的SNAT和DNAT完成包的转发

集群LVS、KeepAlived

  负载调度器作为所有服务器节点的网关,即作为客户机的访问集群的入口,也是各节点回应客户机的访问出口。服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
 NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为瓶颈。

注意

  • RS的RIP和Director的DIP必须在同一IP网络
  • RS和DIP应该使用私网地址,且RD的网关要指向DIP
  • 真实服务器的网关必须设置为LVS的ip地址。

 2.6.2、IP Tunneling(IP隧道)

采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用TUN技术后,集群系统的最大吞吐量可以大大提高。但是目前支持TUN 只有Linux系统

 集群LVS、KeepAlived

  IP隧道(IP  TUNNEL):简称TUN模式,负载调度器仅作为客户机的访问入口,各节点通过各自的INTERNET连接直接回应客户机,而不再经过负载调度器。采用开放式的网络结构,服务器节点分散在互联网中的不同位置。具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
 real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有公网IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。

注意

  • TUNNEL 模式必须在所有的 realserver 机器上面绑定 VIP 的 IP 地址
  • TUNNEL 模式的 vip ——>realserver 的包通信通过 TUNNEL 模式,不管是内网和外网都能通信,所以不需要 lvs vip 跟 realserver 在同一个网段内
  • TUNNEL 模式 realserver 会把 packet 直接发给 client 不会给 lvs 了
  • TUNNEL 模式走的隧道模式,一般不用。
  • 需要设置lo接口的VIP不能在公网上出现

 2.6.3、Direct Routing(直接路由)

直接路由(direct routing):简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

集群LVS、KeepAlived

 DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同TUN技术一样,DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。也就是说,在这种结构中,数据从外部到内部真实服务器的访问会通过调度器进来,但是真实服务器对其的应答不是通过调度器出去。即真实服务器可以通过各自的网关或者专用的网关对数据进行外发,从而降低调度器负载。

2.6.4、LVS优点

 1.抗负载能力强,因为lvs工作方式的逻辑是非常简单的,而且工作在网络第4层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。lvs一般很少出现故障,即使出现故障一般也是其他地方(如网卡或内核的承载能力已到上限)出现问题导致lvs出现问题,内存和 cpu方面基本无消耗。
 2.配置性低,这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
 3.工作稳定,因为其本身抗负载能力很强,所以稳定性高,另外各种lvs都有完整的双机热备方案,所以一点不用担心负载衡器本身会出什么问题。
 4.无流量,lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了负载均衡器的IO性能不会受到大流量的影响。
 5.lvs基本上能支持所有应用,因为lvs工作在第4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库等。
 

 2、LVS集群-DR

2.1、DR模式概述

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。DR模式可以极大的提高集群系统的伸缩性。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。DR模式是互联网使用比较多的一种模式

2.2、DR模式实际拓扑图及工作DR方式工作流程图

Lvs-dr的工作原理:Director收到请求,将请求转发给了我们的realserver,但是接下来的工作就是我们的realserver和我们的客户端进行通讯了,所以原理图如下

集群LVS、KeepAlived

 2.3、LVS DR模式工作原理

2.3.1、MAC转换过程

  • 实例场景设备清单

Director调度器IP: 192.168.1.70, VIP : 192.168.1.63

集群LVS、KeepAlived

  •  client基本信息

 IP:192.168.1.101向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下

集群LVS、KeepAlived

  •  Director分发器根据负载均衡算法选择一台active的realserver

(假设是192.168.1.62),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下

集群LVS、KeepAlived

  •  realserver(192.168.1.62)在局域网中收到这个帧,拆开后发现目标IP(VIP)

 与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下

集群LVS、KeepAlived

 总结:

 DR(Direct Routing 直接路由模式)此模式时LVS 调度器只接收客户发来的请求并将请求转发给后端服务器,后端服务器处理请求后直接把内容直接响应给客户,而不用再次经过LVS调度器。LVS调度器只需要将网络帧的MAC地址修改为某一台后端服务器RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即客户端的IP)返回即可,不再经过LVS调度器。
 1)接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;
 2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;
 3)在hash table中记录连接信息。
 lvs-dr做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。数据包、数据帧的大致流向是这样的:client –> VS –> RS –> client

 2.4、DR模式特点

集群LVS、KeepAlived

  •  保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS(解决方法:在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server)
  • RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
  • RS跟Director Server必须在同一个物理网络中
  • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
  • 不支持地址转换,也不支持端口映射
  • RS可以是大多数常见的操作系统
  • RS的网关绝不允许指向DIP(因为我们不允许他经过director)
  • RS上的lo接口配置VIP地址
  •  缺陷:唯一的缺陷在于它要求LVS 调度器及所有应用服务器在同一个网段中,因此不能实现集群的跨网段应用。

3、配置LVS-DR集群

实验拓扑图

集群LVS、KeepAlived

 

三台虚拟机:

VIP(虚拟IP地址):192.168.30.200/24

其中director做负载调度器:

ens33:172.16.30.11/24   ens37:  192.168.30.11/2

WEB节点1(rs01): ens33: 172.16.30.12/24

WEB节点2(rs02): ens33: 172.16.30.13/24

3.1、负载调度IP配置

从lvs-dr模式来讲负载调度器ens33有2个IP地址,所以我们需要配置ens33和ens33:0(子接口)两个IP

DIP===ens33=== 172.16.30.11        VIP===ens33:0=== 192.168.

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

 配置以下信息:

IPADDR= 192.168.30.11
NETMASK=255.255.255.0

3.2、生成ens33:0 配置文件

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

修改以下部分

  1. NAME=ens33:0

  2. DEVICE=ens33:0

  3. IPADDR=192.168.30.200 #使用空闲IP不能被占用

  4. PREFIX=24

重启网卡

systemctl restart network

查看是否有ens33和ens33:0

ifconfig

 集群LVS、KeepAlived

 3.3、配置LVS-DR规则

LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。以下操作可以手动加载ip_vs模块,并查看当前系统中ip_vs模块的版本信息

 modprobe ip_vs   #加载ip_vs模块

lsmod | grep ip_vs   #查看已加载系统模块信息

 集群LVS、KeepAlived

 

 安装 ipvsadm  ipvs管理工具包

yum -y install ipvsadm

 使用ipvsadm创建负载分配策略:

清除策略:清除内核虚拟服务器表中的所有记录

ipvsadm -C

创建ipvs规则:

创建虚拟服务器,集群的VIP地址为192.168.30.200,针对tcp 的 80端口提供负载分流服务,使用的调度算法为轮询(rr 代表轮循算法)

ipvsadm -A -t 192.168.30.200:80 -s rr

 选项:

-A 创建集群

-t 指定 VIP地址及TCP端口

-s 指定调度算法 rr(轮询)、wrr(加权轮询)、lc (最少连接)、wlc(加权最少连接)

添加服务器节点:

ipvsadm -a -t 192.168.30.200:80 -r  192.168.30.12:80 -g -w 1
ipvsadm -a -t 192.168.30.200:80 -r  192.168.30.13:80 -g -w 1

选项:

-a 添加服务器的地址

-r 指定服务器的 IP 地址和端口

-g  表示route 也就是DR方式的LVS,(-m: NAT模式、-i:TUN模式)

-w 设置权重 (权重为0时表示暂停节点)

保存配置或规则:

要停止selinux,否则策略不会被保存

LVS的规则配置文件:/etc/sysconfig/ipvsadm

设置永久生效:

 #保存以上配置

ipvsadm --save > /etc/sysconfig/ipvsadm

当系统下次启动时会自动读取文件配置的规则

设置ipvsadm设置为开机自启:

 systemctl enable  ipvsadm –now   #设置开启自启同时启动 ipvsadm

 查看负载均衡策略:

ipvsadm -Ln

集群LVS、KeepAlived

 

 3.4、两台 RealServer的IP配置:

rs01主机配置IP

1)关闭APP转发(两台rs 操作一样)

同一个广播域: 配置了多个相同的VIP 是不允许的, 要想实现,就必须让外面的网络, 无法发现这个VIP的存在。因此在Linux里面, 可以修改内核参数, 实现接口IP的广播不响应、不广播

arp_ignore = 1 表示只回答目标 IP 是访问本地网络对应接口的arp请求

arp_announce = 2  只宣告本机网卡直连网络所在的ip的arp广播

echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore

echo 2 >  /proc/sys/net/ipv4/conf/ens33/arp_announce

 永久生效:(注意网卡名称)

vim /etc/sysctl.conf    

在末尾添加以下信息 


  1. net.ipv4.conf.ens33.arp_ignore = 1

  2. net.ipv4.conf.ens33.arp_announce = 2

使内核参数修改生效:

sysctl -p

 集群LVS、KeepAlived

 

 

 arp_ignore 定义接收到 ARP 请求时的响应级别。

arp_ignore:定义了网卡在响应外部ARP请求时候的响应级别,即当ARP请求发过来后发现自己正是请求的地址是否响应

0:默认值,不管哪块网卡接收到了ARP请求,只要解析本机有这个MAC都给与响应

1:当一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应

 arp_announce 定义将自己地址向外通告时的通告级别

arp_announce: 的作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址

有三个值:

0:默认值,允许使用任意网卡的IP 地址作为 arp 请求源 IP 

1: 尽量避免使用不属于该发送网卡子网的本地  地址作为发送arp请求的源IP地址

2: 选择该发送网卡上最合适的本地地址作为arp请求的源IP地址

arp_ignore和arp_announce参数示例:

集群LVS、KeepAlived

(1)当arp_ignore参数配置为0时,eth1网卡上收到目的IP为环回网卡IP的arp请求,但是eth1也会返回arp响应,把自己的mac地址告诉对端。

 集群LVS、KeepAlived

 

 2)当arp_ignore参数配置为1时,eth1网卡上收到目的IP为环回网卡IP的arp请求,发现请求的IP不是自己网卡上的IP,不会回arp响应

 集群LVS、KeepAlived

 

(3)当arp_announce参数配置为0时,系统要发送的IP包源地址为eth1的地址,IP包目的地址根据路由表查询判断需要从eth2网卡发出,这时会先从eth2网卡发起一个arp请求,用于获取目的IP地址的MAC地址。该arp请求的源MAC自然是eth2网卡的MAC地址,但是源IP地址会选择eth1网卡的地址

 集群LVS、KeepAlived

 (4)当arp_announce参数配置为2时,eth2网卡发起arp请求时,源IP地址会选择eth2网卡自身的IP地址

配置虚拟IP地址(VIP)

生成回环配置文件;

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0 

 DEVICE=lo:0
IPADDR=192.168.30.200
NETMASK=255.255.255.255   #当子网掩码变成42位的时候就变成主机IP了
ONBOOT=yes
NAME=loopback

重启network 服务

 systemctl restart network

 ifconfig 

集群LVS、KeepAlived 

 第二台服务器做同样操作

配置httpd服务
yum -y install httpd   #安装apache

systemctl status httpd 

echo “192.168.30.200” > /var/www/html/index.html

为了测试负载均衡,各个服务器的页面不同,可以先不挂载nfs共享存储

4、测试LVS集群

 测试访问vip:

集群LVS、KeepAlived

 

 注:测试时,不要在分发器上测试。那样测试是不行的

 在LVS负载调度器中,通过查看节点状态可以观察当前的负载分配情况,对于轮询算法来说,每个节点所获得的连接负载应大致相当

会话保持 
LVS提供了source hashing,源地址hash(sh)算法,这样同一个ip的客户端总是分发给同一个real server

基于ip地址标识客户端的缺点:很多内网用户会伪装成公网ip,来访问服务器,不能人为的控制负载均衡

如何保持会话一致
如果总是保持和一个RS会话,这台RS如果故障了,要确定另一个RS也有会话信息,所有的RS保持数据同步

会话保持同步的方法:

所有的RS把自己的会话信息保存到数据库当中(如memcached/redis软件)。
 

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/22239.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!