虚拟机搭建LVS-DR集群

一.。必备知识

     参考搭建 NAT模型 http://blog.csdn.net/liaomin416100569/article/details/73300692

二。概念解析

  lvs官网 http://www.linuxvirtualserver.org/

  lvs和nginx的区别在于 lvs是传输层(7层中第4层)的负载均衡 也就是ip和端口的负载均衡

                                         nginx是应用层(7层中第7层) http协议的负载均衡 比如http协议中中的url ,浏览器缓存,cookie一些设置都可以在应用层 在第4层就

                                                   无法做到  明显 4层负载均衡效率高于7层负载均衡

  lvs(linux virtual server)提供了三种集群方式 

  分别是:

  • The LVS/NAT working principle and configuration instructions.
  • The LVS/TUN working principle and configuration instructions.
  • The LVS/DR working principle and configuration instructions.

   Dr模型(Direct Routing)直接路由  用户负载均衡分发到RealServer NAT也是用于该目标 

   NAT模型所有的请求和响应都必须经过负载均衡服务器  一般响应的流量较大 请求的参数小  需要负载均衡器下载带宽无限大   负载均衡的目的在于均衡的将请求分发给目标RealServer不能因为下载的流量导致服务器带宽被占用完  DR模型 负载均衡器只需要将请求转发 RealServer响应不再经过均衡器直接

 由RealServer响应给客户端  由于socket长连接 客户端与负载均衡器发送的请求和响应必须是相对的 如果实现RealServer直接响应 必须在RealServer响应

时将源ip修改为负载均衡器ip  同时RealServer可连接客户端  可以给RealServer一个虚拟ip 该ip和负载均衡器的外网ip一致  同时 ip不对外发送arp

虚拟机搭建LVS-DR集群_第1张图片

三。场景模拟

   DR模式要求所有的机器处于同一网络环境中  比如 客户端 负载均衡器 和RealServer都处于互联网中 要么同处于同一局域网中

   负载均衡器 192.168.58.134(局域网ip DIP)  192.168.58.133(客户端访问VIP)  

  RealServer1  192.168.58.135(局域网ip RIP)   192.168.58.133(虚拟ip VIP)

  RealServer2 192.168.58.136(局域网ip RIP)   192.168.58.133(虚拟ip VIP)

1.配置负载均衡器

    》添加虚拟ip 192.168.58.133(eno16777736为物理网卡名 通过ifconfig查看

       

         ifconfig eno16777736:0  192.168.58.133/32 up
         route add -host 192.168.58.133 dev eno16777736:0

    》安装ipvsadm 

            yum -y install ipvsadm
            #清空所有的路由规则
             ipvsadm -C
            #添加一个集群  192.168.58.133:80 必须是外网ip 也就是vip 因为别人才可以访问  rr表示轮询
            ipvsadm -A -t 192.168.58.133:80 -s rr
            #给集群添加一个主机 Rserver  192.168.58.135:80和192.168.58.136:80 这两台机各自部署一个tomcat -m表示nat模式 -g 表示dr模型
            ipvsadm -a -t 192.168.58.133:80 -r 192.168.58.135:80 -g
            ipvsadm -a -t 192.168.58.133:80 -r 192.168.58.136:80 -g  

2 配置RealServer1和2

   》虚拟ip的arp路由设置

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  》 添加虚拟ip

 ifconfig lo:0192.168.58.133 broadcast192.168.58.133 netmask 255.255.255.255 up
     route add -host 192.168.58.133 lo:0 

 RealServer分别安装两个tomcat 修改端口为80

访问 http://192.168.58.133 成功

查看转发或者realserver的运行检查 可以查看系统日志 /var/log/messages文件

四。lvs缺点

   lvs使用负载算法 平均发布请求到realserver 但是不能进行健康检查 比如 rs1出现故障 director仍然会转发到rs1 所以必须结合keepalived

五。使用keepalived结合lvs检查rs故障

 模拟场景 

DServer1 192.168.58.134(局域网ip DIP)  192.168.58.133(客户端访问VIP)     +keepalived +lvs

DServer2 192.168.58.137(局域网ip DIP)  192.168.58.133(客户端访问VIP)    +keepalived +lvs

  RealServer1  192.168.58.135(局域网ip RIP)   192.168.58.133(虚拟ip VIP) +tomcat

  RealServer2 192.168.58.136(局域网ip RIP)   192.168.58.133(虚拟ip VIP)  +tomcat

两台Dserver 分别安装lvs负载均衡 并且安装使用keepalived 

keepalived 功能

 1:vip192.168.58.133 在主(Dserver1)和从(Dserver2)中漂移   如果主机Dserver1的lvs挂掉 vip自动切换给Dserver2

 2:keepalived会自动检测 后台的realserver的tomcat是否挂掉 如果挂掉自动切换到其他tomcat


在两台Dserver上分别配置 keepalived的配置文件/etc/keepalived/keepalived.conf 具体可以先参考(http://blog.csdn.net/liaomin416100569/article/details/73477162 该文章了解 keepalived)

vrrp_instance LVS {
    state MASTER   # 
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.58.133
    }
}

virtual_server 192.168.58.133 80 {
    delay_loop 6
    lb_algo rr 
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    real_server 192.168.58.135 80 {
        weight 1
        HTTP_GET {
            url { 
              path /
              digest aa150255da35870c218c9be8cea310f3
            }
            connect_timeout 3
            nb_get_retry 3
            connect_port 80
            delay_before_retry 3
        }
    }

    real_server 192.168.58.136 80 {
        weight 1
        HTTP_GET {
            url { 
              path /
              digest aa150255da35870c218c9be8cea310f3
            }
            connect_timeout 3
            nb_get_retry 3
            connect_port 80
            delay_before_retry 3
        }
    }
}

其中 keepalived实际上通过访问 http://192.168.58.135:80/ 来测试tomcat是否正常运行 其中

digest可以预先通过  

[root@bogon keepalived]# genhash -s 192.168.58.135 -p 80 -u /
MD5SUM = aa150255da35870c218c9be8cea310f3
生成 

该keepalived 会指定在interface eno16777736指定的网络接口上生成虚拟ip 192.168.58.133

可以ip addr查看

[root@bogon keepalived]# ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:49:29:6c brd ff:ff:ff:ff:ff:ff
    inet 192.168.58.134/24 brd 192.168.58.255 scope global dynamic eno16777736
       valid_lft 1468sec preferred_lft 1468sec
    inet 192.168.58.133/32 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe49:296c/64 scope link 
       valid_lft forever preferred_lft forever


同时 会自动在lvs中添加 dr的轮询rr    (不需要自己添加)

[root@bogon keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.58.133:80 rr persistent 50
  -> 192.168.58.135:80            Route   1      0          0         
  -> 192.168.58.136:80            Route   1      0          0       

所有的realserver 配置同 三。场景模拟   的   2 配置RealServer1和2

访问 http://192.168.58.133

关闭其中一台tomcat 看是否能够继续访问 

关闭主lvs服务134看 看vip是否转移到 从服务器 137


转载于:https://www.cnblogs.com/liaomin416100569/p/9331210.html

你可能感兴趣的:(虚拟机搭建LVS-DR集群)