lvs-nat模型搭建

LVS-NAT实现

1.0网络拓扑图

2.0全局搭建环境

2.1 之后,所有的虚拟机都部署2.2——2.6,除了特殊说明的主机

2.1准备5台虚拟机

分别作为 客户端(client),lvs调度器(LVS),路由器(route),服务器1(RS1),服务器2(RS2)

2.2修改主机名

方便查看,防止记错,分别修改主机名

hostname client/LVS/ROUTE/RS1/RS2 

生效

exec bash

2.3关闭防火墙

除了客户端都把防火墙关闭了

systemctl stop firewalld

2.4关闭selinux

vim /etc/slinux/config

修改 SELINUX===disabled==

# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

配置生效

setenforce 0

2.5关闭NetworkManager

  1. centos6

service NetworkManager stop
  1. centos7

systemctl stop NetworkManager

2.6准备网卡

虚拟机

设备功能

网卡名称

网卡连接方式

centos6-10

client

etho

桥接

centos7-5

LVS

ens36 ens33

VMnet6仅 仅主机

7.9-1

ROUTE

ens38 ens33

VMnet6仅 仅主机

centos7.5

RS1

ens33

仅主机

centos7.9

RS2

ens33

仅主机

2.7 LVS 启用ip_forward

  1. 添加内容 ==ip_forward==

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
  1. 生效

sysctl -p

3.0实现网络拓扑

3.1client

  1. 配置路由

vim /etc/sysconfig/network-script/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.168.138.120
  1. 重启网络服务

service network restort

3.2 LVS

  1. ens36

vim /etc/sysconfig/network-script/ifcfg-ens36
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.168.138.121
  1. ens33

DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.140.115
GATWAY=192.168.140.111
  1. 重启网络

systemcel restwrt network

3.3route

  1. ens38

vim /etc/sysconfig/network-script/ifcfg-ens36
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.140.111
GATWAY=192.168.140.115
  1. ens33

DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.137.110
  1. 重启网络

systemcel restwrt network

3.4RS1

  1. ens33

vim /etc/sysconfig/network-script/ifcfg-ens36
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.137.140
GATWAY=192.168.137.110
  1. 重启网络

systemcel restwrt network

3.5RS2

  1. ens33

vim /etc/sysconfig/network-script/ifcfg-ens36
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.137.135
GATWAY=192.168.137.110
  1. 重启网络

systemcel restwrt network

4.0测试环境搭建

4.1 LVS

  1. 安装ipvs包

yum -y install ipvsadm
  1. 添加一条新的虚拟服务

ipvsadm -A -t 172.168.138.121:80 -s rr
  1. 虚拟服务中添加新的真实服务器

ipvsadm -a -t 172.168.138.121:80 -r 192.168.137.140
ipvsadm -a -t 172.168.138.121:80 -r 192.168.137.135
  1. 查看添加如下

ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.168.138.121:80 rr
  -> 192.168.137.135:80           Masq    1      0          0         
  -> 192.168.137.140:80           Masq    1      0          0  

4.2 route

4.2.1 RS1

  1. 安装httpd

yum  -y install httpd 
  1. 重新启动httpd

systemctl restart httpd
  1. 添加主页内容

echo RS1 > /var/www.html/index.html
  1. 查看80端口是否开启

ss -ntl

4.2.2 RS2

  1. 安装httpd

yum  -y install httpd 
  1. 重新启动httpd

systemctl restart httpd
  1. 添加主页内容

echo RS2 > /var/www.html/index.html
  1. 查看80端口是否开启

ss -ntl|grep 80

5.0测试

5.1 在client上访问RS1和rs2

curl 172.168.138.121
RS1
curl 172.168.138.121
RS2
访问的是==VIP==地址,由LVS调度后访问数据
两次出现不同的效果是因为在制定ipvs规则的时候使用了==rr==轮询的方式

5.2端口映射

1修改RS1的端口

vim /etc/httpd/conf/httpd.conf

2修改LVS调度地址

在LVS机器上

  1. 删除RS1的ipvs服务

ipvsadm -d -t 172.168.138.121:80 -r 192.168.137.140
  1. 重新添加

ipvsadm -a -t 172.168.138.121:80 -r 192.168.137.140:8080 -m
  1. 客户端测试

curl 172.168.138.121
RS1
curl 172.168.138.121
RS2
能够curl通,说明支持端口映射

5.3 权重 调度算法

  1. 编辑虚拟服务

LVS

ipvsadm -E 172.168.137.121:80 -s wrr

删除RS1的ipvs服务

ipvsadm -d -t 172.168.138.121:80 -r 192.168.137.140:8080 

重新添加RS1的ipvs服务,添加权重

ipvsadm -a -t 172.168.138.121:80 -r 192.168.137.140:8080 -m -w 3
没有定义的RS2,权重为1
客户端多次访问VIP,RS1 :RS2 =3:1

5.4原地址哈希

只要客户端是同一个ip地址,永远访问的是同一个servers.只要是同一个ip客户端永远往一个固定的server来调度。现在往一个方向调度,就要换成sh算法,
  1. 修改ipvs配置

ipvsadm -E -t 172.168.138.121:80 -s sh
  1. 测试

curl 172.168.138.121
RS1
curl 172.168.138.121
RS1

5.5目标地址哈希

将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如宽带运营商
只要访问的目标地址是固定的,永远往固定上去调度,
  1. 模拟10个页面

RS1上

cd /var/www/html

创建10个页面

for i in {1..10};do echo test$i on RS1 > test$i.html ;done
RS2上执行相同的操作,注意把RS1改为==RS2==
  1. LVS上

更改dh算法

ipvsadm -E -t 172.168.138.121:80 -s dh
  1. 测试

测试结果总是往一个机器上调度,权重也不受到影响,可能是之前的操作,LVS记录的分配结果,有缓存

重启ipvsadm .service

systemctl restart ipvsadm .service
ipvsadm -Ln
再重启reboot,让它丢了再缓存,重启后所有的规则全丢了
重启完毕后,通了重加
ipvsadm -Ln
如果没有了,重新添加IPVS规则

重新添加

ipvsadm -A -t 172.168.138.121:80 - s dh
ipvsadm -a -t 172.168.138.121:80 - r 192.168.137.140:8080 -m
ipvsadm -a -t 172.168.138.121:80 - r 192.168.137.135:80 -m
  1. 测试

client上

curl 172.168.137.121/test1.html
curl 172.168.137.121/test2.html
curl 172.168.137.121/test3.html
curl 172.168.137.121/test4.html
一旦调度到1上永远是1

6.0命令ipvsadm

6.1常用参数:

-A

添加一条新的虚拟服务

-t

TCP协议的虚拟服务

-E

编辑虚拟服务

-u

UDP协议的虚拟服务

-D

删除虚拟服务

-f

说明是经过iptables 标记过的服务类型。

-C

清除所有的虚拟服务规则

-s

使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.

-R

恢复虚拟服务规则

-p

持久稳固的服务。

-S

保存虚拟服务器规则

-M

指定客户地址的子网掩码

-a

在一个虚拟服务中添加一个新的真实服务器

-r

真实的服务器

-e

编辑某个真实服务器

-g

指定LVS 的工作模式为直接路由模式

-d

删除某个真实服务器

-i

指定LVS 的工作模式为隧道模式

-L

显示内核中的虚拟服务规则

-m

指定LVS 的工作模式为NAT 模式

-Z

将转发消息的统计清零

-w

真实服务器的权值

-h

显示帮助信息

-c

显示ipvs中目前存在的连接

6.2参考实例 参考链接

添加一个虚拟服务,使用轮询算法:

ipvsadm -A -t 192.168.10.10:80 -s rr

修改虚拟服务的算法为加权轮询:

 ipvsadm -E -t 192.168.10.10:80 -s wrr

删除一个虚拟服务:

 ipvsadm -D -t 192.168.10.10:80

添加一个真实服务器,使用DR模式,设置权重为2:

 ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.12 -g -w 2

修改真是服务器的权重为5:

ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.12 -g -w 5

删除一个真实服务器:

 ipvsadm -d -t 192.168.10.10:80 -r 192.168.10.12

查看当前虚拟服务和各个RS的权重信息:

ipvsadm -Ln

查看当前ipvs模块中记录的链接信息(可用于观察转发情况):

 ipvsadm -lnc

查看当前ipvs模块中的转发情况信息:

ipvsadm -Ln --stats | --rate

6.3命令扩展

  1. 查看

ipvsadm -Ln --

--numeric,-n:以数字形式输出地址和端口号

--exact:扩展信息,精确值

--connection,-c:当前IPVS连接输出 --stats:统计信息

--rate :输出速率信息

ipvs规则: /proc/net/ip_vs

ipvs连接: /proc/net/ip_vs_conn

  1. 保存及重载规则

保存:

建议保存至 /etc/sysconfig/ipvsadm

ipvsadm-save > /etc/sysconfig/ipvsadm

ipvsadm -Sn>/etc/sysconfig/ipvsadm

systemctl stop ipvsadm.service

重载:

ipvsadm-restore</etc/sysconfig/ipvsadm

ipvsadm -R</PATH/FROM/IPVSADM_FILE

systemctl restart ipvsadm.service

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅浅浅白蓝色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值