目录:

  • 网络环境
  • 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  > /proc/sys/net/ipv4/ip_forward
或
# sysctl -w net.ipv4.ip_forward=
永久开启路由转发:
修改/etc/systcl.conf参数如下
# cat /etc/sysctl.conf | grep 'net.ipv4.ip_forward'
net.ipv4.ip_forward=
配置生效命令
# sysctl -p
tips:0关闭,1开启
 

【LVS服务器添加ipvs规则】

[root@v_machine1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.130: rr
-> 192.168.237.171: Masq
-> 192.168.237.172: Masq

【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 ens33
169.254.0.0 0.0.0.0 255.255.0.0 U ens33
192.168.237.0 0.0.0.0 255.255.255.0 U ens33

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

# echo  > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo > /proc/sys/net/ipv4/conf/all/arp_announce
# echo > /proc/sys/net/ipv4/conf/ens33/arp_ignore
# echo > /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 : TIME_WAIT 192.168.2.130: 192.168.2.130: 192.168.237.172:
TCP : TIME_WAIT 192.168.2.130: 192.168.2.130: 192.168.237.171:
TCP : TIME_WAIT 192.168.2.104: 192.168.2.130: 192.168.237.172:
TCP : TIME_WAIT 192.168.2.104: 192.168.2.130: 192.168.237.171:
TCP : TIME_WAIT 192.168.2.104: 192.168.2.130: 192.168.237.171:

本地(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
setenforce: SELinux is disabled
关掉防火墙并清空防火墙转发规则:
systemctl stop iptables
iptables -F
iptables -X

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

systemctl stop NetworkManager
systemctl disable NetworkManager

LVS之NAT模式的更多相关文章

  1. LVS基于NAT模式搭建负载均衡群集

    LVS的基本架构图 负载均衡群集中,包括三个层次的组件: 1.第一层,负载调度器(BL) 前段至少有一个负载调度器(Load Balancer 或称为Director)负责响应并分发来自客户端的访问请 ...

  2. centos7 lvs+keepalived nat模式

    1.架构图   3.地址规划 主机名 内网ip 外网ip lvs-master 192.168.137.111(仅主机)eth1 172.16.76.111(桥接)eth0 lvs-slave 192 ...

  3. LVS的NAT模式测试

    dir 分别配置ip  eth0 :10.222.138.200   eth0:1 10.222.21.190 rs1 eth0  :10.222.138.201 rs2 eth0: 10.222.1 ...

  4. Linux系统(四)负载均衡LVS集群之NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  5. Linux系统(四)LVS集群负载均衡NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  6. LVS负载均衡之NAT模式部署

    1.LVS的NAT模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html 由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用 ...

  7. LB负载均衡集群及NAT模式配置

    一.LB(load balance)负载均衡集群 负载均衡集群常用的有: 1.软件实现的 nginx(工作在OSI第七层应用层) lvs+keepalived(工作在OSI第四层传输层) 2.硬件实现 ...

  8. Vmware虚拟机配置LVS/NAT模式遇到的坑。

    这两天在研究LVS的负载均衡,先从最简单的LVS/NAT模式开始入手. 最后配置完之后能够相互之间Ping通,并且能够直接访问real服务器提供的web服务,而且防火墙也已经关闭了. 但是通过访问LV ...

  9. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

随机推荐

  1. PBE加密 .net 实现

    using System; using System.Security.Cryptography; using System.Text; namespace Demo { internal class ...

  2. PHP 多维数组将下标从0开始

    点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 模拟一个: public function ...

  3. 服务框架 Pigeon 的设计与实现

    1.服务框架Pigeon架构 监控系统 - CAT,负责调用链路分析.异常监控告警 配置中心 - Lion,负责一些开关配置读取 服务治理 - Governor 一个interface定义为一个服务, ...

  4. linux MD5使用

    # define MD5_LONG unsigned int # define MD5_CBLOCK 64 # define MD5_LBLOCK (MD5_CBLOCK/4) # define MD ...

  5. linux 下安装python2.7.13

    1.下载所必要的依赖包 yum -y install python-devel openssl openssl-devel gcc sqlite sqlite-devel mysql-devel li ...

  6. Dedecms限制栏目列表生成的最大页数

    首先,我们要登陆DEDECMS后台 >> 系统 >> 站点设置 的同条栏目上,添加一个新的变量,变量名称:cfg_listmaxpage,变量说明:栏目生成列表最大页数,变量值 ...

  7. Cacti-0.8.8b详细安装及配置步骤

    1.  Cacti环境安装 1.1         安装LAMP环境 安装LAMP环境,当然,如果你有兴趣可以采用编译,我线上Mysql是编译的,其余是yum安装的.在这次实验采用yum安装. 关闭i ...

  8. FreeIPA ACI (Access Control Instructions) 访问控制说明

    目录 FreeIPA ACI (Access Control Instructions) 访问控制说明 一.ACI 位置 二.ACI 结构 三.ACI 局限性 四.复制拓扑中的ACI 五.操作ACI ...

  9. MyBatis-07-分页

    7.分页 思考:为什么要分页? 减少数据的处理量 7.1.使用Limit分页 select * from user limit startIndex,pageSize 使用Mybatis实现分页,核心 ...

  10. 04—mybatis的关联映射

    mybatis的关联映射一对一一对多多对多 一.一对一(一个人只能有一个身份证号) 1.创建表创建表tb_card CREATE TABLE `tb_card` ( `id` int(11) NOT ...