LVS之NAT模式

Stella981
• 阅读 678

目录:

  • 网络环境

  • 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)浏览器访问测试:

LVS之NAT模式

postman测试:

LVS之NAT模式

结论:可见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打开查看:

LVS之NAT模式

第一次访问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换成了另一台。

根据抓包结果,数据包流程如下图:

LVS之NAT模式

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

 LVS之NAT模式

数据包文件:

链接: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
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Keepalived LVS
KeepalivedLVSDR单网络双活双主配置模式Linux就该这么学 今天LVS是LinuxVirtualServer的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR)、十种调度算法(rrr|wr
Stella981 Stella981
3年前
Keepalived+Nginx实现高可用和双主节点负载均衡
简介Nginx可以实现高并发反向代理,lvs集群可以实现负载均衡,但是他们都有一个共同的弊端,就是Nginx,lvs架构中Director是单点故障,有没有一个好的方案解决这个问题呢?答案是有。通过Keepalived就可以实现,前端Nginx,lvs中Director服务器的高可用和负载均衡,通过shell命令或者脚本可以实现对服务器状态和服务的监控!
Wesley13 Wesley13
3年前
1. LVS概述
1.LVS介绍  LVS是linuxvirtualserver的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能2.LVS组成 LVS由2部分程序组成,包括ipvs(嵌入到linux的内核,不需要安装)和ipvsadm(https://www.oschina
Stella981 Stella981
3年前
LVS,HAPROXY,NGINX各自的优缺点
Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性、可靠性和可管理性,是一款强大实用的开源软件。LVS的优点:1:抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,也保
Wesley13 Wesley13
3年前
Ubuntu10.04.4 Server下基于LVS DR模式+Keepalived的负载均衡高可用
Ubuntu10.04.4 Server下基于LVS DR模式Keepalived的负载均衡高可用集群LVSKeepalived 介绍2LVS2Keepalvied2ubuntu系统环境准备工作2更换Ubuntu软件源2架构拓扑图2服务安装3安装LVS3安装Keepalived3服务配置4
Stella981 Stella981
3年前
LVS(三)LVS集群NAT模式
LVS集群NAT模式一Director服务器环境1.查看Director服务器内核中是否有IPVS的功能显示IPVS配置信息以及支持的调度算法grepi'vs'/boot/config3.10.0514.el7.x86_64...
Stella981 Stella981
3年前
LVS + keepalived DR 模式
第1章LVS keepalived负载均衡安装配置笔记经安装测试能够实现我的这些需要:双机或多机实现虚拟IP,能够实现IP故障切换能够连接多台后端真实服务器,实现后端服务器的负载均衡能够实现双机热