lvs介绍

1Linux集群及系统扩展的方式概述mysql

集群是有多台服务器组织在一块儿,一块儿工做,由于单台服务器的并发响应能力是有限的,响应处理能力也是有限的全部有了集群的出现linux

在系统扩展有2种方法:nginx

  1 向上扩展:是指换一台性能更高的服务器来取代现有服务器,但这样子由于单台的服务器运算性能是有限的,并且这样造价至关昂贵。算法

  2向外扩展:是指多增长一台服务器来分担现服务器的工做。sql

2Linux集群类型及调度方法详解数据库

集群的类型有:后端

  1 lvs:负载均衡:将客户端的请求经过必定的调度算法分发给不一样的后端服务器来处理服务器

    注意在lvs若是一个客户发送请求,被分发给后端某一个服务器上,当这个客户端再次发送请求时,可能会被发送的另外一台后端的服务器上,这样一次的会话内容信息就会丢失,为了解决这一问题有一下几种方法:网络

      1 作静态绑定,将同一台客户端的请求分发给同一台后端服务器上,但这样一来就破坏的负载均衡的意义session

      2 在后端服务器的后面作共享存储,如结构化数据能够存放在mysql等关系型数据库中,非结构化数据如图片存放在nfs当中,

      3 在后端服务器之间作信息的共享

  2 HA:高可用集群:它具备冗余性注重服务器的在线使用时间指高可用性 MTBF (平均无端障时间)/MTBF+MTTR(故障修复时间)

  3 HP:高性能集群是把计算量分隔出去

 负载均衡的调度算法:

1 经过硬件设备实现调度:如 big-ip   A10 等硬件设备

2 经过软件层来实现调度:

  经常使用的软件调度:

    lvs:它是工做在传输层 内核空间的 因此他响应并发是不受到套接字的限制,可是他没有客户端工具,调度能力有限不能完成更高级的调度设置,因此一般用lvs作一级调度,用nginx来最二级调度。

         咱们知道iptables是指定规则的用户空间工具,在iptables有5个链;

              通常数据的流向是2种:1 prerouting------input----到用户空间------output  -------postrouting

                         2 prerouting ------forward ------------------------------------postrouting

                   但lvs 工做在input链上,它的工做数据流:prerouting -----------input--------------postrouting

                   ipvs框架是来判断是不是集群的,如果直接交给postrouting ,管理工具是ipvsadm

    Nginx和haproxy是应用层的程序不过他们能够模拟工做在传输层

        http  fastcgi  ats   perlbal  工做在应用层

3 lvs常见的四种集群lvs-nat、lvs-dr、lvs-tun、lvs-fullnat优势及使用场景

 lvs 常见的有四种类型:

  1 lvs—nat:

                   1修改请求报文的目标ip将客户端的vip改成后端服务器的rip ,进行分发它请求响应都须要通过director, 因为请求和响应都经director,因此调度器容易成为集群瓶颈

                   2 rip与dip必须同一网段 rip的网关指向dip

                  3支持端口映射,能够修改请求报文的目标端口

                  4 vs必须是linux系统, rs能够是任意

   2 lvs-dr :直接路由:经过封装的MAC地址进行响应,

       1 Director与rs 都接在同一个交换机上 ,客户端:经过广播方式获得vs的MAC地址,封装原MAC 和目标MAC 传给director,Director:在将原MAC地址为dip所在接           口的MAC 目标mac给为rs的rip网口的 MAC地址 派发给rs 而客户端请求时的原ip和目标ip不变 、,Rs 接收到后应为rs上也配有vip因此将直接响应客户端,再也不通过        director

        但有个问题: 

          1此处:在客户端广播是,rs的vip地址不作响应

           2在接入这个网络后vip不作经过,防止ip冲突

  实现的办法有:

              1 arptables  /  nftables  来写规则阻断

              2 在linux内核中有两个参数来设置 arp_announce =2   arp_ignore =1

             3 作与director作静态绑定,

1 rs的rip能够作私网地址也能够作公网地址,与dip在同一网络 rip网关不指向dip

 2  rs与director在同一个物理网络

3请求报文通过director 响应不通过director

4 并不支持端口映射

     3 lvs-tun:隧道: 在原ip报文外面在封装一个ip首部 不修改请求报文首部而是在原ip报文外再封装一个ip首部,将报文发送为rs

             1 dip  vip   rip  都在公网地址

              2rs的网关不指向dip

              3请求报文通过director 响应报文不通过director

             4不支持端口映射

              5 rs的os系统必须支持隧道功能

  4lvs-fullnat:非标准的 能够是跨机房在director上有个nat追加表,能够根据nat表的记录进行将ip的修改

请求响应都通过director

     1 vip公网地址 ,rip 和dip 是私网地址且同常不在同一网络中

               2 rs收到请求的源地址是dip  只需响应给director 再由director响应给客户端

               3 请求和响应都通过director

              4 支持端口映射

调度算法:根据调度时是否考虑各rs当前负载状态能够分为静态和动态

  静态: 仅根据算法自身进行调度

          1 RR: 轮询

           2WRR: 加权轮询

          3SH:实现session  sticy  源ip地址hash表未来自同一ip地址请求始终发送给以前的同一个rs 实现会话绑定。

          4 DH 目标地址哈希:将发往同一目标地址的请求始终转发到第一次的rs上

   动态方法: 主要根据每一个RS当前的负载状态和调度算法进行调度

    1 LC: 最小链接  当overhead  值最小的    Overhead = activconns * 256 + inctiveconns

          2 WLC: 加权最小链接    Overhead = (activconns * 256 + inctiveconns)/weight

         3 SED:小的值挑出  权重大的挑中  Overhead=(activeconns + 1) * 256 /weight

        4 NQ:从不排队

        5 LBLC:动态的DH算法

        6LBLR:带复制功能的LBLC

相关文章
相关标签/搜索