1.大数据之LVS和keepalived

1.高并发:由于分布式系统的问世,高并发(HighConcurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API       接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。

2.高并发负载均衡技术主要有两种技术:一种是基于四层的LVS负载均衡技术,一种是基于七层的Nginx技术的负载均衡技术。

3.LVS:全称(Linux Virtual Server:Linux虚拟服务器),是一个虚拟的服务器集群系统,目的是使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.

4.Nginx(一种开源软件)

5.四层LVS模型

词汇:
VIP :虚拟服务器地址
DIP :转发的网络的地址
1.和RIP通信:ARP协议,获取真实的Real server的ip地址,MAC 地址
2.转发client的数据包到RIP上(隐藏的VIP)
RIP :后端真实服务器的ip地址
CIP :客户端的IP地址

注意:1.负载均衡器和客户端不进行三次握手,只负责将收到的数据包进行转发,它是保证客户端和真实服务器端的三次握手和四次分手顺利进行,

6.上网流程:

  

隐藏的vip:对外隐藏,对内可见
1. kernel parameter: 配置文件:/proc/sys/net/ipv4/conf/*IF*/
      - arp_ignore:定义接收到的ARP请求的响应级别
        0:只要本地配置的有相应地址,就给予响应
        1:仅在请求目标(MAC)地址配置请求到达的接口上的时候,才给予响应。

      - arp_announce:定义将自己的地址向外通告时的通告级别
        0:将本地任何接口上的任何地址向外通告
        1:试图仅向目标网络通告与网络匹配的地址
        2:仅向与本地接口上地址匹配的网络进行通告

7.操作:

 7.1DR模式下的LVS(分如下四步):

    1.要配置一个隐藏的VIP,将它配置到服务器的io接口上面(注意:一个网卡上面可以配置多个ip地址)

    2.LVS意指虚拟器服务器

    3.ipvs:嵌入到Linux内核 ipvsadm:管理应用程序

    4.LVS调度方法:

      4.1 四种静态调用方法: - rr:轮循 - wrr - dh - sh
      4.2 动态调用方法: - lc:最小连接 - wlc:加权最小连接 (默认时的连接)- sed:最短期望延迟 - nq :never queue
                -LBLC :于本地最小连接 - DH - LBLCR: 基于本地的带复制功能的最少连接

 7.2搭建 

  LVS命令:监控多个端口号

  对监控包的设置(ipvsadm是需要在服务器上安装的准备包):
    1.安装ipvs内核模块: yum -y install ipvsadm
    2.管理集群服务命令:ipvsadm -A -t +ip地址和端口号 -s rr

  对负载包的设置:
    命令格式:-a -t|u|f service-address -r service-address [-g|i|m] [-w weight]
           -t|u|f service-address :事先定义好的某集群服务 

  7.3步骤:
    1.准备好三台虚拟机
    2.先配置三台虚拟机的网络
    3.配置LVS的VIP(在eth0的子接口)
      - ifconfig eth0:8 192.168.9.100/24
      - echo 1 > /proc/sys/net/ipv4/ip_forward :这个是地址转发的配置,目的是将接收到的数据包给转发出去,而不是丢掉,其实就相当于一个路由器
    4.调整RS响应,通告级别(每一台都要配置)
      - echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
      - echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
      - echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
      - echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

    5.配置RS 的VIP (每一台RS都配)
      - ifconfig lo:8 192.168.9.100 netmask 255.255.255.255

    6.启动RS上面的httpd服务 yum -y install httpd /var/www/html vi index.html --from 内容
      启动httpd: service httpd start
      客户端验证:RIP 80 是可以显示的
      -VIP 80 是不能显示的

    7. LVS-ipvsadm
      - yum -y install ipvsadm(在负载均衡的那台服务器上面安装)
      - ipvsadm -A -t 192.168.9.100:80 -s rr 基于192.168.9.100:80这样的数据进行负载
      - ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.12 -g
      - ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.13 -g
      - ipvsadm -ln
      - 浏览器刷新:访问VIP
      - ipvsadm -lnc
      - ipvsadm -natp

      node01 :192.168.9.11 作为LVS负载均衡服务器 也是DIP(eth0),也在这台负载均衡服务器上配置VIP(eth0:8)
      node02 :192.168.9.12 Realserver1 RIP1 调整Rs响应和通告级别,然后在配置VIP(对外隐藏,对内可见)
      node03 :192.168.9.13 Realserver2 RIP2 调整RS响应和通告级别,然后在配置VIP(对外隐藏,对内可见)

LVS中的DR模式潜在的风险:
1.当LVS负载均衡服务器挂掉的时候,那么后面的真实服务器就不能被访问了,也就意味着服务器瘫痪了,这样就引发了一个单点故障问题。
2.当后面的一台Realserver服务器挂掉的时候,这样就会使当客户端访问服务器的时候,一部分客户端是可以访问,另外一部分是不可以访问。

解决技术:keeplived技术

  简介:Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其   他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

  注意: dr 模型中的LVS 负载均衡一定不要忘记RealServer 中要配置隐藏的VIP 和通告级别 ,千万不要忘记。

keepalived是集群管理中保证集群高可用的服务软件
  高可用:High Available

  要求:
    1.需要心跳机制探测后端RS是否提供服务。
      a)探测down,需要从lVS中删除该RS
      b)探测发送从down到up,需要从lvs中再次添加RS

    2.LVS DR 需要主备

    keepalived原理: 

      1.VRRP协议(虚拟路由冗余协议)

      2.IP漂移

        安装: yum -y install keepalived
        启动: service keepalived start
        配置文件 /etc/keepalived/keepalived.conf
        日志: /var/log/message 查看日志。

  简单架构图:

      

  

  keepalived配置文件:
    1./etc/keepalived/keepalived.conf
    2.帮助手册 man keepalived.conf
    3.编辑之前需要备份 cp -a keepalived.conf keepalived.conf.backup

  配置文件介绍:  

!Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc                                        *********
     failover@firewall.loc                                       *       *
     sysadmin@firewall.loc                                       *配置邮箱 *
   }                                                             *       *
   notification_email_from Alexandre.Cassen@firewall.loc         *********
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER                # 配置主负载均衡器(LVS)
    interface eth0                                         
    virtual_router_id 51
    priority 100                # 权重值 主要是要区别主备LVS的根据
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.100/24 dev eth0 label eth0:3        #配置虚拟服务器的IP地址(VIP)
    }
}

virtual_server 192.168.56.100 80 {                     #配置真实服务器的ip地址
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP

    real_server 192.168.56.102 80 {
        weight 1
        HTTP_GET {                                
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.56.103 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
原文地址:https://www.cnblogs.com/zmc60/p/14749222.html