热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LVS负载均衡_LVS负载均衡器NAT和DR工作模式详解

 在试验之前为了更好理解设置的参数,所以先讲解一下命令。 一、lvs配置文件和命令:

 在试验之前为了更好理解设置的参数,所以先讲解一下命令。

 一、lvs配置文件和命令:

  程序包:ipvsadm(LVS管理工具)

  配置文件:/etc/sysconfig/ipvsadm-config 【rpm -ql ipvsadm  查询包的具体列表】

  -A  在服务器列表中新添加一条新的虚拟服务器记录

  -t 表示为tcp服务

  -u 表示为udp服务

  -s 使用的调度算法  (rr|wrr|wlc|lc|dh|sh|lblb|lblcr

  -a 在服务器里添加一条新的真是主机记录

  -m 说明lvs提供nat工作模式

  -g 说明lvs提供直接路由器模式(也是lvs默认的工作模式)

  -i 指定lvs工作模式为隧道模式

  -m 真实服务器的权值

  -E 编辑内核虚拟服务器表中的一条虚拟服务器记录

  -D  删除内核虚拟服务器列表中的一条虚拟服务器记录

  -C 清楚内核虚拟服务器中的所有记录

  -R 恢复虚拟服务器所有规则

  -e 编辑虚拟服务器记录中一条真实服务器记录

  -d  删除虚拟服务器记录中的某条真实服务器记录

  -L 显示内核服务器列表

  -n 以数字方式显示地址和端口号

  --stats  统计信息

  -Z 虚拟服务器记录器清零

  -S –save 保存虚拟服务器规则,输出为-R 选项可读的格式

 二、lvs负载均衡调度算法:

 (1)静态

  ①RR 轮叫调度     【一个接着一个来,平均分配】

  ②WRR:加权轮叫 【负载能力较大者分配的更多】

  ③DH:目标地址散列调度   【据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。】

  ④SH:源地址hash   源【地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空】

  (2)动态:

  ①LC:最少链接 【通过用户请求数和服务器承载的数量,把多余请求数发送到最少的一台服务器上】

  ②WLC:加权最少连接 【给服务器不忙的派发任务,同时性能较好的服务器也能劳动更多】

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

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

  三、LVS负载均衡器NAT工作模式。

  大概网络拓扑图:

  技术分享

  详细说明:

  CIP:指客户端IP

  VIP:指负载均衡服务器的虚拟IP

  DIP:指负载均衡服务器的真实IP

  RS:指后端服务器

  RIP:指后端服务器IP

  LVS:负载均衡服务器

  ①当用户请求到达LVS,此时请求的数据报文会先到达内核空间的PREROUTING链,此刻报文源IP为CIP,目标IP为VIP。

  ②当PREROUTING链检查数据包是访问自己的,就将数据包发送到INPUT链。

  ③LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间,如果在就修改数据包的目标IP地址为后端服务器IP,然后将数据包发送至POSTROUTING链。此刻源IP为CIP,目标地址为RIP

 ④POSTROUTING链通过选路,将数据包发送到后端服务器(RS),后端服务器(RS)对比发现目标是发自己的IP,开始构建响应报文发回给LVS,此刻报文的源地址为RIP,目标地址为CIP。

 ⑤LVS在响应客户端钱,此刻会把源地址修改为自己的VIP地址,然后响应给客户端。此刻报文的源IP为VIP,目标地址为CIP。

 具体步骤:

  三台主机,一台为LVS服务器,两外两台为RS服务器。

  centos7.4为LVS服务器,172.17.66.88为虚拟IP(VIP),192.168.11.11为真实IP(DIP)。

  centos7和centos7-2为后台服务器(RS),两个网段分别为192.168.88.88和192.168.23.23(确保此地址和RS服务器能通)。

  ①装包。

  命令:yum install ipvsadm

  ②负载就均衡服务器上配置

  命令:ipvsadm -A -t 172.17.66.88:80 -s wrr 【在负载均衡服务器上开一个为80端口的虚拟记录,并使用wrr调度方式】

  命令:ipvsadm -a -t 172.17.66.88:80 -t 192.168.88.88 -m -w 1 【配置web服务器后端RIP为NAT工作方式,权重为1】

  命令:ipvsadm -a -t 172.17.66.88:80 -t 192.168.23.23 -m -w 1 【配置web服务器后端RIP为NAT工作方式,权重为1】

  技术分享

  ③开启LVS的转发功能

  echo 1 > /proc/sys/net/ipv4/ip_forward 【临时开启转发功能】

  vim /sysctl.conf

  添加net.ipv4.ip_forward=1 sysctl -p    【永久生效】

  技术分享

  ④添加RS到LVS的默认路由。

  命令:route add default gw 192.168.11.11

  技术分享

  ⑤测试。

  在后端两个服务器(RS)写两个测试页面index.html

  技术分享

  以上就实现了负载均衡,由于使用的wrr调度以及权重都是1,所以每次访问都是轮流。

  注意:做该实验把RS桥接断掉,不然影响添加的默认路由器工作。

  四、基于LVS实现DR工作模式。

  这种模式是解决基于NAT模式的弊端,因为NAT模式发送的数据进出都经过LVS服务器,会对LVS造成太大压力。

  大概网络拓扑图:

  技术分享

  详细说明:

  ①当客户端发送请求到LVS,此时的请求报文会先到内核的PREROUTING链。此刻的源IP为CIP,目标IP 为VIP。

  ②PREROUTING链检查数据包是访问自己的,就发送到INPUT链。

  ③IPVS对比数据包请求的服务是否在定义的规则里,如果是就将报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,然后将数据包发送到POSTROUTING链。此刻的源IP和目标IP都未发送改变,只是修改了源MAC为DIP的MAC,目标MAC为RID的MAC地址。

  ④由于DS和RS在同一段网段,所以工作在二层。POSTROUTING检查目标地址为RIS的MAC地址,就将数据包发送到RS。

  ⑤RS查看MAC地址为自己的MAC地址,就接下包。处理完成后,将响应报文通过lo接口传送到eth0网卡后发出。此时的源地址为VIP,目标地址为CIP,由此完成了数据的传输。

  具体步骤:

  三台服务器在同一个网段,一个为lvs服务器【虚拟IP(别名):172.17.252.251;真实IP(DIP):172.17.66.88】,后台服务器1(RIP):172.17.110.111,后台服务器2(RIP)172.17.33.34

  ①由于都在一个网段,多以在LVS配置一个网卡别名。【并只广播自己】

  技术分享  ②配置LVS的虚拟IP(VIP)和真实IP(DIP)。

  技术分享

  ③在后台服务器(RS)上配置VIP并只广播自己。

  技术分享  ④设置RIP到本地VIP上的路由记录,即本地回旋网卡路由。

  技术分享

  ⑤配置只回答目标IP地址是来访网络接口本地地址的ARP查询请求以及在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.

  技术分享

  ⑥RS2服务器上设置和RS1一样的配置

   技术分享  ⑦测试。

 技术分享



推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 俗话说,好记性不如烂笔头,这些东西也都是我Google来的,做个笔记以后自己安装也方便些。因为官方wiki的BeginnersGuide讲的非常好,大部分步骤按照wiki一步一步来就 ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
  • 用ESP32与Python实现物联网(IoT)火焰检测报警系统
    下图是本案例除硬件连线外的3步导学开发过程,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
author-avatar
手机用户2502908237
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有