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会自动剔除故障节点,节点恢复时自动添加

  • 相关阅读:
    JS实现对Date Range的认证
    SharePoint 用SafeControl的方式创建能够重复利用的Control
    设计模式详解(链接)
    Asp.net MVC3中进行自定义Error Page
    手动将自定制的WebPart部署到 SharePoint 2010 中
    获取 SharePoint 2010 中所有的User Profile Service Application
    自定义Data Service Providers — (5)最小化的运行时服务
    温总理对软件工作者的勉励
    自定义Data Service Providers —(9)关系
    自定义Data Service Providers — (7)交互式查询
  • 原文地址:https://www.cnblogs.com/anay/p/9268928.html
Copyright © 2011-2022 走看看