zoukankan      html  css  js  c++  java
  • LVS之NAT模式

    目录:

    • 网络环境
    • LVS服务器配置
    • LVS服务器添加ipvs规则
    • RS服务器配置
    • 访问验证
    • 抓包分析
    • 注意事项

    【网络环境】

    服务器类型 IP 说明
    lvs_vip 192.168.2.130 vip处于不同网段
    lvs_dip 192.168.237.131 dip与rip处于同一网段
    realserver1 192.168.237.171 httpd服务器
    realserver2 192.168.237.172 httpd服务器

    tips:三台服务器均关闭防火墙和selinux

    【LVS服务器配置】

    临时开启路由转发:
    # echo 1 > /proc/sys/net/ipv4/ip_forward
    # sysctl -w net.ipv4.ip_forward=1
    永久开启路由转发:
    修改/etc/systcl.conf参数如下
    # cat /etc/sysctl.conf | grep 'net.ipv4.ip_forward'
    net.ipv4.ip_forward=1
    配置生效命令
    # sysctl -p
    tips:0关闭,1开启
     

    【LVS服务器添加ipvs规则】

    [root@v_machine1 ~]# 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.2.130:80 rr
      -> 192.168.237.171:80           Masq    1      0          0
      -> 192.168.237.172:80           Masq    1      0          0

    【RS服务器配置】

    添加默认路由到Dip(重要)
    使用route命令添加或者写入配置文件中重启network:
    [root@v_machine3 lvs]# route add default gw 192.168.237.131
    [root@v_machine3 lvs]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.237.131 0.0.0.0         UG    0      0        0 ens33
    169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
    192.168.237.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

    忽略arp广播(可省略,因为RS上没有vip)

    # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    # echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
    # echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce

    【访问验证】

    先后访问lvs服务器

    [root@v_machine1 lvs]# curl 192.168.2.130
    hello,192.168.237.171
    [root@v_machine1 lvs]#
    [root@v_machine1 lvs]# curl 192.168.2.130
    hello,192.168.237.172
    [root@v_machine1 lvs]# ipvsadm -Lnc
    IPVS connection entries
    pro expire state       source             virtual            destination
    TCP 01:56  TIME_WAIT   192.168.2.130:38702 192.168.2.130:80   192.168.237.172:80
    TCP 01:58  TIME_WAIT   192.168.2.130:38704 192.168.2.130:80   192.168.237.171:80
    TCP 01:51  TIME_WAIT   192.168.2.104:50395 192.168.2.130:80   192.168.237.172:80
    TCP 00:39  TIME_WAIT   192.168.2.104:50386 192.168.2.130:80   192.168.237.171:80
    TCP 01:01  TIME_WAIT   192.168.2.104:50428 192.168.2.130:80   192.168.237.171:80

    本地(192.168.2.104)浏览器访问测试:

    postman测试:

    结论:可见lvs实现了对用户访问的轮询调度

    【抓包分析】

    (这里由于网络变了,vip变成了192.168.91.130,客户机变成了192.168.91.128,所以实验ip与前面的环境配置不一样)
    在客户机(192.168.91.128)上对lvs_vip进行两次访问:
    [root@v_machine2 ~]# curl 192.168.91.130
    hello,192.168.237.172
    [root@v_machine2 ~]# curl 192.168.91.130
    hello,192.168.237.171

    在lvs服务器上抓包,然后wireshark打开查看:

    第一次访问vip:
    192.168.91.128 -> 192.168.91.130
    lvs收到访问请求后,先将目的ip进行改写为选出的后端RS的IP(RIP),再转发给该RS:
    192.168.91.128 -> 192.168.237.172
    RS回复访问请求,通过lvs转发出去(因为该lvs是RS的路由):
    192.168.237.172 -> 192.168.91.128
    lvs先改写源ip为vip,然后回复给客户机:
    192.168.91.130 -> 192.168.91.128
    第二次访问vip,数据包转发过程是一样的,只是由于轮询算法导致选出的RS换成了另一台。
    根据抓包结果,数据包流程如下图:

    对第一次访问数据包追踪http流:

     

    数据包文件:

    链接:https://pan.baidu.com/s/1FnV3jL_p5ohbsrPpyek4JQ 
    提取码:85oy 

    【注意事项】

    学习使用,关掉防火墙和selinux:
    [root@v_machine1 ~]# setenforce 0
    setenforce: SELinux is disabled
    关掉防火墙并清空防火墙转发规则:
    systemctl stop iptables
    iptables -F
    iptables -X

    关掉NetworkManager,并禁止开机启动,这个服务容易导致路由添加不成功;

    systemctl stop NetworkManager
    systemctl disable NetworkManager
  • 相关阅读:
    linux下的exec命令
    jenkins+gitlab+maven+docker部署项目之jenkins用户权限管理
    油候插件grant的使用
    python deepcopy的替代方案
    starletter代码示例
    mac使用pytorch
    Mac ERROR:root:code for hash md5 was not found.
    scrapy-redis分布式爬虫实战
    mac进行redis5.0单机集群笔记
    合并两个有序的链表Python和Go代码
  • 原文地址:https://www.cnblogs.com/MrReboot/p/11073293.html
Copyright © 2011-2022 走看看