zoukankan      html  css  js  c++  java
  • 实验lvs+dns+nfs+mysql+web


    LVS优点:工作在内核级别,不受socket文件数量的限制,并发数量对调度器本身来讲能达到3百万,缺点:工作在TCP层(IP+PORT),不具备对应用层报文调度,如网页的动静分离。

    服务器IP地址规划(10.x模拟公网地址,192.x私网地址,172.x私网地址)

    NFS:192.168.30.33
    WEB1:192.168.30.17
    WEB2:192.168.30.27
    LVS:192.168.30.7 VIP:10.0.0.100
    DNS:172.20.42.27
    Mysql:192.168.30.30
    Route:192.168.30.208, 10.0.0.200,172.20.42.200
    Client: Windows IP 172.20.42.222
    

    各服务器配置

    WEB1

    1. 网络
        ifcfg-eth0
        DEVICE=eth0
        IPADDR=192.168.30.17
        PREFIX=24
        GATEWAY=192.168.30.208
        ifcfg-eth0:1
        DEVICE=eth0:1
        IPADDR=10.0.0.100
        PREFIX=8
    2. 安装相应的包
        yum install httpd php-fpm php-mysql -y
    3. 在RS上修改内核参数以限制arp通告及应答级
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    

    WEB2

    参考WEB1,只是将IP更改为192.168.30.27
    

    DNS

    1. 安装 yum install bind -y
    2. 配置 
    

    vim /etc/named.rfc1912.zones
    zone "blog.com" IN {
    type master;
    file "blog.com.zone";
    };
    vim /var/named/blog.com.zone
    $TTL D
    @ IN SOA master.blog.com admin.blog.com. (
    0 ; serial
    D ; refresh
    H ; retry
    W ; expire
    H ) ; minimum
    NS master
    master A 172.20.42.27
    www A 10.0.0.100

    3. 启动systemctl restart named
    

    Route路由配置

    1. 网络
        ifcfg-eth0
        DEVICE=eth0
        BOOTPROTO=none
        IPADDR=192.168.30.208
        PREFIX=24
        ifcfg-eth0:1
        DEVICE=eth0:1
        BOOTPROTO=none
        IPADDR=10.0.0.200
        PREFIX=8
        ifcfg-eth1
        DEVICE=eth1
        BOOTPROTO=none
        IPADDR=172.20.42.200
        PREFIX=16
    2. 启用ip_forward
        echo 1 > /prov/sys/net/ipv4/ip_forward
        sysctl -a |grep ip_forward: net.ipv4.ip_forward = 1
    

    LVS配置

    1. 网络
    ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=none
    IPADDR=192.168.30.7
    PREFIX=24
    GATEWAY=192.168.30.208
    ifcfg-eth0:1
    DEVICE=eth0:1
    BOOTPROTO=none
    IPADDR=10.0.0.100
    PREFIX=8
    2. 运行如下的脚本(适当进行更改)
       [root@lvs ~]#cat lvs_dr_vs.sh 
        #!/bin/bash
        #Author:wangxiaochun
        #Date:2017-08-13
        vip='10.0.0.100'
        iface='eth0:1'
        mask='255.255.255.255'
        port='80'
        rs1='192.168.30.17'
        rs2='192.168.30.27'
        scheduler='wrr'
        type='-g'
        rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null
    
        case $1 in
    start)
        ifconfig $iface $vip netmask $mask #broadcast $vip up
        iptables -F
    
        ipvsadm -A -t ${vip}:${port} -s $scheduler
        ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
        ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
        echo "The VS Server is Ready!"
        ;;
    stop)
        ipvsadm -C
        ifconfig $iface down
        echo "The VS Server is Canceled!"
        ;;
    *)
        echo "Usage: $(basename $0) start|stop"
        exit 1
        ;;
    esac
        3. 查看ipvsadm -Ln
        IP Virtual Server version 1.2.1 (size=4096)
        Prot LocalAddress:Port Scheduler Flags
          -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
        TCP  10.0.0.100:80 wrr
          -> 192.168.30.17:80             Route   1      0          0         
          -> 192.168.30.27:80             Route   1      0          0         
        4. 更改lvs-dr的调度策略
        ipvsadm -C
        ipvsadm -A -t 10.0.0.100:80 -s rr
        ipvsadm -a -t 10.0.0.100:80 -r 192.168.30.17
        ipvsadm -a -t 10.0.0.100:80 -r 192.168.30.27
        5. 测试新的策略
        在Linux客户机上,配置网络
        DEVICE=eth2
        BOOTPROTO=none
        IPADDR=172.20.0.7![](https://images2018.cnblogs.com/blog/1386066/201807/1386066-20180703114658714-1685106874.png)
    
    
        PREFIX=16
        GATEWAY=172.20.42.200
        DNS1=172.20.42.27
    
        [root@centos7 ~]# curl www.blog.com
        web1
        [root@centos7 ~]# curl www.blog.com
        web2
        [root@centos7 ~]# curl www.blog.com
        web1
        [root@centos7 ~]# curl www.blog.com
        web2
        测试结论:达到了roundrobin轮询的效果
        6. 在windows PC上测试
    


    在浏览器中访问www.blog.com,可以看出,不是每次刷新网站都会切换网站,是因为浏览器的缓存导致。

    LVS高可用性

    上述LVS的方案有如下缺点:
    1. Director不可用,整个系统将不可用;SPoF Single Point of Failure
    解决方案:高可用keepalived heartbeat/corosync
    2. 某RS不可用时,Director依然会调度请求至此RS
    解决方案: 由Director对各RS健康状态进行检查,失败时禁用,成功时启用keepalived heartbeat/corosync ldirectord
    检测方式:
    (a) 网络层检测,icmp
    (b) 传输层检测,端口探测
    (c) 应用层检测,请求某关键资源
    RS全不用时:backup server, sorry server

    ldirectord安装配置过程

    1.  yum install  ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
    2.  cp    /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/
        更改配置文件
        checktimeout=3
        checkinterval=1
        fallback=127.0.0.1:80
        #fallback6=[::1]:80
        autoreload=yes
        logfile="/var/log/ldirectord.log"
        quiescent=no
    
        # Sample for an http virtual service
       virtual=10.0.0.100:80
            real=192.168.30.17:80 gate(gate表示LVS-DR)
            real=192.168.30.27:80 gate
            fallback=127.0.0.1:80 gate
            service=http
            scheduler=rr 
            protocol=tcp
            checktype=negotiate
            checkport=80
            request="test.html"
            receive="web"
    
    
        如下的配置文件表示有权重:
            real=192.168.30.17:80 gate 1
            real=192.168.30.27:80 gate 2
            fallback=127.0.0.1:80 gate
            service=http
            scheduler=wrr 
    3. systemctl start ldirectord.service
    4. 同时在两个WEB服务器上的/var/www/html建立text.html,内容分别为web1和web2
    5. 测试
        在LVS服务器上检查状态:
            [root@lvs ha.d]# ipvsadm -Ln
            IP Virtual Server version 1.2.1 (size=4096)
            Prot LocalAddress:Port Scheduler Flags
              -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
            TCP  10.0.0.100:80 rr
              -> 192.168.30.17:80             Route   1      0          0
              -> 192.168.30.27:80             Route   1      0          0
        在WEB2服务器上,停止httpd服务systemctl stop httpd
        在LVS服务器上,ipvsadm -Ln,可以看到WEB2已经不在LVS的集群节点中:
              -> 192.168.30.17:80             Route   1      0          3
        停止WEB1服务器上的httpd,在LVS服务器上,可以看到:
              -> 127.0.0.1:80                 Route   1      0          1
        同时在LVS上启动httpd,主页里显示Sorry,please be patient.,当如上两个WEB服务器都不能提供服务时,终端访问会得到如下的显示:
            [root@centos7 home]# curl www.blog.com
            Sorry,please be patient.
  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/liangjindong/p/9257015.html
Copyright © 2011-2022 走看看