LVS 是linux virtual server 的简写,即linux的虚拟服务器,是一个虚拟的服务器集群系统。ip负载均衡技术是在负载调度器的实现技术中效率最高的,在已有的ip负载均衡技术中,主要通过网络地址转换(即VS/NAT 技术)、由于使用nat技术会使分派器成为瓶颈,所以提出了通过ip隧道实现虚拟服务器(即VS/TUN和通过直接路由实现虚拟服务器的方法即VS/DR。 VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
LVS采用ip负载均衡技术和基于内容的请求分发技术。调度器具有很好的吞吐率,将请求均衡的转移到不同的服务器上执行,且调度器自动屏蔽故障的服务器,从而将一组服务器构成了一个高性能、高可用的虚拟服务器 。整个服务器对客户完全透明,而且无需修改客户端和服务器端的程序,所以有透明性、可伸缩性、高可用性和易管理性优点。

采用三层结构:

A:负载调度器director

它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B:服务器池

是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C:共享的存储

它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

NAT模型:

如图所示:外网用户直接访问Director上的VIP地址,在Director 上做DNAT,将请求分派给给real server服务器中的其中一台,请求可以是http、mail、dns或ftp。然后real server将请求结果通过Director的Dip发送给请求者。由于请求和回复都要经过Director,容易使Director成为瓶颈,最多可以有10个节点

DR模型:

如下图所,外网用户直接访问Director上的VIP地址,Director将请求分派给real server 进行处理,当realserver处理后不再经过Director,而是直接送至客户端,绕开了Director,使Director不再成为瓶颈。可以有大量的节点,最多可以有100个节点

LVS调度算法

当Director收到请求后,需要将请求发送给Real server 进行处理,但是发送哪一台服务器就要按照算法进行分派。

共有十总调度算法:

固定算法4个:按照设置的算法执行,不考虑现实状况

RR:Round-robin 轮循调度算法

WRR:Weighted round-robin 加权的轮循调度算法,权值越大越优先

DH:Destination hashing 目标hash 同一个ip用户的请求都发送给其中的一台固定的realserver

SH:Source hashing 来源hash 当director的前端同时连接有两台或多台路由器或防火墙时,用户通过通过其中一台路由器(或防火墙)将请求发送给director,realserver处理完后将仍然从进入的路由器(或防火墙)的接口出去

动态算法:根据Director中的跟踪表,查看每个服务器的active 和inactive 个数进行调整

LC:least-connection :最小连接 查看每个节点的active 和inactive数量,根据active* 256+inactive,哪个结果小,就将请求发送给该服务器

WLC:weighted least-connection 加权的最小连接,计算方法:(active* 256+inactive)/权值。,哪个结果小,就将请求发送给该服务器

SED:最少的期望权值 只考虑active激活的连接,不考虑inactive连接。计算方法:(active+1)*256

NQ永不排队 若果某个节点未处于活动连接,就将下一个请求发送给该节点进行处理

LBLC:当director和服务器之间有squid或varnish缓存服务器时,需要在director上设置,使请求分别到两台缓存服务器上

LBLCR:在LBLC的基础上,若其中一部分人不在访问网站,则下面一台缓存服务器将不会有页面缓存,这时候该缓存服务器将会空闲下来。该算法使下面一台缓存服务器自动复制上面一台缓存服务器的网页,用于提供缓存

案例一

如下图所示,外网用户直接访问Director上的VIP地址1.1,使用网络地址转换(即VS/NAT 技术)director将请求分派给下面两台realserver ,分贝使用RR轮循调度算法和WRR加权轮循调度算法

拓扑图:

配置步骤

1.新建挂载点,挂载光盘

2.配置yum工具

# vim /etc/yum.repos.d/rhel-debuginfo.repo

3.安装ipvsadm工具

4.直接启动ipvsadm将失败,提示不存在文件/etc/sysconfig/ipvsadm

5.先执行命令service ipvsadm save,将会生成/etc/sysconfig/ipvsadm文件,然后启动将成功

6.打开路由转发功能,并使改动生效

# vim /etc/sysctl.conf

6.定义服务。

-A:增加virtual service ,即director的vip地址加端口号

-t :tcp -s:算法 scheduler,rr为轮循调度算法

7.添加服务器。

-a:添加realserver -t:tcp -r :realserver -m:masquerading即nat模式

8.使用命令ipvsadm -ln 来查看配置的规则

9.保存配置的规则

此时文件 /etc/sysconfig/ipvsadm的内容为:

10.在两台realserver上分别配置web服务,将网关指向Director的DIP地址192.168.2.1,此处省略。外网pc访问VIP

刷新一次,在两个网站间轮循

11.更改调度算法为wrr

# ipvsadm -E -t 192.168.1.1:80 -s wrr

# ipvsadm -e -t 192.168.1.1:80 -r 192.168.2.100 -m -w 10 将权重调整为10

# ipvsadm -e -t 192.168.1.1:80 -r 192.168.2.200 -m -w 5 将权重调整为5

12.保存规则

13.再次访问,将会出现两次web1,一次web2站点,这是由于realserver1的权重是realserver2的2倍

案例二: 如图所示,director上的网卡eth0:0上配置VIP地址,eth0上配置DIP地址,外网用户通过交换机访问到director的VIP,然后director通过DIP将请求发送至两台realserver :realserver1和realserver2 ,然后两台realserver 通过右侧交换机到存储服务器上查找网页,在将结果直接通过左侧的交换机返回给客户机,绕开了director

拓扑图:

1.按照要求分别配置realserver1和 realserver2的地址

realserver1:

realserver2:

2.先修改arp_announce 和arp_ignore的值,然后在分别配置两台realserver的loopback 的vip,否则将会出现vip地址冲突

使用命令:sysctl -a |grep arp 查看arp_announce和arp_ignore的值

3.需要将arp_announce的值改为2,将arp_ignore的值为1,写入文件/etc/sysctl.conf

4.同理修改realserver2上的内核选项

5.配置realserver1的loopback0:0的ip地址,子网掩码为4个 255

6.重启realserver1网络服务

7. 配置realserver2的loopback0:0的ip地址,子网掩码为4个 255,并重启网络服务

在两台realserver上分别创建路由,即当director将请求发送至realserver上时,目的地址为1.101,

这时候realserver接收到请求并将到达ip为1.101的请求交与网卡lo:0来处理

Realserver 1上:

Realserver2上:

这是临时修改路由,要永久修改路由可以编辑文件:/etc/sysconfig/network-scripts/route-lo:0

ADDRESS0=192.168.1.101

NETMASK=255.255.255.255

即进入服务器realserver内部且目的地址为1.101的数据都交给网卡lo:0来处理,这样数据发出时也将由lo:0网卡发出,。

客户端发送数据目的地址为1.101,数据返回时源ip也是1.101这样客户端就会接收该数据

8.在director上安装ipvsadm服务

9声明服务,添加服务器

# ipvsadm -A -t 192.168.1.101:80 -s rr

# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.200 -g

# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.201 -g

10.保存配置,启动ipvsadm服务

11.分别在realserver1和realserver2上安装httpd服务,并分别产生网页内容分别为“web1” “web2”

realserver1的网页:

realserver2的网页:

通过外网访问,可以交替访问到两个网页

12.现在直接路由模型已经搭建完成,但是两个网页不能保持动态一致,可以使用nfs的开机自动挂载,将共同的页面存放到一台独立的存储服务器中,当访问页面时,自动读取同一份网页文件/abc/index.html

13.编辑共享清单,将文件夹/abc 共享出来,允许192.168.2.0网段用户访问

# vim /etc/exports

14.导出共享清单: r:导出 v:详细信息

15.在realserver1上,修改文件系统表

16.执行命令mount -a ,然后查看是否挂载成功

17.在realserver2上修改文件系统表,实现开机自动挂载

18. 执行命令mount -a ,然后查看是否挂载成功

19.通过访问director的VIP,直接访问到了放置在存储器上的网页文件

转载于:https://blog.51cto.com/jialiang10086/1020683

LVS负载均衡群集之NAT模型DR模型相关推荐

  1. LVS负载均衡群集(NAT模式)

    目录 群集 群集的含义 为什么会有群集 群集的分类 负载均衡群集 高可用群集 高性能群集 负载均衡群集架构和工作模式 负载均衡的结构 负载均衡群集工作模式分析 LVS虚拟服务器 Linux Virtu ...

  2. 高效多用的群集之LVS负载均衡群集(NAT模式)

    目录 一.群集 1.群集的含义 2.为什么会有群集 二.群集的分类 1.负载均衡群集 2.高可用群集 3.高性能群集 三.负载均衡群集架构和工作模式 1.负载均衡的结构 第一层,负载调度器(Load ...

  3. LVS负载均衡群集架构(二):DR模式群集部署+keepalived

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.LVS-DR数据包流量分析 二.LVS-DR中的ARP问题 三.解决ARP的两个问题的设置方法 四.Keepalived ...

  4. iptables nat实验_【零基础学云计算】LVS负载均衡群集之NAT模式搭建 (实践篇)...

    实验原理图 实验环境 LVS调度器作为web服务器池的网关 LVS服务器配置两块网卡分别连接内外网 使用轮询(rr)调度算法 LVS负载调度器网段规划 内网33网关:192.168.144.1 外网3 ...

  5. LVS负载均衡群集——NAT地址转换

    目录 一.集群与分布式 1.1 集群的含义 1.2 LVS模型 1.3系统性能扩展方式 1.4 群集的三种类型 1.4.1. 负载均衡群集 1.4.2.高可用群集 1.4.3.高性能运算群集 1.5分 ...

  6. LVS 负载均衡群集----NAT模式

    目录 一.企业群集应用概述 1.1 群集的含义 1.2 问题 1.3 解决办法 1.4 系统性能扩展方式 二.企业群集分类 2.1  负载均衡群集 2.2  高可用群集 2.3  高性能运算群集 三. ...

  7. LVS负载均衡群集概念、NAT模式LVS负载均衡实战部署

    目录 引言: 一.群集的含义 1.1 群集存在的必要 1.2 解决方法 二.群集的种类 2.1 负载均衡群集(Load Balance Cluster) 2.2 高可用群集 (High Availab ...

  8. LVS负载均衡群集部署之——NAT模式的介绍及搭建步骤

    文章目录 一.企业群集应用概述 1.1 群集的三种类型 1 负载均衡群集 2 高可用群集 3 高性能运算群集 1.2 负载均衡结构 1.3 负载均衡群集工作模式 (1) NAT模式--地址转换 (2) ...

  9. LVS负载均衡群集——NAT模式实例

    目录 一:企业群集应用概述 1.1群集的含义 1.2群集存在的必要 1.3解决的方法 二:企业群集的分类 2.1负载均衡群集(Load Balance Cluster) 2.2高可用群集(High A ...

  10. LVS负载均衡群集之构建NAT模式

    一.案例概述 LVS负载均衡模式-NAT模式:NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(源地址NAT).如果把NAT的过程稍微变化,就可以 成为负载 ...

最新文章

  1. 白给的性能不要?cvpr2021-Diverse branch block
  2. 深入剖析nginx第141页
  3. Java数据库连接池实现原理
  4. 双11不过瘾?双十二低至半价继续抢,更有免费学的机会等你抢!
  5. mysql c 多线程封装_mysqlConnectorC/C++多线程封装_MySQL
  6. java接口开发 全局异常,全局异常处理
  7. PHP Fatal error: Uncaught think\\exception\\ErrorException: error_log相关解决方法
  8. 禅道测试套件怎么用_【分享】—如何学习软件测试
  9. JavaScript 的数据类型 相关知识点
  10. 【高效学数据库】第一范式、第二范式、BCNF范式、第三范式、第四范式概念及举例
  11. 在写移动端页面的布局的时候是按照iphone6的尺寸写的,在iphone5中因为宽度的问题导致样式错乱
  12. mysql 同比sql_mysql计算同比和环比的区别_【面试真题】Mysql实现计算同比、环比...
  13. 扫地机器人噪音响_扫地机器人噪音大的解决方法
  14. vue单文件组件中引用其他组件
  15. Kroll任命Richard Davies担任网络风险业务副董事总经理,常驻香港
  16. 计算机专业考研复习要点,2017年最新考研各科目复习要点
  17. http缓慢攻击漏洞
  18. 与以太坊同源异流,eCash“PoW+雪崩”组合共识各司其职
  19. 李银河应该重读王小波《摆脱童稚状态》--尼伯龙根·蜗藤
  20. JVM内存分哪几个区,每个区的作用是什么?

热门文章

  1. access denied (java.io.FilePermission IKAnalyzer.cfg.xml read
  2. linux vim与less区别,linux中cat、more、less命令区别详解##less 最合适最好用,和vim一样好用...
  3. 全网首发:TeaVM编译时容易出错的几种代码
  4. 文字处理技术:正式开始新布局工作
  5. 没有com.sun.tools.javac.main的解决办法
  6. 管理感悟:代码审查做哪些事情?
  7. 刷机包提取hex和mbn方法_小米平板2刷lineage os与remix os及其体验
  8. python中string库_Python——string库
  9. python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...
  10. php fork demo,php多进程demo