LVS部署测试

防伪码:没有相当程度的孤独是不可能有内心的平和。

1、概念

1.1 介绍

负载均衡技术有很多实现方案,如基于DNS域名轮流解析的方法、基于客户端调度访问的方法、基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的就是IP负载均衡技术。

LVS的IP负载均衡技术是通过ipvs内核模块来实现的,ipvs是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问集群服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是ipvs实现的重点技术,ipvs实现负载均衡机制有四种,分别是NAT、TUN和DR以及后来经淘宝开发的FullNAT。

LVS是Linux Virtual Server的简写,即Linux虚拟服务器,可以在UNIX/Linux平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士成立,是国内最早出现的自由软件项目之一。

Linux内核2.4.24版本以后IPVS已经成为Linux官方标准内核的一部分。LVS在内核中的名字是IPVS。

LVS分为两个部件:ipvs和ipvsadm

  • ipvs : 工作于内核空间,主要用于使用户定义的策略生效;
  • ipvsadm : 工作于用户空间,主要用于用户定义和管理集群服务的工具;

不能直接配置内核中的IPVS,而需要使用IPVS的管理工具ipvsadm进行管理。也可以通过keepalived软件直接管理ipvs。

ipvs工作于内核空间的INPUT链上,当收到用户请求某集群服务时,经过PREROUTING链,经检查本机路由表,送往INPUT链;在进入netfilter的INPUT链时,ipvs强行将请求报文通过ipvsadm定义的集群服务策略的路径改为FORWORD链,将报文转发至后端真实提供服务的主机。

1.2 结构

LVS 集群分为三层结构:

  • 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上执行,而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】
  • 服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS
  • 共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相同的服务

1.3 工作模式

VS/NAT(Virtual Server via Network Address Translation):网络地址映射,通过网络地址转换,调度器LB重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文处理后,返回时必须通过调度器,经过调度器时报文的源地址被重写,再返回给客户,完成整改负载调度过程。

IP TUN(IP隧道):是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。Director和RealServer必需在物理上有一个网卡通过不间断的局域网相连。 RealServer上绑定的VIP配置在各自Non-ARP的网络设备上(如lo或tunl),Director的VIP地址对外可见,而RealServer的VIP对外是不可见的。RealServer的地址即可以是内部地址,也可以是真实地址。

VS/DR(Virtual Server Direct Routing,直接路由):通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器将响应后的处理结果直接返回给客户端用户。但要求调度器LB和真实服务器RS都有一块网卡连在同一物理网段上,即必须在同一个局域网环境。

1.4  常用的调度算法

常用算法 使用说明
RR Round Robin(轮询调度),它将请求依次分配给不同的RS节点,也就是RS节点均摊请求,这种算法比较简单,但只适合RS节点性能相差不大的情况。
WRR Wighted Round Robin(加权轮询调度),根据不同RS节点的权值分配任务,权值较高的RS将优先获得任务,且分配到的连接数比权值低的要多。
DH Destination Hashing(目标地址哈希调度),以目的地址为关键字查找一个静态hash表来获得需要的RS。
SH Sourse Hashing(源地址哈希调度),以源地址为关键字查找一个静态hash表来获得需要的RS。
WLC Weighted Least Connection(加权最小连接数调度),假设各台RS的权值为Wi,当前的TCP连接数为Ti,选取Ti/Wi为最小的RS作为下一个分配的RS。
LC Least Connection(最小连接数调度),将新的连接请求发送给当前TCP连接数最小的RS节点。
LBLC Locality-Based Least Connection(基于地址的最少连接数调度),根据请求的目标IP地址找出该IP地址最近使用的RealServer,若该RealServer是可用且没超载,则将请求发送给该服务器;若服务器不存在或超载,则用最少连接数的原则选出一个可用的RS,将请求发送到该RS。
LBLCR Replicated and Locality-Based Least Connction(基于地址带重复最小连接数调度),对于某个目的地址,对应有一个RS子集。若对此地址请求,则会分配子集中连接数最小的RS;若子集中所有RS都满负荷,则从集群中选择一个连接数最小的RS,将它加入到此子集中并分配连接;若一定时间内,未做任何修改,则删除子集中负载最高的RS节点。
SED Shortest Expected Delay scheduling SED(最短期望延迟),基于WLC算法,根据Ti+n/Wi最小值作为下一个分配的RS。
NQ Nerver Queue Scheduling(最少队列调度),如果有台RS的连接数为0,则直接分配过去,不需要进行SED运算。

2、部署测试

2.1 环境准备

主机名 IP VIP 系统
Director 192.168.10.51 192.168.10.31 CentOS release 6.9 (Final)
RS-01 192.168.10.52 CentOS release 6.9 (Final)
RS-02 192.168.10.53 CentOS release 6.9 (Final)

2.2 RS节点准备

两台RS均部署nginx

# 安装pcre和openssl
yum install -y pcre-devel openssl-devel

# 编译安装nginx
useradd nginx -s /sbin/nologin -M
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --user=nginx --prefix=/app/nginx-1.12.0/ --with-http_stub_status_module --with-http_ssl_module --with-http_relip_module
make && make install
ln -s /app/nginx-1.12.0 /app/nginx

# 启动nginx
/app/nginx/sbin/nginx -t
/app/nginx/sbin/nginx

2.3 安装LVS

# 安装依赖包
yum install -y libnl* popt*

# 编译安装ipvsadm
cd /opt
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar zxf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make && make install

# 加载ip_vs模块
modprobe ip_vs
lsmod|grep ip_vs

# 添加VIP
ifconfig eth0:0 192.168.10.31/24 up
route add -host 192.168.10.31 dev eth0

# 配置ipvsadm
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 192.168.10.31:80 -s rr -p 20
ipvsadm -a -t 192.168.10.31:80 -r 192.168.10.52 -g -w 1
ipvsadm -a -t 192.168.10.31:80 -r 192.168.10.53 -g -w 1
ipvsadm -L -n

2.4 配置RS

2.4.1 配置RS-01

# 添加RS-01节点测试页面
echo "RS-01-192.168.10.52" >/app/nginx/html/index.html

# 添加路由
ifconfig lo:0 192.168.10.31/32 up
route add -host 192.168.10.31 dev lo

# arp_ignore:定义对目标地址为本地IP的ARP询问的不同应答模式。
# arp_announce:对网络接口上,本地IP地址发出的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

2.4.2 配置RS-02

echo "RS-02-192.168.10.53">>/app/nginx/html/index.html
ifconfig lo:0 192.168.10.31/32 up
route add -host 192.168.10.31 dev lo
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、测试

在浏览器地址栏输入http://192.168.10.31

由于浏览器有缓存及LVS默认会话保持等影响,测试的时候要多次测试且间隔一定时间才能切换到另一台,尽可能换不同的客户端测试。

时间: 2024-10-05 12:38:10

LVS部署测试的相关文章

集群系列教程之:keepalived+lvs 部署

集群系列教程之:keepalived+lvs 前言:最近看群里很多人在问keepalived+lvs的架构怎么弄,出了各种各样的问题,为此特别放下了别的文档,先写一篇keepalived+lvs架构的文档,使那些有需求的人能够得以满足.但是此篇文档是架构文档,不是基础理论,但我想你能做这个架构,势必也了解了基础理论知识,更多的理论知识体系,请看下回分解.... 测试拓扑: 环境说明: 从上面的拓扑图,就可以看出本实验的环境信息,其中实线代表的是真实的物理连接,而虚线表示的是逻辑关系.hostna

SCVMM 2012 R2部署测试之五向SCVMM中添加Hyper-V主机

1. 创建运行方式账户 打开SCVMM管理控制台,点击设置-创建运行方式账户 填写账户名称,这里用vmmadmin来作为运行方式账户,点击确定. 注:使用运行方式账户时不得与安装vmm时的服务账户使用同一账户 2. 创建主机组 打开管理控制台,点击VM和服务,在所有主机右键菜单中选择创建主机组. 输入主机组名称'HY Server'. 3. 添加Hyper-V主机 在HY Server文件夹右键菜单选择添加Hyper-v主机和群集.(添加主机的操作也可以在'构造'中配置),打开'添加资源向导'.

SCVMM 2012 R2部署测试之六创建hyper-v故障转移群集

1. 确认磁盘挂载状态 确保两块数据磁盘是联机状态,在创建群集时SCVMM会自动将小磁盘设置为仲裁磁盘,大磁盘作为数据磁盘.仲裁磁盘大小建议不超过5G. 2. 创建hyper-v故障转移群集 打开SCVMM管理控制台,点击构造-创建,选择Hyper-V群集,启动创建群集向导. 在创建群集向导中输入群集名称'vcluster',选择使用现有运行方式账户,点击浏览选择刚刚创建的运行方式账户. 主机组选择HY Server,将hy01.hy02两台主机添加至要群集的主机中,下一步. 勾选网络,输入群集

SCVMM 2012 R2部署测试之一部署Hyper-v角色

环境准备 IP地址 主机名 类型 10.1.10.34 hy02.tidepharm.tk 物理主机 10.1.10.44 hy01.tidepharm.tk 物理主机 10.1.10.68 dc-1.tidepharm.tk 虚拟机 10.1.10.69 scvmm2012.tidepharm.tk 虚拟机 所有服务器操作系统为Windows Server 2012 R2,vmm数据库版本为SQL Server 2012 SP1,域名为tidepharm.tk,scvmm2012.hy01.h

SCVMM 2012 R2部署测试之三数据库环境准备

首先在ADUC中创建vmmadmin账户并加入到scvmm2012本地管理员组中 1. 安装.net3.5 安装SQL Server 2012需要.net3.5,在添加角色和功能向导中添加此功能,勾选.net3.5点击下一步. 点击指定备用源路径 这里需要将2012R2操作系统安装光盘挂载到scvmm2012主机,并指定源目录 完成安装 2. 安装SQL Server 2012 将SQL Server 2012 SP1光盘挂载到scvmm2012主机上,运行安装向导.点击安装.全新SQL Ser

.Net Native 系列《三》:.NET Native部署测试方案及样例

之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方信息的翻译开始做起. 此系列系小九的学堂原创翻译,翻译自微软官方开发向导,一共分为六个主题.本文是第三个主题:.NET Native部署测试及样例. 向导文链接:<C++的性能C#的产能?! - .Net Native 系列:开发向导> [小九的学堂,致力于以平凡的语言描述不平凡的技术.如要转载,

Lync2010服务器的高可用性部署测试

最近对lync2010的高可用性进行了测试,此次测试的架构为1台2012DC,DC服务器上部署CA证书和DNS服务器,两台前端服务器做高可用,用DNS轮询的办法实现地址池的容错,一台LYnc后端数据库服务器,和一台lync Archive存档监控服务器. 由于部署的是容错架构,所以必须部署lync2010企业版,具体部署在前面文挡已经有了记录,就不在描述,此次部署测试的2个问题,需要记录注意一下 1:对pool地址池里面部署2台及以上的前端服务器,在部署时,需要先在拓扑里面生成定义,之后在部  

Linux负载均衡之lvs部署与配置

在上一节我们讲到了关于lvs的基本介绍,本节我们将会讲到关于lvs部署安装的相关细节,比如安装前的注意事项等等: Lvs是linux virtual server的缩写.虚拟的服务器.可以在Linux和unix实现负载均衡的软件.工作在内核层lvs是在linux内核中实现的.配置调度工具iplvs时,不能直接配置.需要使用ipvsadm工具或者使用keepalive软件来管理lvs. 一.部署前准备 1.1 在安装前首选需要了解几个与lvs相关的术语: 术语名称 含义 ipvs lvs实现调度工

OpenStack之Ocata单控部署测试

本着学以致用的原则,学习到新的东西一定要亲自去实践操作,就像别人回来给你描述那里的风景是多么多么美好,你如果不亲自去走一遭看一遍是体会不到的,要不然你大爷永远还是你大爷!P话!^_^O(∩_∩)O哈哈~~~~~ (仅供参考) 简介: Ocata与以往版本主要区别在于引入了cell(单元格),cell v2 自 Newton 版本引入 ,Ocata 版本变为必要组件,以后默认部署都会初始化一个单 cell 的架构. OpenStack 在控制平面上的性能瓶颈主要在 Message Queue 和