教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

服務器多網卡服務策略介紹【linux云計算+運維開發】

更新時間:2020年04月30日11時56分 來源:傳智播客 瀏覽次數:

服務器多網卡服務策略


場景背景與需求

某公司新買一臺服務器, 服務器資源(cpu,內存,硬盤)比較多,并且有多個網卡。

運維工程師為了節省資源,在服務器上搭建多個服務,希望通過多個網卡實現流量分流。

但由于運維工程師對網絡理解不夠深入,將服務器的多個網卡都配置了同一個網段。

最后的結果是并不能正常的訪問這多個服務。推薦了解黑馬程序員linux云計算+運維開發培訓課程。

場景分析

·網卡設置了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 eth0

10.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 1

eth0: 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 br0

eth1: 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 REACHABLE

10.1.1.6 dev eth0 lladdr 52:54:00:41:e4:22 REACHABLE

說明:

·按照arp協議原理, 訪問哪個IP它才會回應mac地址。

·而現在的結果是mac地址都為10.1.1.5對應的mac地址。

·這是因為linux系統內核參數默認做了設置, 訪問同臺機器的網卡IP,如果這個網卡掛了,另外一個同網段的網卡會幫助回應??梢员扔鞒?張三,李四兩個網卡同一臺機器,就是一家人,找張三,張三回,找李四,也張三回)

3、在服務器上修改內核參數

server# vim /etc/sysctl.conf     # 添加以下參數

net.ipv4.conf.eth0.arp_ignore = 1

net.ipv4.conf.eth0.arp_announce = 2

net.ipv4.conf.eth1.arp_ignore = 1

net.ipv4.conf.eth1.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

server# sysctl -p    # 用此命令讓其生效

說明: 這幾個參數的目的就是把上面的一家人(張三又回應張三也回應李四)的情況變成了原本的arp情況(張三只能回張三,李四只能回李四)

4、再次客戶端測試

client# arp -d 10.1.1.5

client# 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 server1

server# ip rule add from 10.1.1.6 table server2

server# ip route add default via 10.1.1.5 table server1

server# 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回應

場景總結與經驗值

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

工作中物理服務器與虛擬機有多網卡時都不要犯這種多網卡同網段的錯誤。

如果真的需要用到多服務隔離的話,可考慮虛擬化或容器化環境。

猜你喜歡:

K8s空值器類型及演示

局域網、城域網和廣域網分別是什么?

什么是瀏覽器內核?常見的瀏覽器內核有哪些?

以太網是什么?看完明白了

什么是域名?域名基礎介紹

0 分享到:
美女裸体无遮挡扒开尿囗,高冷男受用钢笔玩自己动漫,我妽让我满足她,9420高清完整版在线观看