zoukankan      html  css  js  c++  java
  • LVS跨网段DR模型 Alex

     客户端IP地址:172.16.8.147

    路由器服务器IP地址:172.16.8.167内网IP地址:192.168.1.3

    一、将客户端的网关修改为路由服务器IP地址

    vim ifcfg-ens33
    
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    IPADDR=172.16.8.147
    NETMASK=255.255.254.0
    GATEWAY=172.16.8.167

    二、路由服务器配置转发

    vi /etc/sysctl.conf 
    
    net.ipv4.ip_forward=1

    三、使路由转发功能生效

    sysctl -p

    四、修改RS服务器,LVS服务器的网关为路由服务器

     vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    
    GATEWAY=192.168.1.3

     五、在路由服务器上添加一个IP地址

    nmcli c modify ens33 +ipv4.addresses 10.0.0.200/8
    nmcli c up ens33

    六、配置LVS服务器的网关,该网关可以随便配,但必须要有,最好配路由器的地址

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    GATEWAY=192.168.1.3

    七、在两台RS服务器上执行以下脚本,两台RS服务器和LVS服务器的IP均为10.0.0.100

    bash RS.sh start

    脚本内容如下:

    #/bin/bash
    #Date:2021-5-18
    vip=10.0.0.100
    mask=255.255.255.255
    #The subnet mask is not important here
    dev=lo:1
    test=192.168.1.100
    #rpm q- http &> /dev/null || yum -y install httpd &>/dev/null
    #service httpd start &> /dev/null && echo "The httpd Server is Ready!"
    #echo "<h1>$test `hostname`</h1/>">  /var/www/html/index.html
    
    case $1 in
    start)
        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
        ifconfig $dev $vip netmask $mask #broadcast $vip up
        #route add -host $vip dev $dev
        echo "The RS Server is Ready!"
        ;;
    stop)
        ifconfig $dev down
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 0 > /proc/sys/net/ipv4//conf/all/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo "The RS Server is Caneled!"
        ;;
    *)
        echo "Usage: $(basename $0) start|stop"
        exit 1
        ;;
    esac

    八、配置LVS服务器

    bash VS.sh start

    脚本内容如下:

    #/bin/bash
    vip=10.0.0.100
    iface=lo:1
    mask='255.255.255.255'
    port='80'
    rs1='192.168.1.5'
    rs2='192.168.1.6'
    scheduler='rr'
    type='-g'
    #-g =DR model
    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 "Usage $(basename $0) start|stop"
        exit 1 
    esac

    九、在两台RS服务器上安装httpd服务,并设置为开机启动

    1 yum install httpd -y
    2 systemctl start httpd
    3 systemctl enable httpd

    十、测试访问

    [05:31:08 root@client_ip ~]#curl 10.0.0.100
    192.168.1.6------RS2
    [05:31:09 root@client_ip ~]#curl 10.0.0.100
    192.168.1.5 _______RS1

     LVS跨网段DR模型 ——https

     一、安装自签名证书(这里就不申请官方证书了,申请一个自签名证书就行)

    yum install mod_ssl -y

     二、 重启httpd 服务

    systemctl restart httpd

     三、添加443规则 

    ipvsadm -A -t 10.0.0.100:443 -s rr
    ipvsadm -a -t 10.0.0.100:443 -r 192.168.1.5
    ipvsadm -a -t 10.0.0.100:443 -r 192.168.1.6

    四、测试访问

    [06:13:38 root@client_ip ~]#curl -k https://10.0.0.100/
    192.168.1.5 _______RS1
    [06:13:38 root@client_ip ~]#curl -k https://10.0.0.100/
    192.168.1.6------RS2

     五、无论访问该网段的80还是443 ,只要是访问同一个网站,直接参与到一个调度中

    目前调度规则,访问80和443端口如下:

    while : ; do curl 10.0.0.100 ; curl -k https://10.0.0.100/ ; sleep 0.5; done
    192.168.1.6------RS2
    192.168.1.5 _______RS1
    192.168.1.5 _______RS1
    192.168.1.6------RS2
    192.168.1.6------RS2

    无论是80还是443,通过贴标签的方式,将他们当成是同一台集群,通过iptables 来贴标签

    六、在LVS服务器上贴标签

    iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10

    在mangle表上,PREROUTING链上,-d IP地址,协议是tcp,端口是80和443的,就给你贴标签,标签名10

    七、查看防火墙mangle表是否添加成功

    iptables -t mangle -nvL

    八、清除规则

    ipvsadm -C

    九、使用防火墙标签加规则-f ,添加FWM规则

    ipvsadm -A -f 10 -s rr

    这里的10就是上面第六步打标签的最后的标签名

    十、添加规则,

    ipvsadm -a -f  10 -r 192.168.1.5 -g
    ipvsadm -a -f  10 -r 192.168.1.6 -g

    dr 模型不需要添加端口,加了也白加

    十一、测试访问

    while : ; do curl 10.0.0.100 ; curl -k https://10.0.0.100/ ; sleep 0.5; done
    192.168.1.5 _______RS1
    192.168.1.6------RS2
    192.168.1.5 _______RS1
    192.168.1.6------RS2
  • 相关阅读:
    Go语言判断一个字节的高位大于四
    Golang封装一个加锁的Map工具包
    解决往服务器传文件时权限不够问题
    git 服务器同步代码错误 error: insufficient permission for adding an object to repository database .git/objects
    动态调用WebService
    sql的一些使用小技巧整理【不定期更新】
    【雅思】【口语】保持健康的活动
    【雅思】【口语】advertisement--buy sth.
    【雅思】【口语】Teacher
    【python】python_接口自动化测试框架
  • 原文地址:https://www.cnblogs.com/alexlv/p/14803628.html
Copyright © 2011-2022 走看看