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

Linux的企业-LVS(Linux虚拟服务器)及FULLNAT设置

一.LinuxVirtualServer(linux虚拟服务)lvs工作于IOS七层模型的传输层,通过对TCP、UDP、SCTP、IPsecESP、AH这些工作在四层的协议的支持,

一.Linux Virtual Server linux虚拟服务)

lvs工作于IOS七层模型的传输层,通过对TCPUDPSCTPIPsec ESPAH这些工作在四层的协议的支持,根据目标地址和端口做出转发与否的决策,根据调度算法做出转发至哪一个端口的决策。

    LVS将其控制程序ipvs嵌套至传输层数据流的Input钩子函数上,ipvs将发送至本控制器主机(director)上的数据流在input链上进 行截流,通过对数据报文的分析根据自身的算法将数据流转发至后台真正提供服务的主机(Real Server)上,达到根据后端服务器负载能力均衡分配处理任务的效果。

    lvs中的术语:

    ClientIPCIP------------------------客户端ip

    Dirvector Virtual IPVIP------------控制器上对外开放的ip

    Dirvector IPDIP--------------------控制器上连接后台服务器的ip

    Realserver IPRIP-------------------后台服务器的ip

    Director-----------------------------控制器或调度器

Real ServerRS--------------------------后台提供服务的主机

 

简单模型:


基本思路就是把多个LVS组成一个OSPF集群,这样可以使得LVS集群的性能提高并负载均衡,高可用性,4层负载均衡,效率高,各个层面都有冗余负载。

wKioL1nDKseR4rPuAABc_0WakC8359.png

.Lvs的类型

1.Lvs-nat

他通过修改请求报文的目标地址为根据调度算法所挑选出的某RSRIP来进行转发。

架构特性:

1  Rs应该使用私有地址,即RIP应该为私有地址,各RS的网关必须执行DIP

2  请求报文和响应报文都经由Directory转发;调度器作为所有服务器节点网关,即作为客户端的访问入口,也是各节点回应客户端的访问出口。

3  支持端口映射

4  RS可以使用任意类型的OS

5  RSRIP必须与DirectoryDIP在同一网络,中间不需要路由器

NAT模型优缺点:

优点:节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。

缺点:调度器位于客户端和集群节点之间,并负责处理进出的所有通信;(压力大的根本原因)大规模应用场景中,调度器容易成为系统瓶颈。

图示:

 wKioL1nDKuOQ6i38AABl-Uyk46w776.png

 

2.LVS-DR                                 

Diectory在实现转发时不修改请求的IP首部,而是通过直接封装MAC首部完成转发;目标MACDirectory根据调度方法挑选出某RSMAC地址。

架构特性:

1  保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Directory

解决方法:

静态绑定:在前端路由器直接将VIP对应的目标MAC静态配置为DirectoryMAC地址

缺点:1、如果路由是运营商提供则没有路由器管理权限,则无法配置

      2、如果调度器做了高可用,当主备切换的时候,MAC地址会发生改变。

Arptables:在各RS上,通过arptables规则拒绝其响应对应的ARP广播请求

内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIPARP广播请求;

2  RSRIP可以使用私有地址;但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作

3  请求报文必须经由Directory调度,但响应报文必须不能经由Directory

4  RIP必须与DIP在同一物理网络中

5  不支持端口映射

6  RS可以使用大多数的OS

7  RS的网关一定不能指向Directory

优点:负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,大大提高了服务器并发能力。

不足:1LVS-RS间必须在同一个VLAN

     2RS上绑定VIP,风险大。

图示:

wKioL1nDKu_xcGxgAABjuDXjxAM258.png 

 

3.Lvs-tun

不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外在封闭IP首部,经由互联网把请求报文交给选定的RS,主要实现异地容灾

架构特性:

1  RIPDIPVIP都是公网地址

2  RS的网关不能,也不可能指向DIP

3  请求报文由Directory分发,但响应报文直接由RS响应给client

4  不支持端口映射

5  RSOS必须得支持IP隧道

优点:实现了异地容灾,避免了一个机房故障导致网站无法访问。

缺点:RS配置复杂(IPIP模块等)

图示:

wKioL1nDKwODdDMUAAD6FkBz51U927.png 

4.lvs-fullnat(双向转换)

    通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发:

    架构特点:这是一种对nat模型的改进,是一个扩展,使得RSDirector可以处于不同网络。

        1RIPDIP可以使用私有地址;

        2RIPDIP可以不再同一个网络中,且RIP的网关未必需要指向DIP

        3)支持端口映射;

        4RSOS可以使用任意类型;

        5)请求报文经由Director,响应报文也经由Director

优点:实现了不同Vlan间的负载均衡,抗危险性强

缺点:性能差

 

图示:

wKiom1nDK0iD6HqrAACEjwAK4qk049.png 

(1)配置编译


安装模块

wKioL1nR3ufSZIFFAACaJI9PcTY695.png


安装

wKiom1nR3y2jpGHjAACcecgueSE862.png


修改设置启动内核显示,将defauli变为0,修改完参数后reboot

wKioL1nR3u7RSi4XAARhSgqR1YM363.png

wKiom1nR3zTSehyqAAB80G0TRb0580.png


(2)安装keepalived

wKioL1nR3uigU5VOAADw6jbr2ik424.png

wKiom1nR3y6xpNJ4AAC7bSF_4Ik398.png


(3)安装lvs ipvsadm

wKioL1nR3uiCNlspAAB_FluLih0838.png

wKiom1nR3y-D-fQpAACP-JG6CG0239.png


(3)配置ipvsadm

wKioL1nR3unzsBt6AAA8LIEymh0258.png


wKiom1nR3zCTVBliAACic78SSAU186.png

wKioL1nR3uqAYfQ2AAAiTOvgSAA572.png


添加虚拟IP

wKiom1nR3zCC7PZLAAC99m5mSGs648.png


(4)配置keepalived

wKioL1nR3uqQMjzIAABOQIIqotw690.png

wKiom1nR3zGjRMELAACB-ximYyw218.png

wKioL1nR3uuxhazjAACZav0RrsQ964.png

wKioL1nR3uvyM2WgAABZxqTCgW0687.png

wKiom1nR3zHiLJ1uAABZg4LCffU262.png


(5)fullnat配置完成

wKioL1nR3uvSgV5FAACjCst3YH0505.png

wKiom1nR3zKRFpcfAAC46WsB2sE581.png



.LVS的调度算法

LVS的调度方法分为两种,一种是静态方法,一种是动态方法:

静态方法:仅根据算法本身实现调度;实现起点公平,不管服务器当前处理多少请求,分配的数量一致

动态方法:根据算法及后端RS当前的负载状况实现调度;不管以前分了多少,只看分配的结果是不是公平

静态调度算法(4种):

(1)rr : round robin :轮叫,轮询  

说明:轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。缺点:是不考虑每台服务器的处理能力。

(2)wrr: weight round robin :加权轮询(以权重之间的比例实现在各主机之间进行调度 

说明:由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

(3)sh : source hashing : 源地址hash实现会话绑定sessionaffinity  

说 明:简单的说就是有将同一客户端的请求发给同一个real server,源地址散列调度算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的并且没有超负荷,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调 度算法的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标IP地址换成请求的源IP地址。

(4)dh : destination hashing : 目标地址hash  

说 明:将同样的请求发送给同一个server,一般用于缓存服务器,简单的说,LB集群后面又加了一层,在LBrealserver之间加了一层缓存服务 器,当一个客户端请求一个页面时,LB发给cache1,当第二个客户端请求同样的页面时,LB还是发给cache1,这就是我们所说的,将同样的请求发 给同一个server,来提高缓存的命中率。目标地址散列调度算法也是针对目标IP地址的负载均衡,它是一种静态映射算法,通过一个散列(Hash)函数 将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

动态调度算法(6种):

(1)lc :leash-connection 最少连接 

说 明:最少连接调度算法是把新的连接请求分配到当前连接数最小的服务器,最小连接调度是一种动态调度短算法,它通过服务器当前所活跃的连接数来估计服务器的 负载均衡,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1,当连接中止或超时,其连接数减一,在系统实现时,我 们也引入当服务器的权值为0时,表示该服务器不可用而不被调度。此算法忽略了服务器的性能问题,有的服务器性能好,有的服务器性能差,通过加权重来区分性 能,所以有了下面算法wlc

简单算法:active*256+inactive (谁的小,挑谁)

(2)wlc :加权最少连接  

加 权最小连接调度算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权限,加权最 小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。由于服务器的性能不同,我们给性能相对好的服务器,加大权重,即会接收到更多的请 求。

简单算法:(active*256+inactive/weight(谁的小,挑谁)

(3)sed :最少期望延迟  

说明:不考虑非活动连接,谁的权重大,我们优先选择权重大的服务器来接收请求,但会出现问题,就是权重比较大的服务器会很忙,但权重相对较小的服务器很闲,甚至会接收不到请求,所以便有了下面的算法nq

基于wlc算法,简单算法:(active+1)*256/weight (谁的小选谁)

(4).nq :never queue 永不排队   

说 明:在上面我们说明了,由于某台服务器的权重较小,比较空闲,甚至接收不到请求,而权重大的服务器会很忙,所此算法是sed改进,就是说不管你的权重多大 都会被分配到请求。简单说,无需队列,如果有台real server的连接数为0就直接分配过去,不需要在进行sed运算。

(5).LBLC :基于局部性的最少连接  

说 明:基于局部性的最少连接算法是针对请求报文的目标IP地址的负载均衡调度,主要用于Cache集群系统,因为Cache集群中客户请求报文的目标IP地 址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载基本平衡的情况下,将相同的目标IP地址的请求调度到同一个台服务 器,来提高服务器的访问局部性和主存Cache命中率,从而调整整个集群系统的处理能力。

(6).LBLCR :基于局部性的带复制功能的最少连接   

说 明:基于局部性的带复制功能的最少连接调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地 址对应的服务器组,按最小连接原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按最小连接原则从这个 集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除, 以降低复制的程度。

注:LVS默认调度算法是 wlc 



推荐阅读
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
婕小米
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有