##定义:
  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。 ##结构:
 一般来说,LVS集群采用三层结构,其主要组成部分为:
  A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
  B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
  C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。 ##模式:
  LVS-NAT: 基于NAT(网络地址转换)技术,网络数据流程如下:
      1)负载均衡器在收到客户端请求后,改写目的IP地址为后端服务器真是IP和/或端口号,转发给后端服务器。
      2)后端服务器处理完成后,回复给负载均衡器。
      3)负载均衡器改写源IP为虚拟IP,发送给客户端
  LVS-DR:
      1)请求经过负载均衡器调度后,后端服务器的相应数据流量直接返回给客户端,回包不经过负载均衡器。
  LVS-Tun:
      1)LVS-Tun是LVS原创的一种转发模式,基于LVS-DR。负载均衡器LVS代码把原始的包(源客户端IP到虚拟IP)封装成ipip包,目的地址是后端服务器的真实IP,然后进入OUTPUT链,并路由到后端服务器。后端服务器解封ipip包并处理,以源地址虚拟IP、目的地址客户端IP直接回复给客户端。 ##对比与推荐:
  1)从对后端服务器的要求来看,LVS-NAT仅仅要求后端服务器网关指向负载均衡器的内网地址,无任何其他要求;LVS-DR模式要求后端服务器禁用对虚拟IP的ARP响应,后端服务器网关不指向负载均衡器;LVS-Tun要求后端服务支持ipip解包,部分操作系统不支持。
  2)从吞吐量上来看,LVS-DR最高,LVS-NAT最低。
  3)从配置简便性来看,LVS-NAT最低,LVS-DR和LVS-Tun较为复杂。
  推荐在应用中使用LVS-DR模式,也是目前云微架构中应用最多的4层开源负载均衡转发策略。 ##使用场景:
  单个LVS集群:
    1)使用协议为vrrp协议进行组播通信,使用前建议关闭,否则则会出现脑裂现象。
    2)对后端健康检查可以使用TCP Connect或者HTTP GET,在网站类应用负载均衡方案中,推荐使用HTTP GET,可以进行应用层检查,防止出现端口存在但无法提供业务的情况。Keepalived配置文件中digest的获取,使用该软件自带的genhash工具,genhash --help
    3)重要参数:
    LVS转发行为重要参数:expire_nodest_conn expire_quiescent_template
    LVS同步状态重要参数:sync_threshold
    4)LVS-DR模式的核心提示与优化:
      - LVS-DR模式,因后端服务器上同样配置了虚拟IP,如果在客户端进行ARP请求的时候,后端服务器以自身的MAC地址进行了回复,则起不到负载均衡的效果,此时客户端直接连接到了某台后端服务器上。
      - 后端服务器的虚拟IP必须绑定到lo:0上,同时指定子网掩码是255.255.255.255,否则ARP禁用会出现异常。
      - 持久连接的问题。持久连接使同一个客户端在超时时间内(ipvsadm -p 参数指定,Keepalived中的persistence_timeout指令)会持续地连接到同一台后端服务器,这个是 4层上的持久连接。来自客户端的每个新的连接会重置该超时时间。
      - Keepalived对后端服务器的健康检查,推荐使用应用层检查方式,另外可以配置Keepalived使用管理员自定义的脚本进行健康检查(MISC CHECK指令)。
      - 负载均衡器之间使用vrrp协议进行高可用设置时,禁用iptables或firewalld或者打开对vrrp协议的支持。
      - LVS集群中的负载均衡器,推荐使用16GB及以上内存,同时采用多队列网卡提高网卡吞吐量减少处理延时。
      - LVS集群中的后端服务器,根据IO密集型和CPU密集型2类,可以分别使用RAID10、SSD及高频多核CPU来优化。   多组LVS设定和注意事项:
    1)虚拟路由器的ID,在相同组的LVS集群里面,必须设置为一致;不同组LVS集群里面必须不同。
     2)优先级,对应state为MASTER的设置值必须比对应的state为BACKUP的设置值高。
     3)虚拟IP地址,不同组LVS集群不同
     4)同一组LVS里面的认证的密钥必须相同,不同组建议采用不同值。
    在运维业务中,曾经发生过因新上的LVS集群采用了和原LVS集群里面虚拟路由器相同ID并且处于同一个网段导致原业务出现故障的问题。   可用性监控:
    1)LVS可用性监控方面:通常是对LVS的虚拟IP提供的服务进行监控,同时对所有后端服务器进行可用性监控。应为LVS可以对后端服务器进行健康检查,那么后端服务器的不可用虽然会被LVS从服务器吃中剔除不影响客户端,但这个情况应该被系统管理员所获知,以便进行根本原因分析,并且评估其他后端服务器的压力情况。
    2)在监控层次方面:尽量采用应用层检查的方式,如Nagios自带的check_http插件,Zabbix的Web Scenarios
  
LVS排错步骤推荐:
    1)ping负载均衡器的真实IP和虚拟IP。判断网络连通性.
    2)在负载均衡器上,检查负载君合器和后端服务器的状态
    3)如LVS集群中有多台后端服务器,分别绑定hosts进行测试每一台后端服务器,确保服务正常。
    4)检查后端服务器的Arp设置是否有效
    5)检查后端服务器上的虚拟IP绑定是否成功。
    6)主从负载均衡器切换故障时,需要首先在交换机上确认其学习到的虚拟IP的MAC地址是否被更新成了从的MAC地址。   

LVS(Linux Viretual Server) 负载均衡器 + 后端服务器的更多相关文章

  1. LVS : Linux Virtual Server 负载均衡,集群,高并发,robust

    1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...

  2. LVS (Linux Virtual Server) 负载均衡

    [大型网站技术实践]初级篇:借助LVS+Keepalived实现负载均衡   一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服 ...

  3. LVS(Linux Virtual Server)

        LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我国的章文嵩博士的一个开源项目.在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需 ...

  4. LVS (Linux Virtual Server) - 负载均衡集群 - keepalived

    今天稍微了解了LVS 的原理和使用,在网络上找到不少好文章,稍微加以处理并在这里备份: 原理介绍:Linux Virtual Server 关于:http://www.linuxvirtualserv ...

  5. LVS (Linux Virtual Server) 思维导图笔记

  6. LVS(Linus Virtual Server):三种负载均衡方式比较+另三种负载均衡方式

    还有个姊妹篇也可以参考这个文章:六大Web负载均衡原理与实现 什么是LVS (Linux Virtual Server)?   首先简单介绍一下LVS (Linux Virtual Server)到底 ...

  7. 服务器负载均衡lvs(Linux Virtual Server)

    服务器负载均衡lvs(Linux Virtual Server) 一.总结 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统. 三.Linu ...

  8. 【Python】部署上手App后端服务器 - Linux环境搭建安装Python、Tornado、SQLAlchemy

    基于阿里云服务器端环境搭建 文章目录 基于阿里云服务器端环境搭建 配置开发环境 安装 Python 3.8.2 安装 Tornado 安装 MySQL 安装 mysqlclient 安装 SQLAlc ...

  9. 如何编写LVS对Real Server的健康状态检测脚本

    简介:Linux 虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...

随机推荐

  1. GCC G++ Make CMake自我科普

    Linux下gcc g++ make cmake 联系和区别 C/C++程序从编写到可执行一般经历这几个阶段 编写源代码 编译器编译代码生成目标文件,如.o文件 链接器链接目标文件和其他目标文件/库文 ...

  2. Apex语言(二)变量与常量

    1.变量 凡是交给计算运算(处理)的数据就是变量,用来保存参加运算的数据和计算结果. 变量由变量名来标识. 变量名由字母数字和下划线组成,不能以数字开头. [正确]number,number1,num ...

  3. IDEA 社区版 点击‘Edit Configurations’打开“Run/Debug Configurations”,里面没有tomcat server选项

    没错 社区版就是没有 “先手动添加Plugins 然后再setting” 方法无效 搜索不到 http://blog.csdn.net/u010666884/article/details/52119 ...

  4. Python爬虫3-----浏览器伪装

    1.浏览器伪装技术原理 当爬取CSDN博客时,会发现返回403,因为对方服务器会对爬虫进行屏蔽,故需伪装成浏览器才能爬取.浏览器伪装一般通过报头进行. 2.获取网页的报头 3.代码: import u ...

  5. C语言提高 (7) 第七天 回调函数 预处理函数DEBUG 动态链接库

    链表就是一个结构体 指针指向自身结构体类型 双向链表插入的时候 先改变自身 再改变两边 双向链表删除的时候 先改变两边 再改变自己 逆序一个单向链表 回调函数 指向函数的指针 4链表的遍历回调用法 / ...

  6. HDU-1695 GCD(求一个区间内与一个数互质的个数)

    题意: 给你一个T,是样例的个数,接下来是五个数l1,r1,l2,r2,k  前四个数代表两个区间(l1,r1),(l2,r2)这个题l1=1,l2=1; 取x1属于(1,r1),x2属于(1,r2) ...

  7. HDU 5322 Hope (分治NTT优化DP)

    题面传送门 题目大意: 假设现在有一个排列,每个数和在它右面第一个比它大的数连一条无向边,会形成很多联通块. 定义一个联通块的权值为:联通块内元素数量的平方. 定义一个排列的权值为:每个联通块的权值之 ...

  8. linux github 添加ssh

    1.本地生成key,  xxx 是github 的账号, 执行下面命令一路下一步 ssh-keygen -t rsa -C "xxx" 2.复制下面的public key 到git ...

  9. 端到端图片识别 Python实现 Tensorflow

    基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的 ...

  10. C++ auto类型说明符

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50864612 编程时常常需要把表达式的 ...