LVS四种工作模式搭建与十种调度算法

LVS概念

lvs集群类型中的术语:

VS:Virtual Server,Director Server(DS) Dispatcher(调度器),Load Balancer
RS:Real Server(lvs), upstream server(nginx) backend server(haproxy)
CIP:Client IP
VIP: Virtual serve IP VS外网的IP
DIP: Director IP VS内网的IP
RIP: Real server IP 访问流程:CIP <--> VIP == DIP <--> RIP


lvs集群的类型

lvs集群的类型: lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
lvs-dr:操纵封装新的MAC地址
lvs-tun:在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP

lvs-nat模式

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统

主机 ip1 ip2
Client 172.22.50.100
LVS 172.22.50.200 192.168.64.120
Server1 192.168.64.130 gateway 192.168.64.120 webserver
Server2 192.168.64.140 gateway 192.168.64.120 webserver
[[email protected] ~]#hostnamectl set-hostname client
[[email protected] ~]#hostnamectl set-hostname LVS
[[email protected] ~]#hostnamectl set-hostname server1
[[email protected] ~]#hostnamectl set-hostname server2

[[email protected] ~]# echo server1 > /var/www/html/index.html
[[email protected] ~]# echo server2 > /var/www/html/index.html

[[email protected] ~]#systemctl start httpd.service
[[email protected] ~]#systemctl start httpd.service

[[email protected] ~]# yum install ipvsadm
[[email protected] ~]#ipvsadm -A -t 172.22.50.200:80
[[email protected] ~]#ipvsadm -a -t 172.22.50.200:80 -r 192.168.64.130 -m -w 3
[[email protected] ~]#ipvsadm -a -t 172.22.50.200:80 -r 192.168.64.140 –m –w 1

开启核心转发功能
[[email protected] ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[[email protected] ~]#sysctl -p
net.ipv4.ip_forward = 1

[[email protected] ~]#while true; do curl 172.22.50.200 ;sleep 1;done
server1
server2

保存
[[email protected] ~]#ipvsadm-save -n > /etc/sysconfig/ipvsadm
[[email protected] ~]#systemctl start ipvsadm
[[email protected] ~]#systemctl enable ipvsadm.service

开启https

[[email protected] ~]# yum install mod_ssl
[[email protected] ~]# systemctl restart httpd
[[email protected] ~]#ipvsadm -A -t 172.22.50.200:443
[[email protected] ~]#ipvsadm -a -t 172.22.50.200:443 -r 192.168.64.130 -m -w 3
[[email protected] ~]#ipvsadm -a -t 172.22.50.200:443 -r 192.168.64.140 –m –w 1

LVS-DR

主机 ip1 ip2
Client 172.22.50.100 gateway172.22.143.144
router 172.22.143.144 192.168.64.150
LVS 172.22.50.200 192.168.64.120 gateway 192.168.64.150
Server1 192.168.64.130 gateway 192.168.64.120 webserver VIP192.168.64.200
Server2 192.168.64.140 gateway 192.168.64.120 webserver VIP192.168.64.200
router开启核心转发功能
[[email protected] ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[[email protected]~]#sysctl -p
net.ipv4.ip_forward = 1

[[email protected] ~]#traceroute 192.168.64.130
traceroute to 192.168.64.130 (192.168.64.130), 30 hops max, 60 byte packets
 1  gateway (172.22.143.144)  1.551 ms  7.670 ms  7.611 ms
 2  192.168.64.130 (192.168.64.130)  7.559 ms  7.512 ms  7.465 ms
  • RS服务器脚本
#!/bin/bash
vip=‘192.168.64.200‘
iface=‘lo:1‘
mask=‘255.255.255.255‘
port=‘80‘
rs1=‘192.168.64.130‘
rs2=‘192.168.64.140‘
scheduler=‘wrr‘
type=‘-g‘
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
    ifconfig $iface $vip netmask $mask #broadcast $vip up
    iptables -F

    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    echo "The VS Server is Ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    echo "The VS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac
  • LVS服务器脚本
#!/bin/bash
vip=192.168.64.200
mask=‘255.255.255.255‘
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready!"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    #route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac
[[email protected] ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.64.200:80                   7       42        0     2786        0
  -> 192.168.64.130:80                   3       18        0     1194        0
  -> 192.168.64.140:80                   4       24        0     1592        0

RIP与VIP不同网段

将VIP改为:10.0.0.100
Router加一个地址 10.0.0.200 与内网网卡绑定
Ifconfig eth0:1 10.0.0.200/24

MYSQL服务调度

[[email protected] ~]#ipvsadm -A -t 172.22.50.200:3306
[[email protected] ~]#ipvsadm -a -t 192.168.64.130:3306 -r 192.168.64.130 -m -w 3
[[email protected] ~]#ipvsadm -a -t 192.168.64.140:3306 -r 192.168.64.140 –m –w 1
添加授权账号

mysql  -e ‘grant all on *.* to [email protected]”%” identified by “centos”  ’

mysql –uroot –pcentos –h

Firewall mark

iptables -t mangle -A PREROUTING  -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10
[[email protected] ~]# ipvsadm -A -f 10 -s rr
[[email protected] ~]# ipvsadm -a -f 10 –r 192.168.64.130 -m -w 3
[[email protected] ~]# ipvsadm -a -f 10 –r 192.168.64.140 -m -w 3

持久连接

[[email protected] ~]# ipvsadm -A -f 10 -s rr –p

LVS十种调度算法:

  • LVS调度算法分为静态和动态两类:

    静态算法(4种):

  • 只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况
  • RR:轮叫调度(Round Robin)
    调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载?
  • WRR:加权轮叫(Weight RR)
    调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • DH:目标地址散列调度(Destination Hash )
    根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
  • SH:源地址 hash(Source Hash)
    源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空?

    动态算法(6种):

    前端的调度器会根据后端真实服务器的实际连接情况来分配请求

  • LC:最少链接(Least Connections)
    调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。
  • WLC:加权最少连接(默认采用的就是这种)(Weighted Least Connections)
    在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载?调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • SED:最短延迟调度(Shortest Expected Delay )
    在WLC基础上改进,Overhead = (ACTIVE+1)*256/加权,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。
  • NQ永不排队/最少队列调度(Never Queue Scheduling NQ)
    无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空间。在SED基础上无论+几,第二次一定给下一个,保证不会有一个主机不会很空闲着,不考虑非活动连接,才用NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑非活动连接,而httpd的处于保持状态的服务就需要考虑非活动连接给服务器的压力。
  • LBLC:基于局部性的最少链接(locality-Based Least Connections)
    基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统?该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器?
  • LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)
    带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统?它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射?该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器?同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

原文地址:https://blog.51cto.com/9019400/2400117

时间: 2024-11-18 06:46:18

LVS四种工作模式搭建与十种调度算法的相关文章

LVS 三种工作模式基本配置(不含HA)

类别:原创 服务器 本文参考 LVS三种工作模式简介及案例参考http://www.sxt.cn/u/324/blog/3188 LVS DR模式基本配置参考http://www.21ops.com/ops/26717.html LVS TUN模式配置参考(其它的文档全都少了内容) http://outofmemory.cn/wr/?u=http%3A%2F%2Fwww.jizhuomi.com%2Fsoftware%2F365.html ipvsadm 命令详细参数参考 http://blog

LVS三种工作模式、十种调度算法介绍

工作模式介绍:1.Virtual server via NAT(VS-NAT)优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址.缺点:扩展性有限.当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生.假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的

LVS四种实现模式详解

一.集群cluster 当后端服务器承受不住访问的压力,提高服务器性能的解决方案会极大增加成本时,人们提出了横向扩展的解决方案.增加一台或几台服务器,提供相同的服务,通过前段分发器将访问量均匀的分配到后台服务器上.这种多台服务器组成的数组集合就叫做集群. 集群按功能划分有三种模型: 负载均衡集群(loadBalance) 高可用性集群(High Availability) 高性能集群(High Performance) 二.负载均衡集群 根据某种算法将负载压力合理的分配到集群中的每一台计算机上,

Redis的四种工作模式实现

Redis: Redis是一款优秀的结构数据存储系统,由于出色的并发性能广为关注,可用作:数据库.缓存.消息队列:同类型的还有memcached,但是由于memcache支持的结构类型较少,并且不能够将数据持久化,慢慢的被redis所取代. Redis支持的数据结构:字符串.列表(数组).hashes(关联数组).集合.有序集合.bitmaps.hyperloglogs.空间索引:本篇博客简单介绍redis对于实现高可用和持久化的四种redis工作模式,进入正题: [TOC] 进入正题简单介绍

交换机的四种工作模式

Cisco 交换机的命令行模式 用户模式只能用来查看一些统计信息 Switch> 特权模式可以查看或修改Cisco设备的配置 Switch>enable Switch# 全局配置模式可以修改交换机的全局配置 Switch#configure terminal Switch(config)# 接口模式针对于接口的配置 Switch(config)#interface fastEthernet 0/1 Switch(config-if)# 可以使用end命令来快速退出当前模式 Switch(con

LVS四种负载均衡类型,十种调度方法

Lvs常用术语说明 术语 解释 Load balancer或director 负载调度器 RS或Real Server 真实服务器,提供服务的服务器 VIP 虚拟IP地址,客户端访问集群的地址 RIP 集群所提供应用程序的地址(HTTP,FTP) DIP 调度器的真实地址 Lvs的类型 Lvs-nat 他通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发. 架构特性: (1)  Rs应该使用私有地址,即RIP应该为私有地址,各RS的网关必须执行DIP (2)  请求报文和

LVS 三种工作模式原理、以及优缺点比较(转载)

原文地址:http://9ilinux.com/149.html 一.NAT模式(VS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可?期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器? 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址. 缺

LVS 三种工作模式原理、以及优缺点比较

原文地址:http://9ilinux.com/149.html 一.NAT模式(VS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可?期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器? 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址. 缺

31、activity 四种工作模式