Linux Cluster

==============================================================================

概述:

 本章我们将介绍Linux中集群的相关知识,重要内容如下:

◆Linux Cluster介绍;

  • Linux Cluster类型

  • 系统扩展方式

◆LB Cluster负载均衡集群的相关介绍,及实现方法;

  • 原理

  • 硬件实现、软件实现

  • 基于软件的协议层次划分

  • 站点指标

  • 会话保持

◆lvs集群详解及实现;

  • 功用、原理、工作模型及相关术语

  • lvs各集群类型详解(lvs-nat、lvs-dr、lvs-tun、lvs-fullnat)

◆ipvs的调度算法

  • 静态算法;

  • 动态算法

◆ipvsadm及ipvs详解

◆实验:ipvs-nat的实现过程,及调度算法的相关测试

==============================================================================

Linux Cluster

 1.介绍

★Cluster:

  • 定义:计算机集合,为解决某个特定问题组合起来形成的单个系统;

★Linux Cluster类型:

LB:Load Balancing,负载均衡集群;

HA:High Availiablity,高可用集群;

  • 可用性=MTBF(平均无故障时间)/(MTBF+MTTR(平均修复时间))

  • 取值范围(0,1),无限接近于1最好:

  • 百分比衡量:90%, 95%, 99%, 99.5%,  99.9%, 99.99%, 99.999%

HP:High Performance,高性能集群;

★系统扩展方式:

  • Scale UP:向上扩展(用更好的性能的主机来替代较差性能的主机)

  • Scale Out:向外扩展(当一个主机不足以承载请求时,就多加一台,也就是所谓的集群方式)

LB Cluster:负载均衡集群

 LB Cluster的实现:

★原理:

  • 通过一个调度器,能够将一类请求分发至多个不同的后端主机来实现负载均衡;

硬件实现:

  • F5 Big-IP

  • Citrix Netscaler

  • A10 A10

软件实现:

  • lvs:Linux Virtual Server

  • nginx

  • haproxy

  • ats:apache traffic server

  • perlbal

  • pound

基于工作的协议层次划分(软件实现):

传输层(通用):(根据DPORT分发)(为一个四层交换机)

  • lvs:不依赖于端口转发

  • nginx:(stream)

  • haproxy:(mode tcp)

应用层(专用):(根据自定义的请求模型分类完成分发)

proxy sferver:

  • http:nginx, httpd, haproxy(mode http), ...

  • fastcgi:nginx, httpd, ...

  • mysql:mysql-proxy, ...

站点指标:

  • PV:Page View(页面浏览量)

  • UV:Unique Vistor(唯一访客)

  • IP:

会话保持:

session sticky(会话粘性)

  • Source IP(源ip)

  • Cookie

session replication; (在各节点进行同步复制)

  • session cluster

session server(用一个共享存储用来存放会话)

  • memcached, redis

※附加概念:

◆会话(Session)跟踪

  • 是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

◆Cookie的工作原理

  • 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了,这就是Cookie的工作原理。

◆Session

  • 是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

  • 如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

lvs:Linux Virtual Server

 1.介绍

★概念:

  • VS: Virtual Server(虚拟服务器)

  • RS: Real Server(后端服务器,上游服务器,真实服务器指的都是同一个组件)

★作者:

  • 章文嵩;alibaba --> didi

★l4:四层路由器,四层交换机;

VS作用:

  • 根据请求报文的目标IP和目标协议及端口将其调度转发至某RealServer,根据调度算法来挑选RS;

★工作模型

iptables/netfilter:(类似lvs的工作模型)

◆iptables:用户空间的管理工具;

◆netfilter:内核空间上的框架;

  • 流入:PREROUTING --> INPUT

  • 流出:OUTPUT --> POSTROUTING

  • 转发:PREROUTING --> FORWARD --> POSTROUTING

◆DNAT:经过目标地址转换,进入后端主机; 在PREROUTING链;

lvs: ipvsadm/ipvs

  • ipvsadm:用户空间的命令行工具,规则管理器,用于管理集群服务及RealServer;

  • ipvs:工作于内核空间的netfilter的INPUT钩子之上的框架;

★lvs集群类型中的术语:

  • vs:Virtual Server, Director, Dispatcher, Balancer

  • rs:Real Server, upstream server, backend server

  • CIP:Client IP,

  • VIP: Virtual serve IP;

  • RIP: Real server IP;

  • DIP: Director IP;

通信过程:

  • CIP <--> VIP == DIP <--> RIP

附图:

LVS内核模型

工作过程

1.当客户端的请求到达负载均衡器的内核空间时,首先会到达PREROUTING链。

2.当内核发现请求数据包的目的地址是本机时,将数据包送往INPUT链。

3.LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间。

4.如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往POSTROUTING链。

5.最后经由POSTROUTING链发往后端服务器。

★lvs集群的类型:

  • lvs-nat:修改请求报文的目标IP

  • lvs-dr:操纵封装新的MAC地址;

  • lvs-tun:在原请求IP报文之外新加一个IP首部;

  • lvs-fullnat:修改请求报文的源和目标IP;

 2.lvs各集群类型详解

★lvs-nat:

原理:

  • 多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发;

特点:

  • RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关必须要指向DIP;

  • 请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;

  • 支持端口映射,可修改请求报文的目标PORT;

  • vs必须是Linux系统,rs可以是任意系统;

附图:

工作原理图:

★lvs-dr:

  • Direct Routing,直接路由;

原理:

  • 通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;

特征:

  • 前提:Director和各RS都得配置使用VIP;

  • 确保前端路由器将目标IP为VIP的请求报文发往Director:

(a)在前端网关做静态绑定

(b)在RS上使用arptables;

(c)在RS上修改内核参数以限制arp通告及应答级别;(建议使用)

arp_announce:arp通告参数

arp_ignore:arp应答参数

  • RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;

  • RS跟Director要在同一个物理网络;

  • 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;

  • 不支持端口映射;

附图:

工作原理图1:

工作原理图2:

★lvs-tun:

转发方式:

  • 不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;

特征:

  • DIP, VIP, RIP都应该是公网地址;

  • RS的网关不能,也不可能指向DIP;

  • 请求报文要经由Director,但响应不能经由Director;

  • 不支持端口映射;

  • RS的OS得支持隧道功能;

附图:

工作原理图1:

★lvs-fullnat:

转发方式:

  • 通过同时修改请求报文的源IP地址和目标IP地址进行转发;

  • CIP --> DIP ;VIP --> RIP

特征:

  • VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;

  • RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;

  • 请求和响应报文都经由Director;

  • 支持端口映射;

注意:

  • 此类型默认不支持;

附图:

工作原理图1:

ipvs scheduler:(ipvs调度算法)

根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法两种:

1.静态算法(4种):只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况

★RR:roundrobin,轮询;

  • 调度器通过”轮询”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载

★WRR:Weighted RR,加权轮询;(权重越大其负载能力越大)

  • 调度器通过“加权轮询”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

★SH:Source Hashing(源IP地址哈希算法)

  • 实现session sticy,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定;

★DH:Destination Hashing;目标地址哈希

  • 将发往同一个目标地址的请求始终转发至第一次挑中的RS;(大多数为缓存代理服务器才会用到)

2.动态算法:前端的调度器会根据后端真实服务器的实际连接情况来分配请求

Overhead(计算负载的标准值)=

★LC:least connections(最少连接)

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

  • Overhead=activeconns*256+inactiveconns(非活动链接),计算值较小的被挑中

★WLC:Weighted LC (加权最少连接)默认的调度算法

  • 在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接,负载调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

  • Overhead=(activeconns*256+inactiveconns)/weight,计算值较小的被挑中

★SED:Shortest Expection Delay(最短期望延迟)

  • 在WLC基础上改进,Overhead = (ACTIVE+1)*256/weight,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。

★NQ:Never Queue(无需队列)

  • 无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空间。在SED基础上无论+几,第二次一定给下一个,保证不会有一个主机不会很空闲着,不考虑非活动连接,才用NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑非活动连接,而httpd的处于保持状态的服务就需要考虑非活动连接给服务器的压力。

★LBLC:Locality-Based LC,动态的DH算法;(适合缓存服务器)

  • 基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器

★LBLCR:LBLC with Replication,带复制功能的LBLC;(适合缓存服务器)

  • 带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

ipvsadm/ipvs详解

 1.ipvs:

★查看当前系统内核是否编译ipvs

  • # grep -i -C 10 "ipvs" /boot/config-3.10.0-327.el7.x86_64

[root@centos7 ~]# grep -i -C 10 "ipvs" /boot/config-3.10.0-327.el7.x86_64
CONFIG_NETFILTER_XT_MATCH_CPU=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ECN=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
# CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_NFACCT=m
CONFIG_NETFILTER_XT_MATCH_OSF=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
--
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12#
# IPVS transport protocol load balancing support  支持的协议
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y#
# IPVS scheduler  算法
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PE_SIP=m

★支持的协议:

  • TCP, UDP, AH, ESP, AH_ESP, SCTP;

★ipvs集群:

  • 首先要定义集群服务;

  • 然后再定义在集群服务上添加的RS;

 2.ipvsadm命令:

★命令概览:

[root@centos7 ~]# ipvsadm -h
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]ipvsadm -D -t|u|f service-addressipvsadm -C  # 清空集群服务规则ipvsadm -R  # 重载规则ipvsadm -S [-n]  # 保存规则ipvsadm -a|e -t|u|f service-address -r server-address [options]ipvsadm -d -t|u|f service-address -r server-addressipvsadm -L|l [options]ipvsadm -Z [-t|u|f service-address]  # 清空计数器ipvsadm --set tcp tcpfin udpipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]ipvsadm --stop-daemon stateipvsadm -h  # 获取帮助

★管理集群服务:增、改、删;

增、改:

  • ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

删:

  • ipvsadm -D -t|u|f service-address

service-address:

-t|u|f:

  • -t:TCP协议的端口,格式为:VIP:TCP_PORT

  • -u:TCP协议的端口,格式为:VIP:UDP_PORT

  • -f:firewall MARK,是一个数字;

[-s scheduler]:

  • 指定集群的调度算法,默认为wlc;

★管理集群上的RS:增、改、删;

增、改:

  • ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

删:

  • ipvsadm -d -t|u|f service-address -r server-address

server-address:

  • rip[:port]

选项:

◆lvs类型:

  • -g:gateway, dr类型 (默认类型)

  • -i:ipip, tun类型

  • -m:masquerade, nat类型

◆-w weight:权重;

★清空定义的所有内容:

  • ipvsadm -C

★查看:

格式:

  • ipvsadm -L|l [options]

选项:

  • --numeric, -n:numeric output of addresses and ports(数值格式显示IP和端口)

  • --exact:expand numbers (display exact values)(显示精确值)

  • --connection,-c:output of current IPVS connections(当前的连接数)

  • --stats:output of statistics information(统计信息数据)

  • --rate :output of rate information(速率数据输出)

★保存和重载:

  • ipvsadm -S = ipvsadm-save

  • ipvsadm -R = ipvsadm-restore

示例:

[root@centos7 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@centos7 ~]# ipvsadm -L -c  # 查看连接数量
IPVS connection entries
pro expire state       source             virtual            destination
[root@centos7 ~]# ipvsadm -L --stats # 查看统计数据
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes-> RemoteAddress:Port
[root@centos7 ~]# ipvsadm -L --rate  # 查看每秒钟的数据(速率)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS-> RemoteAddress:Port

ipvs-nat类型的实现

1.实验前准备

  • 拓扑图

  • 调度器要有一个公网地址(VIP)和私网地址(DIP)

  • 两个realserver要有RIP,并且网关指向DIP,并确保两个realserver服务正常

2.实验测试环境搭建

首先准备三台虚拟主机,一台作为调度器,另外两台作为RS服务器,并且调度器要有两块网卡,一个为桥接网络(VIP),可与外网通信;一个为内网网络DIP(VMnat1模式)与RS通信;两台RS服务器都为内网网络(均使用VMnat1模式)并且网关要指向调度器的内网地址(DIP)。

1)作为调度器的虚拟主机,网卡及ip准备如下图:

作为调度器的虚拟主机要确保打开核心转发功能:

2)作为RS的虚拟主机网卡,ip及对应网关如下图:

RS1配置如下:

RS2配置如下:

3)为了试验测试,假设两台RS服务器为web服务器,并分别为其提供默认测试页面,如下:


4)然后我们在调度器上访问两台RS的web服务能否正常,如下:

如上,所有的环境搭建均已完成,现在我们就可以使用ipvsadm添加规则了

 注意:在任何集群当中一定要确保每一台主机的时间是同步的,所以要配置号ntp服务器,或者使用chrony服务,通过同一台主机来同步时间。

3.使用ipvsadm添加规则,并测试:

# 添加一个web的集群服务,-t为tcp协议,并指明地址和端口,-s 指明调度算法为rr(轮询)
[root@centos7 ~]# ipvsadm -A -t 10.1.252.161:80 -s rr# 在集群服务上添加RS,-r 指明RS,-m指明lvs的类型为nat
[root@centos7 ~]# ipvsadm -a -t 10.1.252.161:80 -r 192.168.22.18 -m
[root@centos7 ~]# ipvsadm -a -t 10.1.252.161:80 -r 192.168.22.19 -m# 查看定义好的集群即RS如下:
[root@centos7 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.161:80 rr-> 192.168.22.18:80             Masq    1      0          0         -> 192.168.22.19:80             Masq    1      0          0

1)这里以CentOS 6 作为客户端,请求调度器的VIP地址,如下,可以看到为轮询(rr)的方式

[root@CentOS6 ~]# curl http://10.1.252.161
<h1>RS2</h1>
[root@CentOS6 ~]# curl http://10.1.252.161
<h1>RS1</h1>
[root@CentOS6 ~]# curl http://10.1.252.161
<h1>RS2</h1>
[root@CentOS6 ~]# curl http://10.1.252.161
<h1>RS1</h1>
[root@CentOS6 ~]# curl http://10.1.252.161
<h1>RS2</h1>
[root@CentOS6 ~]# curl http://10.1.252.161
<h1>RS1</h1>
[root@CentOS6 ~]# for i in {1..10};do curl http://10.1.252.161; done
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>

2)现在使用-E修改集群服务的调度算法rr为wrr(加权轮询),-e修改集群服务上RS的权重为2和1

[root@centos7 ~]# ipvsadm -E -t 10.1.252.161:80 -s wrr
[root@centos7 ~]# ipvsadm -e -t 10.1.252.161:80 -r 192.168.22.18 -m -w 2
[root@centos7 ~]# ipvsadm -e -t 10.1.252.161:80 -r 192.168.22.19 -m -w 1
[root@centos7 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.161:80 wrr-> 192.168.22.18:80             Masq    2      0          0         -> 192.168.22.19:80             Masq    1      0          0

wrr加权轮询测试如下:

[root@CentOS6 ~]# for i in {1..10};do curl http://10.1.252.161; done
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS1</h1>
<h1>RS2</h1>[root@centos7 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.161:80 wrr-> 192.168.22.18:80             Masq    2      0          6         -> 192.168.22.19:80             Masq    1      0          4

3)sh调度算法测试如下:

[root@centos7 ~]# ipvsadm -E -t 10.1.252.161:80 -s sh # 修改调度算法为sh[root@CentOS6 ~]# for i in {1..10};do curl http://10.1.252.161; done
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>

4)wlc调度算法测试如下:

[root@centos7 ~]# ipvsadm -E -t 10.1.252.161:80 -s wlc[root@CentOS6 ~]# for i in {1..10};do curl http://10.1.252.161; done
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS1</h1>
<h1>RS2</h1>

如上整个lvs-nat类型的负载均衡集群就已经测试完成了。。。

-----------------------------------------------------------------------------

负载均衡集群的设计要点:

(1)是否需要会话保持;

(2)是否需要共享存储;

共享存储:NAS, SAN, DS(分布式存储)

数据同步:rsync+inotify实现数据同步 

lvs-nat设计要点:

(1)RIP与DIP在同一IP网络, RIP的网关要指向DIP;

(2)支持端口映射;


转载于:https://blog.51cto.com/1992tao/1867221

1.Linux Cluster介绍+LB Cluste详解相关推荐

  1. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  2. linux脚本日期时间,Linux 日期和时间操作详解

    Linux 日期和时间操作详解 发布时间:2012-11-27 15:10:07   作者:佚名   我要评论 Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Cl ...

  3. python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度 ...

  4. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入Lin ...

  5. ceph存储原理_赠书 | Linux 开源存储全栈详解——从Ceph到容器存储

    // 留言点赞赠书我有书,你有故事么?留言说出你的存储故事留言点赞前两名,免费送此书截止日期12.27号12.30号公布名单 // 内容简介 本书致力于帮助读者形成有关Linux开源存储世界的细致的拓 ...

  6. openstack架构详解图_英特尔顶级技术专家合力缔造精品:Linux开源网络全栈详解...

    日常水开篇 自1991年诞生起,Linux已经走过了接近三十年.Linux早已没有了问世时的稚气,正在各个领域展示自己成熟的魅力. 以Linux为基础,也衍生出了各种开源生态,例如网络和存储.而生态离 ...

  7. Linux运行脚手架vue,Linux Nodejs与vue脚手架详解

    本篇教程介绍了Linux Nodejs与vue脚手架详解,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入. < https://nodejs.org/dist/v8.9 ...

  8. linux中which命令详解,Linux下which命令使用详解(转)

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...

  9. Linux进程管理工具 Supervisor详解

    介绍 Supervisor安装与配置(linux/unix进程管理工具) Supervisor(http://supervisord.org)是用Python开发的一个client/server服务, ...

最新文章

  1. java 国际化例子_JavaSE 国际化 简单例子
  2. 判断一个对象是否是可调用对象
  3. Guava 2.2-新集合类型
  4. CF 375D. Tree and Queries加强版!!!【dfs序分块 大小分类讨论】
  5. 237. 删除链表中的节点(C语言)
  6. 阿里高级技术专家:如何结构化地思考、做事、成长?
  7. javascript --- vue中简单的模板渲染
  8. centos7打开图形界面命令_centos7标准版(DVD)命令界面和图形界面相互切换
  9. 软考 - 法律法规 标准化
  10. Redis 面试题补充与汇总
  11. 电脑投屏软件哪个好_电脑绘画软件哪个好?
  12. 面试必备之为什么重写equals必须重写hashcode
  13. 关于javascript的原型和原型链,看我就够了(一)
  14. [Java] 蓝桥杯ADV-180 算法提高 陶陶摘苹果2
  15. echart同一个dom下多次动态渲染值,防止值、事件重复互相影响
  16. mysql in memory_In-Memory:内存数据库
  17. 福昕高级PDF 专业版程序安装及注意事项
  18. 信息学奥赛一本通-第一章答案合集
  19. 基于Tableau探索分析世界银行提供的关于科学技术的数据
  20. Python标准库(各种模块介绍)

热门文章

  1. devc++未成年保护模式系统
  2. 日本泡沫经济破灭20年祭
  3. wpl计算方法_C++二叉树计算带权路径长度(WPL)的算法
  4. P8865 [NOIP2022] 种花
  5. 1131. Subway Map (30)-PAT甲级真题 (DFS or 堆优化dij or SPFA)
  6. abaqus dat文件 matlab_工程师联盟科普系列|ABAQUS中的各种文件类型详解-dat文件如何打开...
  7. 【C语言】最佳找零组合
  8. LWN:开源语音助手的希望!
  9. vue前台Failed to load resource: the server responded with a status of 404 (Not Foun
  10. java instanceof用法