当前位置: 首页 > news >正文

8.13 NAT模式搭建实战

ds01服务器配置

(1)安装ipvsadm

[root@ds01 ~]# yum -y install ipvsadm.x86_64

查看所有规则,如果语句配置好规则,重启之后也就没有了

[root@ds01 ~]# ipvsadm -L -n

(2)额外添加一张网卡,选择对外提供服务的桥接模式或者nat模式,选 择桥接模式(ip不同)

(3)配置网卡

[root@ds01 ~]# uuidgen

bdb8b43b-5f66-478c-9401-93aa80333cff

[root@ds01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens36

[root@ds01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36

TYPE=Ethernet

BOOTPROTO=none

NAME=ens36

UUID=5d4dbbba-38b2-41d0-a5be-1d2c30dba649

DEVICE=ens36

ONBOOT=yes

IPADDR=192.168.1.164

[root@ds01 ~]# systemctl restart network

(4)清空以往的规则

[root@ds01 ~]# ipvsadm -C

(5)查看规则

[root@ds01 ~]# ipvsadm -L -n

(6)配置规则

ipvsadm -A -t 192.168.1.164 -s rr     //-A添加虚拟服务,-t添加主机

ipvsadm -Ln

(7)添加规则

ipvsadm -a -t 192.168.1.164:80 -r 192.168.2.200:80 -m

ipvsadm -a -t 192.168.1.164:80 -r 192.168.2.201:80 -m

ipvsadm -Ln

[root@ds01 ~]# ipvsadm -A -t 192.168.1.164:80 -s rr

[root@ds01 ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.164:80 rr

[root@ds01 ~]# ipvsadm -a -t 192.168.1.164:80 -r 192.168.2.200:80 -m

[root@ds01 ~]# ipvsadm -a -t 192.168.1.164:80 -r 192.168.2.201:80 -m

[root@ds01 ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.164:80 rr

  -> 192.168.2.200:80             Masq    1      0          0         

  -> 192.168.2.201:80             Masq    1      0          0         

(8)vim /etc/sysctl.conf

net.ipv4.ip_forward=1   //在最后一行添加

[root@ds01 ~]# sysctl -p  

net.ipv4.ip_forward = 1    //让立即生效-----能够正常显示就可以了

6.Web01主机:

临时修改web01的网关,网管必须指向dip----对内的ip

[root@web01 ~]# route del default

[root@web01 ~]# route add default gw 192.168.2.177

7.Web02主机:

临时修改web02的网关

[root@web02 ~]# route del default

[root@web02 ~]# route add default gw 192.168.2.177

lvs-nat模式的优点是配置简单,缺点是请求和响应都必须经过ds,容易成为性能瓶颈

希望有这样一个模式,请求的时候使用input链进行负载均衡,响应的时候就不要经过ds,直接rs响应客户端

在nat模式,请求vip,就是vip的响应

构想请求vip,接受rip响应,这是不允许lvs-dr模式

8.nat模式脚本

# ds脚本

 #!/bin/bash

 #配置网卡

 echo TYPE="Ethernet" >> /etc/sysconfig/networkscripts/ifcfg-ens36 echo BOOTPROTO="none" >> /etc/sysconfig/networkscripts/ifcfg-ens36 read -p "router name:" router_name

echo NAME='"$rount_name"' >>/etc/sysconfig/networkscripts/ifcfg-ens36 uuidkey=$( uuidgen )

echo UUID='"$uuidkey"' >>/etc/sysconfig/networkscripts/ifcfg-ens36 >> /etc/sysconfig/networkscripts/ifcfg-ens36

echo DEVICE='"$rount_name"' >>/etc/sysconfig/networkscripts/ifcfg-ens36 echo ONBOOT="yes" >> /etc/sysconfig/network-scripts/ifcfgens36

echo IPADDR=192.168.1.164 >>/etc/sysconfig/networkscripts/ifcfg-ens36 systemctl restart network

#安装ipvsadm

yum list installed|grep ipvsadm

if[ $? -ne 0 ];then

yum -y install ipvsadm

fi

#配置规则

read -p "vip:" vip

read -p "port:" port

read -p "rule:" s

ipvsadm -A -t $vip:$port -s $s

# ip forward

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

sysctl -p

# rs脚本

#!/bin/bash

read -p "dip:" dip

# 设置网关

route del default

route add defualt gw $dip

三.DR模式

  1. 性能更优,回路不经过ds
  2. ds和rs为了保证用户的响应,都要求配置统一的vip
  3. 由于rs是直接响应client,网关一定不能设置为ds的dip
  4. 对rs的vip进行抑制,让ds的vip接受请求,rs的vip不接受请求

1.ds03上的ens33上挂一个vip192.168.2.102

[root@ds03 ~]# ifconfig ens33:0 192.168.2.102 broadcast 192.168.2.102 netmask 255.255.255.255 up

route add -host 192.168.2.102 dev ens33:0

#192.168.2.101  dip

#192.168.2.102  vip  在rs上的vip和这个vip相同

2.安装ipvsadm

 yum -y install ipvsadm.x86_64

3.设置规则

ipvsadm -C

ipvsadm -A -t 192.168.2.102:80  -s rr

ipvsadm -a -t 192.168.2.102:80 -r 192.168.2.200 -g

ipvsadm -a -t 192.168.2.102:80 -r 192.168.2.201 -g

#rs不在需要指定端口,dr不支持端口映射,vip上是80端口,最终就是80端口

#-m nat -g gateway

4.在rs(web01,web02)上配置

(1)在lo接口上挂载一个vip192.168.2.102

[root@web01 ~]# ifconfig lo:0 192.168.2.102 broadcast 192.168.2.102 netmask 255.255.255.255 up

(2)配置主机路由

[root@web01 ~]# route add -host 192.168.2.102 dev lo:0

[root@web01 ~]# ifconfig

[root@web01 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet 192.168.2.102/32 brd 192.168.2.102 scope global lo:0

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:13:76:e2 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.200/24 brd 192.168.2.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::4e57:f3b5:85eb:4fb1/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

    inet6 fe80::fc42:faf3:7cd0:dbf1/64 scope link tentative noprefixroute dadfailed

       valid_lft forever preferred_lft forever

(3)抑制rs的vip接受请求

[root@web01 ~]# vim arp.sh

ifconfig lo:0 192.168.2.102 broadcast 192.168.2.102 netmask 255.255.255.255 up

route add -host 192.168.2.102 dev lo:0  //可以把这个也加进来,前面配置了可以不用写进来

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@web01 ~]# source arp.sh

SIOCADDRT: 文件已存在

[root@web01 ~]# ls

anaconda-ks.cfg  arp.sh

(4)将web01这个里面的arp.sh这个文件传到web02上面

[root@web01 ~]# scp arp.sh root@192.168.2.201:~

[root@web02 ~]# ls

anaconda-ks.cfg  arp.sh

测试使用,查看状态

在浏览器用vip访问

运行web02里面的arp.sh这个脚本

[root@web02 ~]# source arp.sh

在浏览器里面刷新访问  

在ds03上面查看连接状态与信息

[root@ds03 ~]# ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

  -> RemoteAddress:Port

TCP  192.168.2.102:80                    8       52        0     6692        0

  -> 192.168.2.200:80                    4       31        0     5080        0

  -> 192.168.2.201:80                    4       21        0     1612        0

5.dr模式的脚本

(1)ds脚本

#!/bin/bash

#在ens33上挂载一个ip地址

read -p "vip:" vip

read -p "mac:" mac

read -p "num" num

ifconfig $mac:$num $vip broadcast $vip netmask

255.255.255.255

# 主机路由

route add -host $vip dev $mac:$num#安装ipvsadm

yum list installed|grep ipvsadm

if [ $? -ne 0 ] ; then

yum -y install ipvsadm

fi

#配置规则(不需要设置ip_forword)

ipvsadm -C

read -p "rule:" rule

read -p "port:" port

ipvsadm -A -t $vip:$port -s $rule

read -p "rip1:" rip1

ipvsadm -a -t $vip:$port -r $rip1 -g

read -p "rip2:" rip2

ipvsadm -a -t $vip:$port -r $rip2 -g

(2)rs脚本

#!/bin/bash

#在ens33上挂载一个ip地址

read -p "vip:" vip

read -p "mac:" mac

read -p "num" num

ifconfig $mac:$num $vip broadcast $vip netmask

255.255.255.255

# 主机路由

route add -host $vip dev $mac:$num

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CentOS7.6 HAproxy-7层负载均衡集群——实施方案
  • 户外上网黑科技|续航能力大比拼,飞猫、闪鱼、格行、品胜,哪个好
  • C++ CMake FFmpeg配置
  • 计算机毕业设计 家电销售展示平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 【全国大学生电子设计竞赛】2021年I题
  • WPF WindowChrome、WindowStyle 自定义窗体样式
  • 【自动化测试必学语言】python:文件操作(json文件)
  • Ubuntu22.04系统中安装机器人操作系统ROS
  • 如何确保场外个股期权交易的安全?
  • 公共命名空间:上下文容器
  • 【云原生】高可用集群KEEPALIVED(理论篇)
  • 小程序使用this.animate实现3维动画切换
  • c语言 图片.bmp读写示例
  • 自动化数据采集:Lua爬虫与JSON解析的深度整合
  • 头狼择校小程序
  • Android Studio:GIT提交项目到远程仓库
  • Apache的80端口被占用以及访问时报错403
  • FineReport中如何实现自动滚屏效果
  • flask接收请求并推入栈
  • JavaScript HTML DOM
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • javascript面向对象之创建对象
  • laravel5.5 视图共享数据
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • OSS Web直传 (文件图片)
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React-redux的原理以及使用
  • Unix命令
  • vue.js框架原理浅析
  • Vue官网教程学习过程中值得记录的一些事情
  • 从0到1:PostCSS 插件开发最佳实践
  • 机器学习中为什么要做归一化normalization
  • 排序(1):冒泡排序
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 小程序01:wepy框架整合iview webapp UI
  • 小程序测试方案初探
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • # C++之functional库用法整理
  • #07【面试问题整理】嵌入式软件工程师
  • #Java第九次作业--输入输出流和文件操作
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (35)远程识别(又称无人机识别)(二)
  • (9)目标检测_SSD的原理
  • (pojstep1.1.2)2654(直叙式模拟)
  • (多级缓存)多级缓存
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十三)Flask之特殊装饰器详解
  • (转)详解PHP处理密码的几种方式
  • .bat批处理(六):替换字符串中匹配的子串