服务器物理部署拓扑图,【网络】叶脊(Spine-Leaf)网络拓扑下全三层网络设计与实践(五)-物理服务器路由方案及配置...

5.1 本节目标

理解物理机的业务ip之间的通信过程;

了解如何在leaf交换机上配置业务ip的静态路由;

了解如何在物理机上配置业务ip及其他相关配置项;

5.2 拓扑结构

本节拓扑结构与上节相比没有变化,如下图:

a4c26d1e5885305701be709a3d33442f.png

5.3 物理机业务网络地址规划与配置

云平台各服务之间用于通信的ip地址称为业务ip地址,在spine

leaf网络中,我们为服务器分配业务ip地址,并配置在br0接口上,本系列文章研究spine

leaf网络。下面为四个物理机规划业务IP地址:

主机名 业务ip地址

devopsr01n01 10.10.10.21/32

devopsr01n02 10.10.10.22/32

devopsr02n01 10.10.10.23/32

devopsr02n02 10.10.10.24/32

按照上面的规划,给物理机配置业务ip,以devopsr01n01为例,进行如下配置:

brctl addbr br0

ip link set br0 up

ip address add 10.10.10.21/32 dev br0

其余物理机按例配置。

5.4 物理机业务地址路由方案与配置

5.4.1 在leaf交换机上配置路由

在leaf交换机上采用静态路由协议,路由方案的思路如下:

对于每个物理机业务ip地址,在一对leaf上配置静态路由;

通过检测路由下一跳ip的可达性,确定路由条目的有效性;

本文采用的是arista交换机来进行实验,因此提供arista交换机的配置方式,需要用到扩容模块PingCheck,点击查看安装方法,扩展模块安装完成后,进行下面的配置:

# 在leaf01上配置devopsr01n01的路由

ip route 10.10.10.21/32 Ethernet3 169.254.0.2 #

配置devopsr01n01的静态路由

daemon PingCheck3 #

此处因为devopsr01n01接在e3口,所以为了方便,这里名称写PingCheck3

exec

/usr/local/bin/PingCheck

option CHECKINTERVAL

value 1 # Ping间隔时间1s

option CONF_FAIL value

/mnt/flash/pingcheck/failed_3.conf # Ping失败时执行的操作,内容填“no ip route

10.10.10.21/32 Ethernet3 169.254.0.2”,

即删除到devopsr01n01的静态路由条目

option CONF_RECOVER value

/mnt/flash/pingcheck/recover_3.conf # Ping恢复时执行的操作,内容填“ip route

10.10.10.21/32 Ethernet3 169.254.0.2”,即添加到devopsr01n01的静态路由条目

option HOLDDOWN value

1

option HOLDUP value

1

option IPv4 value

169.254.0.2 #

Ping的目标地址,即到devopsr01n01的静态路由的下一跳地址,也就是devopsr01n01上与leaf01互联的网口的ip地址

option PINGCOUNT value

2

option PINGTIMEOUT value

2

option SOURCE value et3 #

指定Ping的出接口,即leaf01上与devopsr01n01互联的网口

no shutdown #

开始运行PingCheck

# 在leaf02上配置devopsr01n01的路由

ip route 10.10.10.21/32 Ethernet3 169.254.1.2 #

配置devopsr01n01的静态路由

daemon PingCheck3 #

此处因为devopsr01n01接在e3口,所以为了方便,这里名称写PingCheck3

exec

/usr/local/bin/PingCheck

option CHECKINTERVAL

value 1 # Ping间隔时间1s

option CONF_FAIL value

/mnt/flash/pingcheck/failed_3.conf # Ping失败时执行的操作,内容填“no ip route

10.10.10.21/32 Ethernet3 169.254.0.2”,

即删除到devopsr01n01的静态路由条目

option CONF_RECOVER value

/mnt/flash/pingcheck/recover_3.conf # Ping恢复时执行的操作,内容填“ip route

10.10.10.21/32 Ethernet3 169.254.0.2”,即添加到devopsr01n01的静态路由条目

option HOLDDOWN value

1

option HOLDUP value

1

option IPv4 value

169.254.1.2 #

Ping的目标地址,即到devopsr01n01的静态路由的下一跳地址,也就是devopsr01n01上与leaf01互联的网口的ip地址

option PINGCOUNT value

2

option PINGTIMEOUT value

2

option SOURCE value et3 #

指定Ping的出接口,即leaf01上与devopsr01n01互联的网口

no shutdown #

开始运行PingCheck

按例在leaf02上配置devopsr01n02的路由,在leaf03/04上配置devopsr02n01、devopsr02n02的路由。完成配置后,让我们来测试一下,是否达到了预期的效果:

在devopsr01n01的所有链路正常时,在leaf01, leaf02,

spine01上观察到devopsr01n01的路由条目:

# 在spine01上观察路由, 有两条等价路由,下一跳分别是leaf01和leaf02

spine01#sh ip route 10.10.10.21

B E 10.10.10.21/32 [200/0] via 169.254.0.249,

Ethernet1

via 169.254.1.249,

Ethernet2

# 在leaf01上观察路由,有一条静态路由,可从e3下联接口到达

leaf01#sh ip route 10.10.10.21

S 10.10.10.21/32 [1/0] via

169.254.0.2, Ethernet3

# 在leaf02上观察路由,有一条静态路由,可从e3下联接口到达

leaf02#sh ip route 10.10.10.21

S 10.10.10.21/32 [1/0] via

169.254.1.2, Ethernet3

在h11链路故障时(可通过关闭服务器网卡模拟),观察在leaf01, leaf02,

spine01上观察到devopsr01n01的路由条目:

# 在devopsr01n01上关闭eth1

ifconfig eth1 down

# 在spine上观察路由, 发现只剩一条路径可用,下一跳为leaf02

spine01#sh ip route 10.10.10.21

B E 10.10.10.21/32 [200/0] via 169.254.1.249,

Ethernet2

# 在leaf01上观察路由,

发现此时从leaf01无法从下联接口到达目标,从而选择从spine学到的bgp路由,经由spine到达目标

leaf01#sh ip route 10.10.10.21

B E 10.10.10.21/32 [200/0] via 169.254.0.250,

Ethernet1

via 169.254.0.254,

Ethernet2

# 在leaf02上观察路由,有一条静态路由,可从e3下联接口到达

leaf02#sh ip route 10.10.10.21

S 10.10.10.21/32 [1/0] via

169.254.1.2, Ethernet3

请模拟在h12链路故障时的情况,观察路由变化。

5.4.2 在物理机上配置路由

业务ip配置在br0上,而非物理网卡上,因此需开启内核转发功能:

sysctl -w net.ipv4.ip_forward=1

以devopsr01n01为例,流量经由eth0和eth1两个网口收发,可以达到提高带宽,链路冗余的作用,因此在服务器上的路由配置如下:

# 两个下一跳地址分别为物理机和对应的两个leaf相连的网口互联ip地址

ip route replace default src 10.10.10.21 nexthop via

169.254.0.1 nexthop via 169.254.1.1

配置完上述路由后,与在交换机上的PingCheck一样,服务器也需要某种机制来判断下一跳是否有效:

# 对eth0

eth1启用链路检测,当链路down时,使相应的路由失效,否则物理机可能将流量发往down的链路,从而发生网络故障

sysctl -w

net.ipv4.conf.eth0.ignore_routes_with_linkdown=1

sysctl -w

net.ipv4.conf.eth1.ignore_routes_with_linkdown=1

# 配置完这一条后可做如下测试,先查看本机路由条目, 发现默认路由有两条等价路由

root@devopsr01n01:~# ip r

default src 10.10.10.21

nexthop via 169.254.0.1 dev eth1 weight

1

nexthop via 169.254.1.1 dev eth0 weight

1

169.254.1.0/30 dev eth0 proto

kernel scope link src

169.254.1.2

# 然后关闭eth1接口

ifconfig eth1 down

# 然后再查看路由,发现eth1对应的路由条目失效

root@devopsr01n01:~# ip r

default src 10.10.10.21

nexthop via 169.254.0.1 dev eth1 weight 1

dead linkdown

nexthop via 169.254.1.1 dev eth0 weight

1

169.254.1.0/30 dev eth0 proto

kernel scope link src

169.254.1.2

(Optional)上述步骤完成后,物理机上的路由就算完成了,当然,还可以加上以下的参数,让系统根据ip地址和端口来计算hash,作为选择路由的依据:

sysctl -w net.ipv4.fib_multipath_hash_policy=1

请按照上面的步骤,为其余几台物理机也完成路由配置。

5.5 测试配置结果

从devopsr01n01上ping devopsr01n02, 能够连通,说明配置成功,

其他节点测试方法相同。

root@devopsr01n01:~# ping 10.10.10.22 -c 1

PING 10.10.10.22 (10.10.10.22) 56(84) bytes of data.

64 bytes from 10.10.10.22: icmp_seq=1 ttl=63 time=721 ms

--- 10.10.10.22 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time

0ms

rtt min/avg/max/mdev = 721.175/721.175/721.175/0.000 ms

5.6 小结

本节主要讲解了在交换机和服务器上如何为业务ip配置等价多路径(ECMP)路由条目,以及判断路由条目有效性的机制,这很重要,因为这样的机制才使得各个设备总是能选择到正确的路由。接下来的章节,将介绍在spine

leaf网络中,虚拟机的路由机制。

附 :其他品牌交换机上的路由检测机制

本节中arista交换机使用了PingCheck这个扩展模块来实现路由检测,以判断路由条目的有效性,其他厂商的网络设备大都有内置的命令可以实现这一功能,下面用一组配置范例来对比说明arista和Cisco

Nexus 9K的配置。

如下配置为本节中leaf01上检测devopsr01n01业务ip路由有效性的一组配置

ip route 10.10.10.21/32 Ethernet3 169.254.0.2 #

配置devopsr01n01的静态路由

daemon PingCheck3 #

此处因为devopsr01n01接在e3口,所以为了方便,这里名称写PingCheck3

exec

/usr/local/bin/PingCheck

option CHECKINTERVAL

value 1 # Ping间隔时间1s

option CONF_FAIL value

/mnt/flash/pingcheck/failed_3.conf # Ping失败时执行的操作,内容填“no ip route

10.10.10.21/32 Ethernet3 169.254.0.2”,

即删除到devopsr01n01的静态路由条目

option CONF_RECOVER value

/mnt/flash/pingcheck/recover_3.conf # Ping恢复时执行的操作,内容填“ip route

10.10.10.21/32 Ethernet3 169.254.0.2”,即添加到devopsr01n01的静态路由条目

option HOLDDOWN value

1

option HOLDUP value

1

option IPv4 value

169.254.0.2 #

Ping的目标地址,即到devopsr01n01的静态路由的下一跳地址,也就是devopsr01n01上与leaf01互联的网口的ip地址

option PINGCOUNT value

2

option PINGTIMEOUT value

2

option SOURCE value et3 #

指定Ping的出接口,即leaf01上与devopsr01n01互联的网口

no shutdown #

开始运行PingCheck

在Cisco Nexus 9K上,对应上面配置的功能,应该作出如下一组配置

feature sla sender # 开启sla功能

ip sla 3 # 此处因为devopsr01n01接在e1/3口,所以为了方便,这里名称写sla 3

icmp-echo 169.254.0.2 source-interface

ethernet 1/3 #

Ping的目标地址,即到devopsr01n01的静态路由的下一跳地址,也就是devopsr01n01上与leaf01互联的网口的ip地址,以及指定Ping的出接口,即leaf01上与devopsr01n01互联的网口

threshold 500 # 阈值 500ms,

小于等于超时时间timeout值即可

timeout 500 # 超时时间500ms

frequency 1 # ping的频率,单位秒

ip sla schedule 3 life forever start-time now #

开始序号为3的sla检测,一直运行,立即开始

track 3 ip sla 3 # 配置track 3, 跟踪sla 3的状态

ip route 10.10.10.21 255.255.255.255 ethernet 1/3 169.254.0.2

track 3 # 配置到devopsr01n01业务ip的路由,以track 3的状态决定改路由的有效性

————————————————

版权声明:本文为CSDN博主「eponia」的原创文章,遵循 CC 4.0 BY-SA

版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/m0_37904728/article/details/100012269

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

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

相关文章

axios队列 vue_vue axios全攻略

不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解。本来想在网上找找详细攻略,突然发现,axios 的官方文档本身就非常详细!!有这个还要什么自行车!!所…

探测服务器操作系统,探测服务器操作系统工具

探测服务器操作系统工具 内容精选换一换lib库获取方式不同,编译环境配置方法不同,下面分别介绍。根据Mind Studio安装服务器操作系统及架构与硬件环境是否相同,编译环境分为如下两种场景:若Mind Studio安装服务器操作系统及架构与…

Java Web App体系结构

我曾经利用Servlet,JSP,JAX-RS,Spring框架,Play框架,带有Facelets的JSF和一些Spark框架。 以我的拙见,所有这些解决方案都远非面向对象和优雅的。 它们都充满了静态方法,无法测试的数据结构和肮…

Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri

http://www.cnblogs.com/ivanyb/archive/2013/03/05/2944818.html 1、首先在VS2010里面创建一个Android Application 简单说明一下解决方案中各个文件的作用: AndroidManifest.xml:项目环境配置文件,指明了使用Android SDK的版本,…

mysql磁盘临时表清理_mysql 创建大量磁盘临时表

发现 mysql 中创建的临时表基本都是磁盘临时表,对此进行排查。最后为临时表机制说明。通过查看 mysql 状态变量,看到创建的临时表基本都是磁盘临时表。查看临时表配置,默认配置 16M,配置并没有问题。创建两个表,做一个…

吃鸡服务器8月10日维护,《黑潮之上》2021年8月10日不停服维护公告

在黑潮之上手游中2021年8月10日更新了哪些有趣的内容呢?想了解本次更新情况如何的小伙伴们,接下来就让我们一起来看一下吧!各位接触者:为了提供良好的游戏体验,保证服务器稳定运行,《黑潮之上》将于2021年8月10日早5:0…

资格赛:题目1:同构

时间限制:2000ms单点时限:1000ms内存限制:256MB描述 给定2个树A和B,保证A的节点个数>B的节点个数。 现在你需要对树A的边进行二染色。 一个好的染色方案,指不存在一个树A中的连通块,同时满足以下2个条件 1. 其中只有同色的边 2. 和B同构。…

java 获取mysql链接_Java中如何获取mysql连接的3种方法总结

前言本文主要来说说三种 Java 中获取 mysql 连接的方式,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:第一种:传统的连接方式;第二种:读取配置文件方式;第三种&…

JavaScript学习总结(六)——JavaScript判断数据类型总结

最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧! 一、JS中的数据类型 1.数值型(Number):包括整数、浮点数。 2…

material 项目_Web开发必备的 10 个开源项目,不用自己亲自造轮子!

来自:Java and Python君Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,那么有哪些优秀的开源免费的控制面板呢?我在 Github 上…

SVN部署(本地)

1.安装TortoiseSVN 2.建立Repository。在F:/下建立文件夹SVN_NATIVE_REPOSITORY, —— 》 3.在其他任意路径建立任意名称的路径,这里为D:\MSVC Project\SVN_WORK,确保该文件夹为空 右键单击,点击SVN Checkout, 第一行 …

mysql sqlserver schema_MySQL数据库数据迁移到SQLserver

最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单。对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserver链接服务器的方式来访问mysql。具体见下文描述。一、…

mysql客户端安装错误_windows下mysql 5.7以上版本安装及遇到的问题

(原)早些前用window安装mysql挺简单的,一个安装程序,一路下一步。2006的5.0版本,确实太早了点。于是官网上又下了一个版本,windows也是提供了二个版本Installer(安装)版和Archive(文档)版。Installer版本的后缀是.msi,…

sklearn中eof报错_sklearn中的数据预处理和特征工程

小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考:Python 3.7.1(你的版本至少要…

sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行

取出各组的前N行数据是较常见的运算,比如:每个月每种产品销量最高的五天是哪五天,每位员工涨薪最多的一次是哪次,高尔夫会员成绩最差的三次是哪三次,等等。在SQL中,这类运算要用窗口函数以及keep/top/rownu…

4月21日会议总结(整理—祁子梁)

会议成果: 1.今天我们确定了软件版本的时间alphe版在12周做出来,在我们内部测试基本通过。 bate版在13周发布和其他组作交换测试,在14周release版发布并给其他人使用体验准备15周的演讲。 2.同时确定了部分功能实现顺序,”谁是卧底…

如何查看mysql的gtid_汇总丨MySQL GTID技术点,看这一篇就够了!

mysql> SELECT * FROM mysql.gtid_executed;mysql.gtid_executed表是由MySQL服务器提供给内部使用的。它允许副本在副本上禁用二进制日志记录时使用GTIDs,并允许在二进制日志丢失时保留GTID状态。RESET MASTER命令,gtid_executed表将被清除。服务意外…

vb.net详解MDI窗体操作方法

MDI窗体可以避免打开窗体的时候被无数个子窗体困扰,我将为大家一一的介绍一下vb.net中MDI窗体的操作方法 一、如何创建MDI窗体? 1、创建mdi主窗体 新建建立一个默认空白的Windows应用程序,在Form1窗体的属性窗口中找到IsMDIContainer 属性&am…

lokijs可以用mysql_JavaScript实现的内存数据库LokiJS介绍和入门实例_javascript技巧

LokiJS是一个内存数据库,将性能考虑放在第一位。LokiJS支持索引和更快的文档访问,执行性能非常好(近50万OPS/秒)。其内置DynamicView类可以用于数据子集的索引,甚至获取更快的性能。*阅读这篇文章来看一看LokiJS的性能表现。LokiJS支持collec…

python读取word图片_Python中如何读取Word中的图片

Python能够快速的编写、调试,用来提取各类软件中的图片再好不过了。今天小编就为大家带来在Python中提取Word图片的方法。方法需要批量的修改文件后缀名,并且解压之后将图片拷贝到需要存放的地方,然后将该文件夹清空留作下次的路径&#xff0…