zoukankan      html  css  js  c++  java
  • 负载均衡LVS(Linux Virtual Server)

    负载均衡LVS(Linux Virtual Server)

      目录

    负载均衡LVS(Linux Virtual Server)... 1
    
     第1章 LVS负载均衡集群简介... 1
    
    1.1 为什么要学LVS. 1
    
    1.2 LVS网站资料:... 1
    
    1.3 LVS内核模块ip_vs介绍... 1
    
     第2章 LVS-DR直接路由模式... 2
    
    2.1 DR直接路由模式说明... 2
    
    2.1.1 DR-原理图片:... 2
    
    2.1.2 DR-原理解释... 2
    
    2.1.3 ARP原理... 3
    
    2.2 ipvsadm-检查环境... 3
    
    2.3 lb服务端-搭建lvs. 4
    
    2.4 web服务器配置... 4
    
     第3章 LVS-keepalived高可用lvs. 5
    
    3.1 环境介绍... 5
    
    3.2 部署lvs-keepalived. 6
    
    3.2.1 lb负载均衡操作(Load Balance)... 6
    
    3.2.2 web服务器操作... 9
    
    3.2.3 检测高可用及负载... 9
    
     第4章 LVS集群的工作模式总结... 10

    第1章 LVS负载均衡集群简介

    1.1 为什么要学LVS

    LVS支持比nginx更大的并发量。
    
    当并发超过了Nginx上限,就可以使用LVS了。日1000-2000W PV 或并发请求1万以下都可以考虑用Nginx。

    1.2 LVS网站资料:

    官网: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 

    1.3 LVS内核模块ip_vs介绍

    从2.4.24以后IPVS已经成为Linux官方标准内核的一部分。

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

    安装ipvsadm管理工具(只在lb操作)

    第2章 LVS-DR直接路由模式

    2.1 DR直接路由模式说明

    2.1.1 DR-原理图片:

     

    2.1.2 DR-原理解释

    原理:DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器将响应后的处理结果直接返回给客户端用户。

    注意:DR技术可极大地提高集群系统的伸缩性。但要求调度器LB与真实服务器RS都有一块物理网卡连在同一物理网段上,即必须在同一局域网环境。

    2.1.3 ARP原理

    实现局域网内数据传输依据:(1)主机ARP缓存 (2)交换机MAC地址表
    ARP原理:根据IP地址获取物理地址MAC的一个TCP
    /IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,(所有主机会提取发送者的ip 和mac存入自己的ARP缓存中)目标主机接收返回自己mac消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 数据传输过程:(前提已有arp缓存)主机A通过查询ARP缓存,得到mac地址,数据包经过交换机检查mac地址表,到达指定主机B。

    2.2 ipvsadm-检查环境

    系统准备:一台负载均衡服务器lb03(10.0.0.15)
    
              两台web服务器(10.0.0.17-18# 查看系统的LVS模块。
    lsmod|grep ip_vs
    
    # 默认没有加载模块,需要安装管理工具才会激活。
    yum -y install ipvsadm
    
    # 查看当前LVS状态,顺便激活LVS内核模块。
    ipvsadm  -ln

    2.3 lb服务端-搭建lvs

    只在负载服务器-lb操作

    ip addr add 10.0.0.13/24 dev eth0
    ipvsadm -C
    ipvsadm --set 30 5 60
    ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20
    ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
    ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
    ipvsadm -ln

    命令解释

    #步骤1:在eth0网卡绑定VIP地址(ip)
    
    #步骤2:清除当前所有LVS规则(-C)
    
    #步骤3:设置tcp、tcpfin、udp链接超时时间(--set)
    
    #步骤4:添加虚拟服务(-A),-t指定虚拟服务的IP端口,-s 指定调度算法 调度算法见man ipvsadm, rr wrr 权重轮询 -p 指定超时时间
    
    #步骤5:将虚拟服务关联到真实服务上(-a) -r指定真实服务的IP端口 -g LVS的模式 DR模式 -w 指定权重
    
    #步骤6:查看配置结果(-ln)

    2.4 web服务器配置

    (在web03/web04同时操作下面步骤)
    
    #步骤1:在lo网卡绑定VIP地址(ip)
    ip addr add 10.0.0.13/32 dev lo
    
    #步骤2:修改内核参数抑制ARP响应
    cat >>/etc/sysctl.conf<<EOF
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    EOF
    
    sysctl -p

    ##解释说明

    #随笔--更新全网arp缓存(向全网发送广播)
    arping  -I eth0  -c 1  -U  10.0.0.13
    
    #命令操作解释说明
    1. RealServer为什么要在lo接口上配置VIP?
    答:既然要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包(基于二层的,ip不变)。在lo上配置vip能够完成接收包并将结果返回client。
    
    #网卡解释
    eth0,eth1,eth2……代表网卡一,网卡二,网卡三……
    lo代表127.0.0.1,即localhost
    
    2.在eth0网卡上配置VIP可以吗?
    答:不可以,将VIP设置在eth0网卡上,会影响RS的arp请求,造成整体LVS集群arp缓存表紊乱,以至于整个负载均衡集群都不能正常工作。
    
    3.为什么要抑制ARP响应?
    访问网站时,直接访问web服务器,不经过负载均衡服务器。

    第3章 LVS-keepalived高可用lvs

    3.1 环境介绍

    两台负载均衡服务器:lb03   lb04

    两台web服务器:10.0.0.17  10.0.0.18

    (负载均衡器)
    # 查看系统的LVS模块。
    lsmod|grep ip_vs
    # 默认没有加载模块,需要安装管理工具才会激活。 yum -y install ipvsadm
    # 查看当前LVS状态,顺便激活LVS内核模块。 ipvsadm -ln

    3.2 部署lvs-keepalived

    3.2.1 lb负载均衡操作(Load Balance)

    #步骤1:在lb03和lb04安装Keepalive

    yum -y install keepalived

    #只需要在keeplived的配置文件中设置lvs

    #步骤2:配置Keepalive, lb03和lb04的配置文件分成三部分配置

    1.global_defs   全局定义
    
    2.vrrp 实例配置  VIP
    
    3.virtual_server配置  lvs的配置

    # lb03的配置文件

    # vim /etc/keepalived/keepalived.conf
    global_defs {
       router_id LVS_01
    }
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
         10.0.0.13/24
        }
    }
    #lvs 的配置 
    virtual_server 10.0.0.13 80 {    #虚 ip
        delay_loop 6              
        lb_algo wrr     
        lb_kind DR   
        nat_mask 255.255.255.0
        persistence_timeout 50     
        protocol TCP    
    
        real_server 10.0.0.17 80 {   #真实web  ip
            weight 1      
            TCP_CHECK {
            connect_timeout 8       
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
            }
        }
    
        real_server 10.0.0.18 80 {   #真是web ip
            weight 1              
            TCP_CHECK {
            connect_timeout 8       
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
            }
        }
    }

    lb04的配置文件

    [root@lb04 keepalived]# cat /etc/keepalived/keepalived.conf 
    global_defs {
       router_id LVS_02
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
         10.0.0.13/24
        }
    }
    virtual_server 10.0.0.13 80 {
        delay_loop 6          
        lb_algo wrr                
        lb_kind DR                
        nat_mask 255.255.255.0
        persistence_timeout 50     
        protocol TCP                
    
        real_server 10.0.0.17 80 {
            weight 1              
            TCP_CHECK {
            connect_timeout 8       
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
            }
        }
    
        real_server 10.0.0.18 80 {
            weight 1              
            TCP_CHECK {
            connect_timeout 8       
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
            }
        }
    }

    3.2.2 web服务器操作

     

    (在web03/web04同时操作下面步骤)
    步骤1:在lo网卡绑定VIP地址(ip)
    步骤2:修改内核参数抑制ARP响应
    ip addr add 10.0.0.13/32 dev lo   #临时生效
    
    cat >>/etc/sysctl.conf<<EOF
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    EOF
    sysctl -p

     

    3.2.3 检测高可用及负载

    ip addr show eth0
    
    ipvsadm -ln

    第4章 LVS集群的工作模式总结

    DR(Direct Routing)直接路由模式 (常用)

    NAT(Network Address Translation)

    TUN(Tunneling)隧道模式

    FULLNAT(Full Network Address Translation)

  • 相关阅读:
    网页图片垂直剧中 等比例缩放 黑白显示
    vs.net打包(自动检测环境并安装.net framwork)
    22个所见即所得在线Web编辑器
    js验证表单大全3
    js验证表单大全2
    开源界的5大开源许可协议
    ffmpeg参数使用说明2
    ffmpeg参数使用说明1
    js验证表单大全1
    【从零开始学Spring笔记】注解和XML整合开发
  • 原文地址:https://www.cnblogs.com/xzy-blog/p/8497263.html
Copyright © 2011-2022 走看看