lvs + keepAlived高可用

 

本文使用的是DR模型,其它模式有D-NET,TUN模式。

DR模型的优点:

  DR模型基于四层负载,速度快,不和客户端经过握手协议,只是偷窥了一下握手包,

  过程是偷偷修改了arp,改动非常小效率高,此时获取RS(真正的后台服务器)的mac地址,基于下一条机制,数据包就能传输到RS服务器上,而RS服务器上又有VIP地址,RS服务器直接可以将数据直接传给客户端,有点像IP伪装。

D-NET模型的缺点:

  D-NET模式对宽带要求比较高,中间需要不停的修改目标IP所以算力大。

 

lvs + keepAlived高可用

 

没有keepalive的配置过程:

LVS:

  node01: ifconfig eth0:8 192.168.150.100/24

  node02--node03:

    (1)修改内核:

      echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

      echo 1> /proc/sys/net/ipv4/conf/all/arp_ignore

      echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

      echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

    (2)设置隐藏的VIP:

      ifconfig lo:3 192.168.150.100 netmask 255.255.255.255    (此处一定要注意掩码不能是255.255.255.0)

RS中的服务:

  node02--node03:

    yum install httpd -y

    service httpd start

    vi  /var/www/html/index.xml

    from 192.168.1.150.1x

LVS服务配置:

  node01:

    yum install ipvsadm

    ipvsadm -A -t 192.168.150.100:80  -s  rr

    ipvsadm -a  -t 192.168.150.100:80 -r 192.168.1.12 -g  -w 1

    ipvsadm -a  -t 192.168.150.100:80 -r 192.168.1.13 -g  -w 1

    ipvsadm -ln

验证:

  浏览器访问 192.168.150.100 看到负载 变化

  node01:

    netstat  -antp 结果看不到socket连接

    ipvsadm -lnc 查看偷窥记录

  node02--node03:

    netstat  -antp 看到所有的socket连接

 ------------------------------------------------------------------------------------------------------

有keepalive 的配置过程:

  主机node01 ---node04

node01: 

  ipvsadm -C  //卸载掉ipvsadm

  ifconfig eth0:8 down  // 清清除eth:8 网卡

node01---node04:

  yum install keepalived -y ipvsadm

  配置:

    /etc/keepalived/keepalived.conf

    cd  /etc/keepalived/

    cp keepalived.conf  keepalived.conf.bak //拷贝

    vrrp:虚拟路由冗余协议

    vi keepalived.conf 

    node01:

      global_defs  {

            notification_email n {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
            sysadmin@fire.loc
           }
           notification_email_from Alexandre.Cassen@firewall.loc  #指定发件人
           smtp_server localhost  #指定smtp服务器地址
           smtp_connect_timeout 30  #指定smtp连接超时时间
           router_id LVS_DEVEL  #运行keepalived机器的一个标识
      }

      vrrp_instance VI_1{

        state MASTER  //主机

        interface eth0   //哪个网卡

        virtual_route_id 51  // 集群部署时使用

        priority 100  //权重

        advert_int 1

        authentication {

          auth_type PASS

          auth_pass 1111

        }

        virtual_ipaddress{

          192.168.150.100/24 dev eth0 label eth0:3 //虚拟目标地址

        }

      }

      virtual_server 192.168.150.100 80 { //RS服务器地址

         delay_loop 6

        lb_algo rr

        lb_kind DR

        nat_mask 255.255.255.0

        persistence_timeout 0 //注意开发环境设置成0,生产环境不能设置成0

        protocol TCP

        real_server 192.168.150.12 80{

           weight 1

          HTTP_GET {

              url{

                path /

                status_code 200

              }

              connect_timeoout 3

              nb_get_retry 3

              delay_before_retry 3

          }

        }

         real_server 192.168.150.13 80{

          weight 1

          HTTP_GET {

           url{

             path /

             status_code 200

           }

           connect_timeoout 3

           nb_get_retry 3

           delay_before_retry 3

          }

        }

      }

    node04:配置同node01一样

    

    

keepAlived的作用:

  1:代替人改为自动运维,解决了单点故障,实现了HA;

  2:监控自身的服务;

  3:监控RS的服务健康状况;

  4:master通告自己还活着,Backup监听master状态,Master挂了,从一堆backup推举出一个新的master;

  5:配置VIP以及ipvs,keepalive有自己的配置文件。

 

  

 

上一篇:教你如何轻松配置Spark的历史日志服务器JobHistoryServer?


下一篇:Spark环境搭建——HA高可用模式