谈网络适配器
谈网络适配器,就是网卡,在大型网站架构设计中,网络规划十分重要。
本文节选自《Netkiller Architect 手札》
21.5. 网卡
21.5.1. 网口规划
21.5.1.1. 内外隔离
双网卡方案,一般服务器会提供至少2块网卡。 使用两个交换机,一个交换机连接接防火墙,另一个交换机独立不接入Internet
+------------+ +--------------+ /---> [eth0 Server A eth1] <--- +--------------+ /---> [eth0 Server C]
| Firewall |--->| Switch - WAN |---> ---> [eth0 Server B eth1] <--- <---| Switch - LAN |---> ---> [eth0 Server D]
+------------+ +--------------+ ---> [eth0 Server C eth1] <---/ +--------------+ ---> [eth0 Server E]
Internet 用户从防火墙进入,只能访问WAN交换机上的服务器,WAN上一般是WEB服务器,WEB服务器通过LAN交换机访问数据库,Memcache等服务器
这样既有效利用了网络IO,有能有效隔离不需要暴露在公网上的服务器还可以降低成本, WAN 可以使用 100M交换机,LAN 可以使用1G交换机,因为内部数据传输远远大于外部。
另外 WAN与LAN也可以使用VLAN实现
21.5.1.2. 负载均衡
eth0与eth1 做bonding, eth2与3做bonding, 然后内外隔离
+--------------+ /---> [eth0/1 Server A eth2/3] <--- +--------------+
| Switch - WAN |---> ---> [eth0/1 Server B eth2/3] <--- <---| Switch - LAN |
+--------------+ ---> [eth0/1 Server C eth2/3] <---/ +--------------+
21.5.1.3. 交叉互联
在交换机端口有限的情况可以采用交叉互联。
交叉线连接与通过交换机连接二者差异:
A与B两个服务器举例:
- 交叉线连接A与B两个服务器,A发数据包,B接收数据包,如果接受方在接收包过程中出现异常(毫秒级),可能会堵塞,数据包会重新发包。交换机存储转发,仍然会接收数据放到背板缓存中,建立连接后交换机会处理一切。
- A 服务器出现故障宕机,A网卡灯不亮,那么B服务器的网卡将检测,认为没有插网线,B网卡灯也是不亮状态。而通过交换机B网卡仍然工作
21.5.2. 常见网络适配器品牌
Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v2.0.8-rh (Oct 11, 2010)
Emulex OneConnect 10Gbps NIC
Intel 10 Gigabit AT2 Server Adapter (E10G41AT2)
21.5.3. 1G 千兆以太网产品
目前服务器1G网卡市场90%都被Broadcom NetXtreme占领,不仅仅限于服务器网卡,Cisco的设备中用的也是Broadcom NetXtreme芯片
21.5.4. 10G 万兆以太网产品
万兆以太网标准很多,有10000BAST-T(使用双绞线连接),还有SFP+(850nm 光纤连接)
Dell 有通过6类线连接的万兆交换机8024,服务器端Dell给用户配的是Intel万兆网卡,使用方法与千兆一样。
笔者有两个刀笼(刀片服务器),刀笼配置万兆模块通过4条10G SFP+ 连接到8024,然后服务器使用6类双绞线,通过Intel网卡连接8024。
光纤万兆网卡与千兆网卡使用上并无不同。如果指示灯不亮,请调换RX/TX光纤跳线
# dmesg | grep Emulex
Copyright(c) 2004-2009 Emulex. All rights reserved.
be2net 0000:18:00.0: eth0 - Emulex OneConnect 10Gbps NIC
be2net 0000:18:00.1: eth1 - Emulex OneConnect 10Gbps NIC
笔者使用过Emulex/Intel在Linux上无需驱动,光纤交换机Cisco 4507的万兆模块是Broadcom NetXtreme芯片的.
- 关于如何来构造一个String类
- Java集合深度解析之LinkedList
- 2015编程之美(资格赛)--基站选址
- CentOS7下Nginx服务器安装与使用教程
- 2015年编程之美(资格赛) ---2月29日
- 编程之美--2. Trie树 (Trie图)
- 编程之美 --1 : 骨牌覆盖问题·一
- go语言中的数组切片:特立独行的可变数组
- go语言单例模式(Singleton)实例分析
- C++ template的一些高级用法(元编码,可变参数,仿函数,using使用方法,. C++ 智能指针)
- Golang memory model
- go的非侵入式接口
- C++ 如何重复利用一个内存地址块
- 如何减轻挖矿攻击给企业安全带来的威胁
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法