虚拟机搭建LVS-DR集群

来源:互联网 发布:java代码书写规范 编辑:程序博客网 时间:2024/05/28 15:07

一.。必备知识

     参考搭建 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


三。场景模拟

   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_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "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 addr1: lo: <LOOPBACK,UP,LOWER_UP> 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 forever2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 -nIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  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


原创粉丝点击