zoukankan      html  css  js  c++  java
  • LVS 负载均衡 keepalive

    为什么要学lvs

    工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名、
    目录结构, Nginx单凭这点可利用的场合就远多于LVS了。
    最新版本的Nginx也支持4层TCP负载,曾经这是LVS比Nginx好的地方。
    Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个
    也是它的优势之一,相反LVS对网络稳定性依赖比较大。
    Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出
    来。 LVS的配置、测试就要花比较长的时间了, LVS对网络依赖比较大。

    简单一句话,当并发超过了Nginx上限,就可以使用LVS了。
    日1000-2000W PV或并发请求1万以下都可以考虑用Nginx。
    大型门户网站,电商网站需要用到LVS。

    LVS 介绍

    LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系
    统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组
    织成立,是中国国内最早出现的自由软件项目之一。

    官网:http://www.linuxvirtualserver.org/index.html

    中文资料

    LVS项目介绍 http://www.linuxvirtualserver.org/zh/lvs1.html

    LVS集群的体系结构 http://www.linuxvirtualserver.org/zh/lvs2.html

    LVS集群中的IP负载均衡技术 http://www.linuxvirtualserver.org/zh/lvs3.html

    LVS集群的负载调度 http://www.linuxvirtualserver.org/zh/lvs4.html

     

    LVS内核模块ip_vs介绍

    早在2.2内核时, IPVS就已经以内核补丁的形式出现。
    从2.4.23版本开始, IPVS软件就合并到Linux内核的常用版本的内核补丁的集合。从2.4.24以后IPVS已经成Linux官方标准内核的一部分。

    LVS无需安装
    安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive
    ipvsadm是通过命令行管理,而keepalive读取配置文件管理
    后面我们会用Shell脚本实现keepalive的功能

    lvs集群部署

    安装lpvsadm管理工具

    查看系统的LVS模块

    1. lsmod|grep ip_vs

      默认没有加载模块,安装管理工具

    2. yum install -y ipvsadm

      查看lvs默认状态并且激活lvs

    3. [root@lb03 ~]# ipvsadm
    4. IP Virtual Server version 1.2.1 (size=4096)
    5. Prot LocalAddress:Port Scheduler Flags
    6.   -> RemoteAddress:Port Forward Weight ActiveConn InActConn

    配置lvs负载均衡服务

    第一步:在eth0网卡绑定VIP地址(ip)

    第二步:清楚当前说有LVS规则(-C)

    第三步:设置tcp、tcpfin、udp链接超时时间(--set)

    第四步:添加虚拟服务(-A),调度算法(man ipvsadm)

    第五步:将虚拟服务关联到真是服务上(-a)

    第六步:查看配置结果(ln)

    1. ip addr add 10.0.0.13/24 dev eth0
    2. ipvsadm -C
    3. ipvsadm --set 30 5 60 #控制浏览器与lb01的超时时间
    4. ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20 -p控制lb01与web01、web02的超时时
    5. ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
    6. ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
    7. ipvsadm -ln

    配置web操作

    1. ip addr add 10.0.0.13/32 dev lo
    2.  
    3. cat >>/etc/sysctl.conf<<EOF
    4. net.ipv4.conf.all.arp_ignore = 1
    5. net.ipv4.conf.all.arp_announce = 2
    6. net.ipv4.conf.lo.arp_ignore = 1
    7. net.ipv4.conf.lo.arp_announce = 2
    8. EOF
    9. sysctl -p

      修改web03 web04 tomcat端口号为 80

    web03 启动 tomcat8_1

    web04 启动 tomcat_02

    访问测试

    lb02测试

    说有访问的返回值都是10.0.0.3

    lvs跟nginx不一样 17和18不通过IP地址访问,通过mac地址访问

    lvs通过mac地址访问

    访问10.0.0.3就是访问lb01

    10.0.0.3的数据包mac地址的返回值就是访问web03

    抓包结果总结

    数据包的ip地址只有lb的vip 10.0.0.3

    数据包的接收mac地址也是lb01的网卡mac地址

    数据包的返回mac地址可能是web03的网卡mac,也可能是web04的网卡mac地址。

    服务器切换arp

    vip漂移,手动更改vip的mac地址

    1. 在lb03删除vip
    2. ip addr del 10.0.0.13/24 dev eth0
    3. 在lb04添加vip
    4. ip addr add 10.0.0.13/24 dev eth0
    5. 查看lb04 eth0的vip地址
    6. ip addr show eth0
    7. 全网广播vip的mac地址改变
    8. arping -I eth0 -c 1 -U 10.0.0.13
    9. windows查看
    10. arp -a

     

    lvs高可用

    keepalive功能:

    通用功能:实现vip高可用,漂移。

    LVS专属技能:通过配置文件控制LVS集群节点。

    LVS专属技能:对后端的真实服务器节点进行健康检查。

    在lb03和lb04安装Keepalive

    1. yum -y install keepalived

    Keepalive的配置文件分成三部分配置

    1. vim /etc/keepalived/keepalived.conf

    1.global_defs è全局定义

    同一集群每个节点不一样

    router_id LVS_03

    router_id LVS_04

    1. ###########lb03###########
    2. global_defs {
    3. router_id LVS_03
    4. }
    5. ###########lb04###########
    6. global_defs {
    7. router_id LVS_04
    8. }

    2.vrrp 实例配置 èVIP

    1. ###########lb01########### ###########lb02###########
    2. vrrp_instance VI_1 { vrrp_instance VI_1 {
    3. state MASTER state BACKUP
    4. interface eth0 interface eth0
    5. virtual_router_id 51 virtual_router_id 51
    6. priority 150 priority 100
    7. advert_int 1 advert_int 1
    8. authentication { authentication {
    9. auth_type PASS auth_type PASS
    10. auth_pass 1111 auth_pass 1111
    11. } }
    12. virtual_ipaddress { virtual_ipaddress {
    13. 10.0.0.3/24 10.0.0.3/24
    14.   } }
    15. } }

    virtual_router_id 51 分组,同一集群每个节点相同不同集群一定不要同。

    3.virtual_server配置 èlvs的配置

    1. virtual_server 10.0.0.13 80 {
    2.     delay_loop 6
    3.     lb_algo wrr
    4.     lb_kind DR
    5.     nat_mask 255.255.255.0
    6.     persistence_timeout 50
    7.     protocol TCP
    8.  
    9.     real_server 10.0.0.17 80 {
    10.         weight 1
    11.         TCP_CHECK {
    12.         connect_timeout 8
    13.         nb_get_retry 3
    14.         delay_before_retry 3
    15.         connect_port 80
    16.         }
    17.     }
    18.  
    19.     real_server 10.0.0.18 80 {
    20.         weight 1
    21.         TCP_CHECK {
    22.         connect_timeout 8
    23.         nb_get_retry 3
    24.         delay_before_retry 3
    25.         connect_port 80
    26.         }
    27.     }
    28. }

    keepalive健康检查功能

    模拟web03出现问题

    查看lb03 lvs状态

    关闭web03

     

     

    查看lb03状态

    web03被剔除

    开启web03

    查看lvs状态

    web03返回。

    以上是健康检查功能

     

     

     

     

     

    LVS集群的工作模式

    DR直接路由模式

    NAT模式

    FULLNAT

    TUNNEL

     

  • 相关阅读:
    Spring攻略学习笔记(3.00)AOP核心概念和术语
    zoj 3494
    第43周星期五
    findBugs学习小结
    第42周星期日
    Cookie知识小结
    第42周星期三
    第42周星期六
    第43周星期四小结
    第43周星期二
  • 原文地址:https://www.cnblogs.com/jksbaduen/p/7921317.html
Copyright © 2011-2022 走看看