8.13-LVS的nat模式+DR模式

news2024/11/16 0:56:15

LVS

一、nat模式

1.角色

主机名ip地址功能
web01192.168.2.101rs
web02192.168.2.102realservee
nat内网:192.168.2.103 外网:192.168.2.120directorserver,ntp
dns192.168.2.105dns

2..web服务器

[root@web01 ~]# yum -y install nginx
​
[root@web01 ~]# echo "web===01" > /usr/share/nginx/html/index.html
[root@web01 ~]# nginx

[root@web02 ~]# yum -y install nginx
​
[root@web02 ~]# echo "web===02" > /usr/share/nginx/html/index.html
[root@web02 ~]# nginx

2.nat

配置两个网卡和两个ip地址,一个对内ip,一个对外ip

内网:192.168.2.103

外网:192.168.2.120

3.dns:192.168.2.105

[root@localhost ~]# yum -y install bind
​
[root@localhost ~]# vim /etc/named.conf
​
options {
        listen-on port 53 { 127.0.0.1;any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost;any;};
​
​
​
[root@localhost ~]# vim /etc/named.rfc1912.zones 
​
zone "haha" IN {
        type master;
        file "haha.zone";
        allow-update { none; };
};
​
​
​
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# ll
总用量 16
drwxrwx---. 2 named named    6 6月  11 22:40 data
drwxrwx---. 2 named named    6 6月  11 22:40 dynamic
-rw-r-----. 1 root  named 2253 4月   5 2018 named.ca
-rw-r-----. 1 root  named  152 12月 15 2009 named.empty
-rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
-rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
drwxrwx---. 2 named named    6 6月  11 22:40 slaves
[root@localhost named]# cp -p named.localhost haha.zone
​
[root@localhost named]# vim haha.zone
​
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
nat     A       192.168.2.103
ds      A       192.168.2.120
web01   A       192.168.2.101
web02   A       192.168.2.102
​
检查文件
​
[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkconf /etc/named.rfc1912.zones 
[root@localhost named]# named-checkzone haha.zone haha.zone
zone haha.zone/IN: loaded serial 0
OK
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl enable named

4.客户端

将配置DNS服务的IP重定向到/etc/resolv中
​
[root@client ~]# echo "nameserver 192.168.2.105" > /etc/resolv
​
[root@client ~]# ping nat.haha
PING nat.haha (192.168.2.103) 56(84) bytes of data.
64 bytes from 192.168.2.103 (192.168.2.103): icmp_seq=1 ttl=64 time=0.216 ms
64 bytes from 192.168.2.103 (192.168.2.103): icmp_seq=2 ttl=64 time=0.624 ms
^C
--- nat.haha ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.216/0.420/0.624/0.204 ms
[root@client ~]# ping ds.haha
PING ds.haha (192.168.2.120) 56(84) bytes of data.
64 bytes from 192.168.2.120 (192.168.2.120): icmp_seq=1 ttl=64 time=0.445 ms
64 bytes from 192.168.2.120 (192.168.2.120): icmp_seq=2 ttl=64 time=0.408 ms
^C
--- ds.haha ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.408/0.426/0.445/0.027 ms

5.nat:设置时间同步服务器

[root@nat ~]# yum -y install ntpdate.x86_64 
​
[root@nat ~]# crontab -e
​
* 2 * * * /usr/sbin/ntpdate cn.ntp.org.cn
​
[root@nat ~]# systemctl start ntpdate.service 
[root@nat ~]# systemctl enable ntpdate.service 

6.dns:设置时间同步

[root@dns ~]# crontab -e
​
30 3 * * * /usr/sbin/ntpdate 192.168.2.103(时间服务器的地址)

7.web01

[root@web01 ~]# crontab -e
​
30 3 * * * /usr/sbin/ntpdate 192.168.2.103(时间服务器的地址)

8.web02

[root@web02 ~]# crontab -e
​
30 3 * * * /usr/sbin/ntpdate 192.168.2.103(时间服务器的地址)

9.nat

[root@nat ~]# yum -y install ipvsadm.x86_64 
​
# 添加规则
[root@nat ~]# #如果配置好规则,重启之后也就没有了
[root@nat ~]# ipvsadm -A -t 192.168.2.120:80 -s rr
[root@nat ~]# 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.120:80 rr
# 为realserver添加规则
[root@nat ~]# ipvsadm -a -t 192.168.2.120:80 -r 192.168.2.101 -m
[root@nat ~]# ipvsadm -a -t 192.168.2.120:80 -r 192.168.2.102 -m
[root@nat ~]# 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.120:80 rr
  -> 192.168.2.101:80             Masq    1      0          0         
  -> 192.168.2.102:80             Masq    1      0          0         

浏览器:192.2168.120(外网地址)

ip转发

# ip转发
[root@nat ~]# vim /etc/sysctl.conf
# 添加内容
net.ipv4.ip_forward=1
​
[root@nat ~]# sysctl -p
net.ipv4.ip_forward = 1

10.web01

临时修改网关
​
[root@web01 ~]# route del default
[root@web01 ~]# route add default gw 192.168.2.103(nat的内网地址(dip))
# 这也要求了真实主机(rs.ip)和dip要在同一个网关,因为dip是要作为网关存在的

11.web02

[root@web02 ~]# route del default
[root@web02 ~]# route add default gw 192.168.2.103(nat的内网地址(dip))

12.脚本

# ds脚本
#!/bin/bash
 #配置网卡
echo TYPE="Ethernet" >> /etc/sysconfig/network
scripts/ifcfg-ens36
 echo BOOTPROTO="none" >> /etc/sysconfig/network
scripts/ifcfg-ens36
 read -p "router name:" router_name
 echo NAME='"$rount_name"' >> /etc/sysconfig/network
scripts/ifcfg-ens36
 uuidkey=$( uuidgen )
echo UUID='"$uuidkey"' >> /etc/sysconfig/network
scripts/ifcfg-ens36 >> /etc/sysconfig/network
scripts/ifcfg-ens36
 echo DEVICE='"$rount_name"' >> /etc/sysconfig/network
scripts/ifcfg-ens36
 echo ONBOOT="yes" >> /etc/sysconfig/network-scripts/ifcfg
ens36
 echo IPADDR=192.168.10.100 >> /etc/sysconfig/network
scripts/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.1由于rs是直接响应client,网关不能设置为ds的dip

4.对rs的vip进行抑制,让ds的vip接收请求,rs的vip不接受请求

1.在ds的ens33上挂一个vip 192.168.2.121

[root@ds ~]# ifconfig ens33:0 192.168.2.121 broadcast 192.168.2.121 netmask 255.255.255.255 up
[root@ds ~]# route add -host 192.168.2.121 dev ens33:0
​
# 192.168.2.106 dip
# 192.168.2.121 vip 在rs上的vip和这个vip相同

2.设置规范

# 安装ipvsadm
yum -y install ipvsadm
​
# 清空规则
ipvsadm -C
​
# 设置规则
ipvsadm -A -t 192.168.2.121:80 -s rr
​
ipvsadm -a -t 192.168.2.121:80 -r 192.168.2.101 -g
ipvsadm -a -t 192.168.2.121:80 -r 192.168.2.102 -g
​
#rs不再需要指定端口,dr不支持端口映射,vip上是80端口,最终就是80端口

3.web01:绑定vip

[root@web01 ~]# ##在lo上绑定一个vip 192.168.2.121
[root@web01 ~]# ifconfig lo:0 192.168.2.121 broadcast 192.168.2.121 netmask 255.255.255.255 up
[root@web01 ~]# #配置主机路由
[root@web01 ~]# route add -host 192.168.2.121 dev lo:0
# 抑制rs的vip接受请求
[root@web01 ~]# vim arp.sh
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
​
​
#生成脚本,对web02使用
[root@web01 ~]# vim arp.sh
ifconfig lo:0 192.168.2.121 broadcast 192.168.2.121 netmask 255.255.255.255 up
route add -host 192.168.2.121 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

4.web02:绑定vip

[root@web01 ~]# vim arp.sh
ifconfig lo:0 192.168.2.121 broadcast 192.168.2.121 netmask 255.255.255.255 up
route add -host 192.168.2.121 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

5.浏览器访问:192.168.2.121

6.在ds上查看数据

[root@ds ~]# 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.121:80                    2       71        0    19680        0
  -> 192.168.2.101:80                    1        4        0      173        0
  -> 192.168.2.102:80                    1       67        0    19507        0
​

7.DR模式脚本

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【netty系列-07】Netty中组件初步了解和基本使用

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

Java语言程序设计基础篇_编程练习题*16.20(累计秒表)

目录 题目:*16.20(累计秒表) 习题思路 代码示例 结果展示 题目:*16.20(累计秒表) 编写一个程序,模拟一个秒表,如图16-45a所示。当用户单击Start按钮时,按钮的标签变为Pa…

AHB协议解读

1.定义 AHB或者ASB系统总线在需要做大量数据传送的模块之间提供了高带宽的接口。同时,外围总线APB在AHB或者ASB和低带宽的外围设备之间提供了通信的桥梁。所以APB是AHB或者ASB的二级扩展总线 2.拓扑结构 2.1 Master: 可以是CPU、DMA控制器、外设控制器等。Maste…

国内外AI大语言模型推荐分享 除了Chatgpt 你会选择哪个模型?

当前AI技术飞速发展,Ai已经成为许多人日常工作和生活中不可或缺的工具,特别是以大语言模型为首的人工智能,它能够与我们进行自然语言对话,支持多种应用场景,如技术问答、代码生成、内容创作等,而且适用于各…

js入门经典学习小结

简介 js是解释型语言,虽然名字有java,但和java,c等编译型语言不同,它是解释型的,类似perl,py 历史 90年代最早js 1.0版本是网景navigator2引入的 然后欧洲计算机制造商协会(ECMA&#xff09…

链上数字供应链高级研修班举办 隆道总裁吴树贵分享供应链数字化实践

8月8日-8月9日,链上数字产业研究院联合中国物流与采购联合会举办的“链上数字供应链高级研修班”在上海开班,隆道公司总裁吴树贵作为培训讲师出席,并系统地分享了供应链理论及数字化转型创新实践经验。 “链上数字供应链高级研修班”旨在贯彻…

TCP详解(一)报文详情/MSS/MTU

本文旨在介绍TCP的报文格式详情和传输层、链路层的字节数限制 1 TCP 协议的报文格式 TCP 报文段包括协议首部和数据两部分,协议首部的固定部分是 20 个字节,头部是固定部分,后面是选项部分。 1.1 端口号 16位源端口:发送方主机…

笔记:在WPF中如何控件级全局事件和应用程序级全局事件

一、目的:在WPF中如何控件级全局事件和应用程序级全局事件 二、实现 应用程序级全局事件 //注册应用程序级全局事件 EventManager.RegisterClassHandler(typeof(Button), Button.ClickEvent, new RoutedEventHandler(ic_event_Click)); 如上代码既会注册全局Butt…

Linux--C语言之循环结构

文章目录 一、循环结构(一)循环的概念(二)循环的类型(三)循环的构成(四)当型循环的实现while死循环 (五)for...总结死循环 (七)循环实…

数据结构:链式二叉树(2)

目录 前言 一、节点个数 1.1 二叉树的节点个数 1.2 二叉树叶子节点个数 1.3 二叉树第k层节点个数 二、查找值为x的节点 三、判断二叉树是否为完全二叉树 前言 上一篇 链式二叉树(1),主要是讲了了一些链式二叉树的实现基础以及链式二叉…

day28 代码随想录 | 贪心 买卖股票 跳跃游戏 K次取反

买卖股票的最佳时机 II 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 …

测绘工程项目管理系统,为测绘企业量身定制!测绘项目一体化管理

在日益复杂的测绘工程项目管理领域,高效、精准的信息化管理成为提升工作效率、降低运营成本的关键。企智汇软件,作为一款专为勘察、设计、监测、测绘等多元化工程项目量身打造的管理系统,正逐步成为行业内的佼佼者。 企智汇测绘管理系统深度…

Java FX 学习

声明:参考视频 一. Stage与Scene 舞台与场景:JavaFX应用程序将Ul容器定义为舞台(Stage)与场景(Scene)Stage类是顶级容器,它对应于窗体,其内容由Scene决定。Scene类是所有可视化内容…

运维监控体系实践与探索

在当今的数字化时代,运维工作作为企业IT服务的核心,面临着前所未有的挑战与机遇。随着业务规模的扩大和技术栈的复杂化,如何确保系统稳定运行、高效响应,成为运维团队亟需解决的问题。监控体系作为运维工作的基石,其建…

Python+selenium基于PO模式的Web自动化测试框架详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主…

分布式锁 分布式锁解决了什么问题 如何实现 看门狗机制是什么

分布式锁的基本概念 在 Redis 中实现分布式锁的常用方式是通过 SETNX 命令(SET with NX option)来设置一个键(key),这个键代表锁。如果 key 不存在,SETNX 会设置成功,并返回 1,表示…

【LinuxPython】linux中通过源码方式安装python环境

python环境安装直接看第二部分即可。 文章目录 1.背景2.python安装3.包环境复制 1.背景 部署一个线上任务时,相同的代码本地开发机正常产出数据,线上产出数据为0,排查到原因是: ...File "/home/disk1/wangdeyong/venv/pyth…

linux搭建zabbix

zabbix简介 Zabbix是一个监控系统,它可以帮助我们实时检查设备的状态,比如服务器、网络设备等。当设备出现问题时,它会及时通知我们,让我们可以采取措施来解决。同时,它还可以把收集到的数据转化成图表和报告&#xf…

ITL-Internet Technology Letters

文章目录 一、期刊简介二、征稿信息三、投稿须知四、咨询 一、期刊简介 Internet Technology Letters本期旨在涵盖所有用于提高物联网性能的新兴或现代学习算法。在此背景下,我们打算收集有关物联网学习进展的研究论文。强烈鼓励与机器学习、计算智能、概率学习、统…

树和图()

预备知识(可以不看): 无向图可以理解为是特殊的有向图 1. 图的遍历(因为树可以理解为是特殊的图,因此这里不考虑树的遍历,只考虑图的遍历) 给定一个具体的图,便于分析 下面是树的结构…