lvs基础知识

简介

 Cluster是什么?

   Cluster其实就是组织多个主机构建高实现性能、高可靠、多并发、大容量的同一功能的系统。

 常见的集群类型:

  (1) Load Balancing: 负载均衡集群

  (2) High Avaiability: 高可用集群

  (3) High Performance: 高性能集群(现在已很少使用)

  (4) 分布式存储与运算    

   

 常见集群的扩展方式:

  (1)Scale Up:向上扩展、垂直扩展、纵向扩展;用性能好的主机替代性能差的主机,性价比差;

  (2)Scale Out: 向外扩展、水平扩展;

 lvs:Linux Virtual Server

  工作原理:四层路由或四层交换;依赖于netfilter实现根据目标IP或PORT实现请求转发至后端的多个主机中的某一个主机(根据挑选算法挑选主机)

  

  Director数据包转发过程:PREATING——>①———>②———>③———–>④——–>POSTROUTING

     当客户端请求到Director,Director内核依靠netfilter将主机从PREROUTING经由路由之后到达INPUT,当到达INPUT之后,ipvs发现是去往集群主机的请求,并将请求强制发往至路由,通过POSTROUTING发往后端主机。

lvs.png

一、lvs的类型:

 1)ipvs-nat:MASQUERADE 地址伪装

   类似于DNAT,是一种多目标主机的DNAT,通过修改请求报文的目标IP至基于调度方法选出来某RS的RIP进行转发

 特点:(1)RS必须使用私有地址;网关必须指向DIP;

     (2)请求和响应的报文都经由Director转发;高负载场景中,Director易成为性能瓶颈

     (3)支持端口映射

     (4)RS可以是任意类型的OS(操作系统)

     (5)RS的RIP和Director的DIP要在同一网段

lvs-nat.png

 2)ipvs-dr: Direct Routing 直接路由

   不修改请求报文的IP首部,而是通过直接封装帧首部完成转发;目标MAC是基于调度方法选出某RS的网络接口的MAC地址

 特点:(1)保证前段路由器将目标地址为VIP的报文通过ARP解析后统统发往Director

          解决方案:arp解析

            在网关路由器上绑定Director的MAC地址

            利用arptables在每个RS制定规则

            修改RS的内核参数

     (2)RS的RIP可以是私有地址;也可以是公网地址,此时通过互联网上的主机对此可发起管理请求;

     (3)RS与Director必须在同一物理网络中;

     (4)请求报文必须经由Director转发,而响应报文必须不可能经由Director;

     (5)不支持端口映射;

     (6)RS可以是大多数的OS;

     (7)RS的网关决不能指向Director;

   lvs-tun.png

 

 3)ipvs-tun: tunneling 隧道

    不修改请求报文的IP首部,而是通过IP隧道机制在IP外部再封装一个IP首部(SIP:DIP, DEST:RIP);经由互联网交给选定的RS

  特点:(1)RIP,DIP,VIP必须都是公网IP;

      (2)RS的网关不能也不可能指向DIP;

      (3)请求报文必须经由Director调度,而响应报文必须不能经由Director;

      (4)不支持端口映射;

      (5)RS的OS(操作系统)必须能够支持隧道功能;

lvs-ipip.png

4)lvs-fullnat: 原地址与目标地址都进行替换(以后补充)

二、lvs的调度方法:

 1)静态方法:仅根据算法本身进行调度

   (1)RR: round  robin, 轮询、轮叫、轮流;

   (2)WRR:weighted RR, 加权轮询;Overhead=connection/weighted,最小的会被挑中;

   (3)SH: source hashing;表示来源于同一个IP的请求始终发往第一个调度时请求的RS,从而实现了SESSION绑定;

   (4)DH: destination hashing;表示根据目标主机进行调度,将发往同一个目标地址的请求都转发至后端主机;

 

 2)动态方法:根据算法及各RS的自身负载状况进行调度

   (1)LC: least connection;最少连接;Overhead=actcon*256+inactcon,结果小的将会被挑中;

   (2)WLC: weighted LC;加权最少连接;Overhead=(actcon*256+inactcon)/weighted,结果小的将会被挑中;

   (3)SED: Shortest Expection Delay 最段期望延迟;Overhead=(actcon+1)*256/weighted,结果小的将会被挑中;

   (4)NQ: Nerver Queue 永不排队;一开始每台RS都解释请求,往后都使用SED 

三、ipvs管理工具介绍

  ipvsadm:工作在用户空间,定义转发规则的程序;

  ipvs:工作在内核空间,根据规则完成调度请求的程序;

ipvsadm用法:  

 管理服务器集群:

  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]

  ipvsadm -D -t|u|f service-address

    -A: 添加

    -E:修改

    -D:删除

    -t:TCP协议的端口

    -u: UDP协议的端口

    -f:FWM,防火墙标记,标记用数字来表示,将多个端口绑定在一起定义成一个集群服务使用

    server-address: IP:[PORT]

    -s: 制定调度方法,默认为wlc

 管理指定集群服务的RS:

   ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

   ipvsadm -d -t|u|f service-address -r server-address

      -a:添加RS

      -e:修改RS

      -d:删除RS

      -t|u|f service-address:引用此前定义过的集群服务

      -r server-address :制定RS的地址

     [-g|i|m]:指定lvs类型

     -w weight: 指定权重;

 

 保存RS及CS:

   -S save: 

    ipvsadm -S > /etc/sysconfig/ipvsadmin.v1 

    ipvsadm-save > /etc/sysconfig/ipvsadmin.v1 

    service ipvsadm save      

   -R: restore

     ipvsadm -R < /etc/sysconfig/ipvsadmin.v1 

     ipvsadm-restore < /etc/sysconfig/ipvsadmin.v1 

    service ipvsadm start 

 清空规则:

   ipvsadm -C 

 显示规则:

   ipvsadm -L |l [options]

    options:

    -c: 列出当前所有的connection

    –stats:列出CS及RS的连接统计数据

    –rate:列出CS及RS的连接、报文及字节速率

    -n –numeric: 数字格式显示

   –exact: 精确值

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/5485

(0)
马行空马行空
上一篇 2015-06-21 21:24
下一篇 2015-06-23 09:55

相关推荐

  • gzip压缩算法

    gzip,zlib,以及图形格式png,使用的是同一个压缩算法deflate。我们通过对gzip源码的分析来对deflate压缩算法做一个详细的说明: 第一,gzip压缩算法基本原理的说明。 第二,gzip压缩算法实现方法的说明。 第三,gzip实现源码级的说明。 1. Gzip压缩算法的原理      &n…

    Linux干货 2015-07-30
  • Linux启动和内核管理

                                        Linux启动和内核管理 本章内容: centos5和centos6的启动流程 服务管理 grub…

    系统运维 2016-09-21
  • FHS文件结构

    我们在前面学习的过程中有了解到,linux的发现版有很多种类型,那么如果每个版本都有着自己的想法去配置文件应该放置的目录,那么将造成管理上的困扰,于是为了解决这个问题,就有了FHS标准。 1.1 FHS 结构 1.1.1 软件的概念 之前,我们提到过,一个完整的计算机系统应该有两部分组成,即:计算机系统=软件+硬件。没有软件的硬件,计算机只不过是一堆只会发热…

    Linux干货 2016-10-27
  • Linux计划任务

    计划任务 Linux任务计划、周期性任务执行 • 未来的某时间点执行一次任务:     at     batch:系统自行选择空闲时间去执行此处指定的任务 • 周期性运行某任务:      cron at任务 …

    Linux干货 2016-09-10
  • MongoDB复制集及数据分片详解

    前言 MongoDB是一个由C++语言编写的基于分布式文件存储的数据库,是当前NoSQL数据库中比较热门的一种,旨在为Web应用提供可扩展的高性能数据存储解决方案。本文介绍MongoDB复制集及数据分片。 MongoDB 简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,…

    Linux干货 2015-07-15
  • 一起学DNS系列(十四)DNS查询工具之DIG的使用(2)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/240243    上节谈到了利用DIG的+trace参数追踪域名解析的过程,其实除此之外,DIG还有一些其他的参数,这节会涉及到这…

    2015-03-17