一台服务器装两个sql server 如何访问吗_服务器多网卡多路由策略

场景背景与需求

某公司新买一台服务器, 服务器资源(cpu,内存,硬盘)比较多,并且有多个网卡。

运维工程师为了节省资源,在服务器上搭建多个服务,希望通过多个网卡实现流量分流。

但由于运维工程师对网络理解不够深入,将服务器的多个网卡都配置了同一个网段。

最后的结果是并不能正常的访问这多个服务。

1c7502f4448f037da70acf928aab6043.png

场景分析

  • 网卡设置了IP地址后,会产生一个与IP地址同网段的路由条目, 并与当前网卡名对应。
  • 如果多个网卡设置同网段IP地址后,会产生多个同网段的路由条目,并与不同网卡名对应。

假设两个网卡eth0,eth1分别配置10.1.1.5/24与10.1.1.6/24. 则会产生以下路由

10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth010.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1

如果不同客户端通过这两个IP进来访问不同的服务。进来会从不同网卡进,但回去时就会都从eth0回去(因为路由会从上往下读取,所以默认只会读上面一条)

测试实验:

1, 准备一个虚拟机模拟服务器,开两个网卡,都为同一个网络, 配置两个同网段IP。

server# ip addr |grep eth -A 1eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 52:54:00:41:e4:22 brd ff:ff:ff:ff:ff:ff    inet 10.1.1.5/24 brd 10.1.1.255 scope global br0eth1:  mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 52:54:00:39:c0:e6 brd ff:ff:ff:ff:ff:ff    inet 10.1.1.6/24 brd 10.1.1.255 scope global eth1

2, 用另一台机器模拟客户端,使用ping来访问以上2个IP。

client# ip neigh |grep -E "^10.1.1.5 |^10.1.1.6 "10.1.1.5 dev eth0 lladdr 52:54:00:41:e4:22 REACHABLE10.1.1.6 dev eth0 lladdr 52:54:00:41:e4:22 REACHABLE

说明:

  • 按照arp协议原理, 访问哪个IP它才会回应mac地址。
  • 而现在的结果是mac地址都为10.1.1.5对应的mac地址。
  • 这是因为linux系统内核参数默认做了设置, 访问同一机器的网卡IP,如果这个网卡挂了,另外一个同网段的网卡会帮助回应。可以比喻成(张三,李四两个网卡同一台机器,就是一家人,找张三,张三回,找李四,也张三回)
f1f773f4e3d9052f69fddb420e4769f3.png

3,在服务器上修改内核参数

server# vim /etc/sysctl.conf                # 添加以下参数net.ipv4.conf.eth0.arp_ignore = 1       net.ipv4.conf.eth0.arp_announce = 2net.ipv4.conf.eth1.arp_ignore = 1       net.ipv4.conf.eth1.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2server# sysctl -p                           # 用此命令让其生效

说明: 这几个参数的目的就是把上面的一家人(张三又回应张三也回应李四)的情况变成了原本的arp情况(张三只能回张三,李四只能回李四)

4, 再次客户端测试

client# arp -d 10.1.1.5client# arp -d 10.1.1.6

说明: arp -d可清除arp协议访问的mac地址缓存。建议清除再测试

最终结果:

客户端只能ping通10.1.1.5了, ping不通10.1.1.6了(这就对了,因为一台机器双网卡同网段会路由冲突)

这个实验就验证了场景中的情况:

  • 服务器多网卡同网段,客户端从不同网卡IP访问进来,却都从第1个网卡回应
  • 如果修改内核参数,则客户端只能访问第一张网卡的服务

场景解决方案

如果以上场景已经发生,如何解决?

  • 将多网卡改成不同网段IP(这样做可能项目要修改的工作量很大,很多配置要重配)
  • 通过策略路由来解决(不需要修改IP,只需要添加路由表将多个网卡流量分开)

策略路由的做法也非常简单,在服务器上做以下操作

server# echo 100 server1 >> /etc/iproute2/rt_tables server# echo 200 server2 >> /etc/iproute2/rt_tables server# ip rule add from 10.1.1.5 table server1server# ip rule add from 10.1.1.6 table server2server# ip route add default via 10.1.1.5 table server1server# ip route add default via 10.1.1.6 table server2

说明:

  • 增加了server1与server2两个路由表
  • 两个路由表里的规则为访问10.1.1.5将由10.1.1.5回应,访问10.1.1.6将由10.1.1.6回应
aa8c53a63390d609d5d983daf53c9e68.png

场景总结与经验值

此解决方案主要是用到了linux上的多路由表功能。

工作中物理服务器与虚拟机有多网卡时都不要犯这种多网卡同网段的错误。

如果真的需要用到多服务隔离的话,可考虑虚拟化或容器化环境。

喜欢别忘了关注一下,更多学习文章日常更新。

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

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

相关文章

python seed()

Python seed() 函数 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。 以下是 seed() 方法的语法: import random random.seed ( [x] )注意:seed(()是不能直接访问的,需要导入 …

vue 路由知识点梳理及应用场景整理

最近做项目才发现,我确实对 vue-router 太不熟悉了,都只了解个简单用法就开始搞了,本来很简单的问题,都搞不清楚。现在重新看一遍文档,重新梳理一下。 vue 路由的原理 说实话,路由我一直也就光顾着用&#…

dct变换的主要优点有哪些_发泡保温材料包括哪些成分?主要优点是什么?有没有发展前景?...

在各个行业中,对发泡保温材料都有需求。随着这种材料越来越受欢迎,更多人开始关注它的成分与优点。了解的越多,越容易在合适的场合令其发挥功效。组成成分有哪些?对于发泡保温材料来说,包括甲组和乙组两部分。所谓的甲…

企业集成模式_企业集成模式简介

企业集成模式在此博客文章中,我们将介绍一些企业集成模式。 这些是旨在解决集成挑战的已知设计模式。 阅读此书后,您将可以设计集成解决方案。 EIP(简而言之)是已知的设计模式,可为应用程序集成过程中面临的问题/问题…

win7安装

以Dell电脑为例,其他品牌电脑类似 Dell安装win7 一:快捷启动U盘或光盘的方法: 1, 打开戴尔Dell电脑,当进入到标志画面时,马上按键盘上方的F12键,就能进入到快捷启动菜单。 2, 进…

【Bootstrap】 框架 栅格布局系统设计原理

前提条件(Bootstrap 自带) 首先使用这个布局之前要定义一下代码: 这行代码如果不懂,可以搜索一下,总之大致意思就是,被定义的元素的内边距和边框不再会增加它的宽度,不加入的话排版会有问题。 不…

asp.net接受表单验证格式后再提交数据_药物临床试验数据管理与统计分析的计划和报告指导原则...

来源:国家药监局网站一、前言规范的数据管理计划有助于获得真实、准确、完整和可靠的高质量数据;而详细的统计分析计划则有助于保证统计分析结论正确和令人信服。为保证临床试验数据的质量和科学评价药物的有效性与安全性,必须事先对数据管理…

使用Spring Boot应用程序将代码管道化

这是有关基于本地Docker compose堆栈的持续交付的一系列帖子中的最后一篇(请参阅此处的第一篇和第二篇文章 )。 在这篇文章中,我使用一个简单的Spring Boot项目来展示如何利用“ 管道作为代码 ”的概念。 请注意,这仅是示例&#…

matlab function的使用

首先创建一个m文件; Matlab函数定义格式,用关键字function定义函数 function [输出变量] 函数名称(输入变量) % 注释 % 函数体 简单的函数如下: function [a,b,c]test(d,e,f) ade; bef; cfd; end 函数的调用: …

关键词热度分析工具_阿里国际站外贸独立站关键词的收集

很多朋友在做外贸独立站SEO和阿里巴巴国际站的时候,一定要查找收集一定数量的关键词,并且按照关键词的热度和词品相关性进行分类,从而为后面阿里巴巴国际站发布产品或者独立站谷歌推广打下坚实的基础。所谓磨刀不误砍柴工,好的关键…

matlab区分卷积和相关

区分卷积和相关 图像处理中常常需要用一个滤波器做空间滤波操作。空间滤波操作有时候也被叫做卷积滤波,或者干脆叫卷积(离散的卷积,不是微积分里连续的卷积);滤波器也有很多名字:卷积模版、卷积核、掩模、…

2345电脑管家_2345软件管家下载|2345软件管家 2.0 官方正式版

对于很多类似的软件而言,这一款软件在互联网行业也不算无名之辈,毕竟你都搜索到这里,也是认可了这款软件的地位和作用。而且看最新的版本迭代,也有一些比较欣喜的变化,是以前版本所没有的。2345软件管家功能介绍 新一代…

matlab imwrite将图像保存到其他目录

%读入C:\desktop 文件夹下图片test.jpg imgimread(C:\desktop\test.jpg); %用imwrite将图片写入到D:\目标 文件夹下,并重命名为img_propose.jpg imwrite(img,D:\目标\img_propose.jpg);

设计模式 原型模式_原型设计模式:创建另一个小车

设计模式 原型模式创建对象确实是一个耗时的过程,也是一件昂贵的事情。 因此,我们现在正冒险节省时间和金钱。 我们该怎么做? 克隆奇迹多莉 有人记得多莉吗? 是的,是绵羊,是第一个被克隆的哺乳动物。 好吧…

实验四:三角形判断

本次实验问题稍多,出租车计价一题逻辑比较简单,就是情况比较多,在多次尝试后才让程序成功运行。而三角形的判断一题中主要出现了以下几点错误 1.else 和 if 语句不搭配 2.对三角形成立的条件理解不正确(是任意两边之和大于第三…

电脑键盘上每个键的作用_眼看着淡出大众视野 键盘上Esc键的隐秘往事

众所周知,苹果一些新的Macbook产品线不仅取消了Esc键,而且还对通常用于多数计算机键盘的功能键布局进行了变更。它们有的被转移到了TouchBar,有的则被永久取消掉了。那个常标配于每个键盘的Esc键,眼看着却有淡出大众视野的趋势——…

matlab save将变量值保存为mat

将变量a的值保存到.mat文件中 save(object.mat,a)

开发人员的新分布式基元

面向对象的原语(进程中的原语) 作为Java开发人员,我非常熟悉面向对象的概念,例如类,对象,继承,封装,多态性等。除了面向对象的概念之外,我还非常熟悉Java运行时。它提供的…

LOJ.2865.[IOI2018]狼人(Kruskal重构树 主席树)

LOJ洛谷 这题不就是Peaks(加强版)或者归程么。。这算是\(IOI2018\)撞上\(NOI2018\)的题了?\(Kruskal\)重构树(具体是所有点按从小到大/从大到小的顺序,依次加入这些点的边),我们可以得到两棵树(和那两题不一…

b站在线解析_这款游戏被全B站所唾弃,每个月却依然有5000万玩家坚持在线?!...

彩虹 | 视频安妮 | 编辑《迷你世界》,相信不少人都听过这个名字。这是个非常神奇的游戏,当然并不是指这个游戏很有自己的特色或者有趣的玩法。它神奇的地方在于你随便在bilibili挑一个有关《迷你世界》的视频打开,弹幕都是“呕”、“开炮”、…