zoukankan      html  css  js  c++  java
  • LVS-DR模式实现调度负载

    本篇文章主要梳理一下LVS前端调度过程及用户请求过程

    实验架构

    准备工作

    添加各主机路由联通主机通信

    Client IP

    route add default gw 172.20.17.19
    

    Route

    路由主机开启地址转发功能

    • 将/etc/sysctl.conf文件中的net.ipv4.ip_forward 值改为 1,后执行sysctl -p

    后端主机
    后端主机包括LVS,web server 主机,在其主机添加响应路由

    route  add -net  172.20.17.0 netmask 255.255.255.0 gw 192.168.214.133
    

    部署HTTPserver

    RS1与RS2安装web环境

    [root@www ~]# yum install httpd php-fpm php-mysql -y
    

    在RS1和RS2主机的httpd.conf中添加如下内容

    <IfModule dir_module>
        DirectoryIndex index.html
        DirectoryIndex index.php       #添加这一行
    </IfModule>
    #
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    ProxyRequests Off
    ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
    

    配置完成后重启服务单点测试web服务

    RS1和RS2服务设置arp抑制规则

    ARP抑制要在添加VIP之前,否正会产生不轮询的现象

    RS1和RS2都执行

    [root@www ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
    [root@www ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce 
    
    [root@www ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
    [root@www ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
    

    LVS,RS1,RS2添加VIP

    三台主机执行:

    ip addr add  192.168.214.140 dev lo
    

    配置LVS集群规则

    [root@LVS ~]# yum install ipvsadm -y
    

    添加LVS集群,定义调度模式为RR轮询

    [root@LVS ~]# ipvsadm -A -t 192.168.214.140:80 -s rr
    

    将后端两台RS 主机加入集群,设置工作模式为DR模型

    [root@LVS ~]# ipvsadm -a -t 192.168.214.140:80 -r 192.168.214.145 -g
    [root@LVS ~]# ipvsadm -a -t 192.168.214.140:80 -r 192.168.214.143 -g
    

    工作模式

    • -g: gateway, dr模式,默认

    • -i: ipip, tun模式

    • -m: masquerade, nat模式

    • -w weight:权重

    查看ipvsadm规则信息

    [root@LVS ~]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.214.140:80 rr
      -> 192.168.214.143:80           Route   1      0          0         
      -> 192.168.214.145:80           Route   1      0          0   
    

    Client查看测试

    [root@yufu ~]# for i in {1..10};do curl 192.168.214.140;done
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    

    部署DNS

    这里用DNS是让客户端使用域名解析的方式访问web服务,这样比较完整地模拟出正常环境下用户的请求响应过程

    安装DNS

    [root@DNS ~]# yum install bind -y
    

    启动服务

    [root@DNS ~]# systemctl start named
    

    编辑named.conf文件内容如下

    options {
    //      listen-on port 53 { 127.0.0.1; };
            listen-on port 53 { any; };
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
    //      allow-query     { localhost; };
            allow-query     { any; };
    

    编辑named.rfc1912.zones文件添加如下配置段

    zone "yufu123.com" IN {
            type master;
            file "yufu123.com.zone";
    
    };
    

    在/var/named/目录下创建yufu123.com.zone

    vim /var/named/yufu123.com.zone

    $TTL 1D
    @       IN      SOA     ns1.yufu123.com. admin.yufu.com (
    
                            20180703
                            1H
                            5M
                            7D
                            1D )
    
            IN      NS      ns1.yufu123.com.
    ns1     IN      A       172.20.17.20
    www.yufu123.com.   IN   A       192.168.214.140
    yufu123.com.       IN   A       192.168.214.140
    

    给DNS主机添加一条路由指向路由器的网口

    [root@DNS ~]# route add -net 192.168.214.0 netmask 255.255.255.0 gw 172.20.17.19
    

    Client使用域名测试

    使用域名解析时,需要将路由表中的地址改为DNS服务的主机地址,如下

    echo "nameserver 172.20.17.20" > /etc/resolv.conf

    使用域名测试访问

    [root@yufu ~]# for i in {1..10};do curl http://www.yufu123.com;done
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    

    不带www测试

    [root@yufu ~]# for i in {1..10};do curl http://yufu123.com;done
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    RS 1 SERVER
    RS 2 SERVER
    

    一些问题

    至此LVS前端负载调度的过程已经实现了,但是还存在很多的问题:比如LVS的角度节点存在单点问题,因为我只部署了一台,在图中画出了备用的节点,可以使用Keepalived实现LVS的高可用,但是这里并不打算实现高可用的架构。此外,还存在另一个问题,就是LVS无法对后端的RS进行健康状态监测,LVS只有调度功能,没有健康状态监测的功能,如果后端服务down机,lvs还是会一如既往地往故障主机上调度请求的,要实现健康状态监测,可以自己编写检测脚本实现,或者使用第三方工具辅助。后面的内容,就来实现基于第三方工具实现LVS的自动检测后端主机并自动添加删除RS节点的功能。

    ldirectord监控和控制LVS

    ldirectord 可以监控和控制LVS守护进程,还可以管理LVS规则

    安装ldirectord

    [root@LVS ~]# yum install ldirectord-3.9.6-0rc1.1.1.x86_64.rpm  -y
    

    复制配置文件

    [root@LVS ~]# cp  /usr/share/doc/ldirectord-3.9.6/ldirectord.cf  /etc/ha.d/ldirectord.cf
    

    编辑内容

    # Global Directives
    checktimeout=3
    checkinterval=1
    #fallback=127.0.0.1:80
    #fallback6=[::1]:80
    autoreload=yes
    logfile="/var/log/ldirectord.log"
    #logfile="local0"
    #emailalert="admin@x.y.z"
    #emailalertfreq=3600
    #emailalertstatus=all
    quiescent=no
    
    # Sample for an http virtual service
    virtual=192.168.214.140:80
            real=192.168.214.143:80 gate
            real=192.168.214.145:80 gate
    #       real=192.168.6.6:80 gate
            fallback=127.0.0.1:80 gate
            service=http
            scheduler=rr
            #persistent=600
            #netmask=255.255.255.255
            protocol=tcp
            checktype=negotiate
            checkport=80
            request="index.html"
            receive="RS"
    

    通过上面的配置,无需再使用ipvsadm工具手动添加规则,在ldirectord配置文件中定义好集群规则即可。当后端主机故障无法连通时,ldirectord会自动剔除故障节点,节点恢复时自动添加

  • 相关阅读:
    HDU 6182 A Math Problem 水题
    HDU 6186 CS Course 位运算 思维
    HDU 6188 Duizi and Shunzi 贪心 思维
    HDU 2824 The Euler function 欧拉函数
    HDU 3037 Saving Beans 多重集合的结合 lucas定理
    HDU 3923 Invoker Polya定理
    FZU 2282 Wand 组合数学 错排公式
    HDU 1452 Happy 2004 数论
    HDU 5778 abs 数论
    欧拉回路【判断连通+度数为偶】
  • 原文地址:https://www.cnblogs.com/anay/p/9268928.html
Copyright © 2011-2022 走看看