lvs初探

LVS


  • 简述

  • HA基础知识

  • lvs配置


简述

什么是lvs?

lvs是linux virtual server linux虚拟服务的缩写,通过一台调度服务器来调度收到的请求并分发给后端的real server。

lvs的功能是什么?

lvs能够实现在大并发的情况下,将前端调度器收到的请求分发给后端服务器处理,实现了负载均衡集群的作用。

lb基础知识

lb集群的基本架构

LB集群架构

lb常见的调度算法

静态:
RR:round robin,轮询,你一个我一个。
WRR:weighted round robin,加权轮询,按照事先设置好的比例的前提下的轮询。 
DH:Destination hashing,目标地址哈希,对目标地址做hash,将对同一个资源的访问都指向同一台服务器。
SH:source hashing,源地址地址哈希,对源地址做hash,将同一个来源ip的请求都发送到同一台服务器上,实现session保持。

动态:
LC:least connected,最小连接,inactive+active*256
WLC:weighted least connected,加权最小连接,(inactive+active*256)*weight
SED:Shortest Expected Delay,最短期望延迟,(inactive+active*256+1)*weight
NQ:never queue,永不排队,第一次不按照SED的算法来计算,之后的按照(inactive+active*256+1)*weight来计算。
LBLC:Locality-Based Least Connection,基于局部性的最少连接,基于请求目标ip的负载均衡度来计算。
LBLCR:Locality-Based Least Connections withReplication,带复制的基于局部性最少链接,基于请求目标ip的负载均衡度来计算,并且带复制,也就是说当一方即将超负载就会复制信息到另外一台rs服务器上保证用户的缓存信息不会丢失。

lb会遇到的难点和一般解决方案

  1. 在整个负载均衡集群架构中,可以看见所有的请求的都会先发送到director上,当并发量达到一定程度的时候,这个单一节点就有可能成为整个系统的性能瓶颈,并且当这个节点故障后就会导致整个集群的失效,所以我们可以采用对这个节点做高可用和负载均衡。

  2. lb还需要考虑的一个问题就是seesion保持的问题,当调度器分发请求到后端服务器上,可是每一个连接的缓存内容只会在一个主机上,这就会导致,用户在访问时,会有可能丢失seesion,为了解决这个问题可以采用三种方式,session与后端主机绑定,session集群,session服务器来解决。

lvs

lvs的负载均衡模型


NAT

LVS-NAT
dip与sip需要在一个网络内,当director收到请求报文后,会将请求调度根据算法转发调度至real server,然后real server返回资源,director再构建响应报文响应,但是也会产生问题,由于是所有的请求和响应都要经过director,所以这个节点极易成为瓶颈所在。

  1. director需要开启内核的路由转发功能。

     echo 1 > /proc/sys/net/ipv4/ip_forward
  2. dip与rip遇到在一个网络内。

  3. rip的网关需要指向dip。

    route add default gw 192.168.1.20

DR

LVS-DR
dip与sip需要在一个物理网络内,需要接收arp广播,当director收到请求报文后,会通过arp广播的方式调度至rs,rs上也配置了vip,所以当rs收到了报文后,解开后发现访问地址就是本机上的vip,所以就会获取资源构建响应报文直接通过路由互联网去送达给用户,这个方式可以看见,我们的director只需要接收请求报文并且调度广播出去,响应报文不会像nat一样还要经由director来响应,这样提高了director的承载量与性能。

  1. rs需要在lo上配置vip。

    ifconfig lo:0 192.168.1.200/32 broadcast 192.168.1.200 up
  2. rs需要调整核心的arp功能。

    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  3. real server 将lo上的vip都路由至lo:0。

    route add -host 192.168.1.200 dev lo:0

TUN

TUN
当我们的director和rs各自在不同的网络中,并且位于不同地区,我们就可以采用tun,也就是隧道的方式来解决,tun方式,是在director收到请求报文后,会在原报文的基础上再构建请求报文,也就是嵌套两两层,director与rs建立tcp连接,当rs收到后就会先拆开外面的一层获得原先的请求报文,之后再拆,就能得到原先的请求内容,然后又发现vip是本机上的地址,然后就直接构建响应报文通过互联网响应给用户端。

lvs的配置与规则设置

格式

ipvsadm -[parm [value]]

参数详解:

-L:列出信息。
-n:以数字的形式显示。
-c:显示现在的连接。
--stats 显示统计信息。
--rate 显示速率信息。

-A:新增一个虚拟服务。
-E:修改一个虚拟服务。
-D:删除一个虚拟服务,注意如果直接删除虚拟服务,设定的real server也会直接全部删除。
-C:清空所有规则与服务。 
-Z:清空所有的计数器。
-s [rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq]:指定调度算法。

-S [file]:保存ipvsadm规则到一个文件。
-R [file]:从一个文件读取ipvsadm规则。

-a:新增一个real server
-e:修改一个real server
-d:删除一个real server
-t|u|f [host[:port]]:设置tcp|udp|fwmark服务。
-m|g|i:设定为masquerading|gatewaying|ipip方式,m为nat方式,g为dr方式,i为tun方式。    
-w [num]:指定权重。
-r [ip[:port]]:指定real server。
-p [timeout]:持久连接,即一个cilent的多个请求都由一个rs处理。

常用命令组合示例:

ipvsadm -L -n
ipvsadm -L -c

ipvsadm -A -t 192.168.1.1:80 -s rr 
ipvsadm -a -t 192.168.1.1:80 -r 192.168.1.2 -g -w 1
ipvsadm -a -t 192.168.1.1:80 -r 192.168.1.3 -g -w 2

iptables -t mangle -d 192.168.1.1 -m mutilport --dports 22,80 -j mark --mark 1 
ipvsadm -A -f 1 -s rr 
ipvsadm -a -f 1 -r 192.168.1.2 -g -w 1 -p 300
ipvsadm -a -f 1 -r 192.168.1.3 -g -w 2 -p 300

原创文章,作者:Net18_肖肖,如若转载,请注明出处:http://www.178linux.com/17188

(0)
Net18_肖肖Net18_肖肖
上一篇 2016-05-31 20:22
下一篇 2016-05-31 23:32

相关推荐

  • 浅谈RPM

    浅谈RPM    [先絮叨下编译啊]   1、 库:其实就是一个程序模块(它没有执行入口,不能独立执行,只能被能独立运行的程序调用时执行)你可以把它想象成工具螺丝刀,可执行的程序是就是你自己;螺丝刀能自己干活吗?没有螺丝刀能拧螺丝吗?或者说你现在制作一个? 螺丝刀可以实现这个功能但需要你来执行这个动作。   2、静态编译:将程序所需要的所有的库都编…

    Linux干货 2015-04-27
  • N25-第七周作业

    第七周作业 — 1、创建一个10G分区,并格式为ext4文件系统; fdisk /dev/sdanp2enter+10Gwpartx -a /dev/sda(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;mke2fs -t ext4 -b 2018 -m 2 -L “MYDATA” /…

    Linux干货 2017-02-25
  • 权限(用户、特殊、ACL)

    root权限(id=0) root无论在什么情况下都有rw权限,但是是否拥有x权限,要分情况: 第一,文件所有者和所属组都无x权限,root也无x权限; 第二,文件所有者和所属组二者任何一个有x权限,root就有x权限。 用户得到的权限 匹配顺序:文件所有者——文件所属组——其他人(从左到右) 用户访问文件,一旦按次序匹配成功,其获得的权限就是匹配选项所对应…

    Linux干货 2017-05-30
  • 转载:UEFI和BIOS对比

    传统BIOS开机流程     从你按下主机机壳上的电源键,到进入作业系统的期间,储存于主机板上那颗EEPROM(电气可抹除暨可程式化唯读记忆体)里的BIOS便会开始执行以下的工作: 1. 初始化:     当电脑打开,CPU会自行重置为初始状态,准备运作。BIOS boot block(基本输出输入…

    Linux干货 2016-05-01
  • 26期全程班-第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     cp  复制命         ex:cp -a /etc/initab /var/log/message /tmp/   …

    Linux干货 2017-01-10
  • shell脚本编程入门(一)

    概述 shell脚本就像是早期DOS年代的批处理文件(.bat),最简单的功能就是将许多命令写在一起,让用户很轻松能够一下子处理复杂的操作(执行一个脚本就能够一次执行多个命令)。而shell脚本更提供数组、循环、条件与逻辑判断等功能,让用户也可以直接以shell来编写程序,而不必使用类似C语言等传统程序编写的语法。 shell脚本基础 shell脚本是包含一…

    Linux干货 2016-08-15