流量監(jiān)控(TC)+網(wǎng)絡(luò)管控(iptables工具)+分布式框架簡介

TC工具:參考

應(yīng)用場景:網(wǎng)絡(luò)故障模擬(網(wǎng)卡)

實(shí)現(xiàn)平臺:Linux

解決問題:

? ? ? ?本質(zhì)上是做一個流量的控制(延伸到具體應(yīng)用有丟包、延遲、抖動等)

原理:

? ? ? ?從流量控制的角度看(使用TC工具),流量控制主要分為三塊,包括隊(duì)列、類和TC,這里我們會先建一個隊(duì)列,隊(duì)列的方式有CBQ、HTB等,然后在隊(duì)列下建立類,這邊流量過來,比如說WWW和Email這兩種流量需要被分派到兩個類中,我們通過filter對應(yīng)相應(yīng)的流量規(guī)則來匹配這兩種類

linux基本的流程操作是:

1、建立隊(duì)列:

tc qdisc add dev eth1 root handle 1:htb default 11

通過qudis創(chuàng)建跟隊(duì)列root,采用隊(duì)列方式是htb

2、創(chuàng)建類

? tc?class?add?dev?eth1 parent?1:?classid?1:13?htb?rate?20mbit?ceil?20mbit

通過class創(chuàng)建類,跟隊(duì)列是parent1,子隊(duì)列是class 1:13,這里是對帶寬進(jìn)行了限制這里是rate?20mbit,最高帶寬ceil?20mbit

3、設(shè)置過濾器

?tc filter add dev eth0? parent 1:0 protocol ip prio 1?u32 match ip dport 80 0xffff?flowid 1:11?

這里是一個匹配操作,u32過濾器要檢查的協(xié)議字段是?protocol ip,匹配的的ip端口是80 ,匹配的結(jié)果是0xffff ,最終會把流量放入類1:11 中

4、檢查流量配置情況

tc?filter show dev DEV或者tc -s -d qdisc ls這個表示方式很多

與其他工具或模塊的結(jié)合

比如說和netem模塊結(jié)合,可模擬場景包括:模擬端口或IP超時、網(wǎng)絡(luò)丟包(netem? loss)、包損壞(netem??corrupt)、包亂序(?reorder?)、包重復(fù)(netem??duplicate)、網(wǎng)絡(luò)抖動(抖動是在延遲基礎(chǔ)上做的,是一個迭代過程,可以先用tc設(shè)置延遲,一定時間之后將tc規(guī)則刪除,在設(shè)置延遲再刪除以此往復(fù))

注意的點(diǎn):

tc執(zhí)行必須root賬號 ;只針對出口流量有效


iptables工具:參考

應(yīng)用場景:網(wǎng)絡(luò)管控(作用層是第三層和第四層)

實(shí)現(xiàn)平臺:Linux

解決問題:網(wǎng)絡(luò)的過濾或網(wǎng)絡(luò)地址轉(zhuǎn)換

原理:

? ? ? ? 這里iptables內(nèi)部可以理解為一個網(wǎng),這里table是一個整體的框架,里層是chain,chain里是具體的rule ,這里的一個table可以包含多個chain,chain可以包含多個rule。table主要分為三部分,主要是nat、mangle和filter,其中nat主要是改變網(wǎng)絡(luò)地址,mangle主要是做對包的一些設(shè)置,相關(guān)的chain是?PREROUTING,POSTROUTING, OUTPUT,INPUT?和?FORWARD,對于filter 做的是對包進(jìn)行 DROP、LOG、ACCEPT 和 REJECT 等操作。舉一個例子來說:進(jìn)入主機(jī)的包(data)主要有三種為輸入本機(jī)的包,本機(jī)作為源輸出的包,和本機(jī)作為中轉(zhuǎn)的包,當(dāng)data進(jìn)入時iptables這邊會先做一個relu的判斷,是丟棄(relu中Target參數(shù)DROP)包還是接受(ACCEPT),如果是接受,接收后判斷是否是本機(jī)的包,如果是本機(jī)包,送入上層進(jìn)行處理,如果不是則通過Forwarding Block處理,同時也接受來自本機(jī)的包,這里如果和TC結(jié)合可以理解為iptables做了一個Mark的工作,將經(jīng)過預(yù)處理的包再讓TC做一個流量控制。當(dāng)然relu是可以自己依情況設(shè)置規(guī)則的,這里只是做了一個包處理過程模擬,當(dāng)然它還包括網(wǎng)址切換等操作

linux基本的流程操作是(這里基本是和TC聯(lián)合一起用的)

這邊是一個簡單的上網(wǎng)、端口設(shè)置和限流的例子

iptables -t nat -A POSTROUTING -s 172.16.44.0/24 -o eth0 -j MASQUERADE

通過nat添加端口轉(zhuǎn)發(fā)

iptables -t nat -I PREROUTING -p tcp -d a.b.c.d --dport 80 -j DNAT --to 172.16.44.210:80iptables -t nat -I POSTROUTING -p tcp -d 172.16.44.210 --dport 80 -j SNAT --to 172.16.44.1

這里是指定外網(wǎng)地址,將80端口轉(zhuǎn)發(fā)到172.16.44.210:80,它這里設(shè)置的內(nèi)網(wǎng)地址是?172.16.44.210

下面既可以用TC對網(wǎng)路進(jìn)行一個限速


分布式系統(tǒng):

? ? ? ?我們客戶端這邊用的是Tomcat(web server)和應(yīng)用(java app),通過HHTP協(xié)議與服務(wù)端進(jìn)行通信,服務(wù)器這邊的部署是根據(jù)分布式框架,希望用更多的計(jì)算機(jī)實(shí)現(xiàn)更大的數(shù)據(jù)處理,這里的計(jì)算機(jī)即系統(tǒng)分布節(jié)點(diǎn),這里是多節(jié)點(diǎn)提供相同服務(wù),那么問題就是如果幾個應(yīng)用過來應(yīng)該選擇哪個節(jié)點(diǎn),這里采用的是負(fù)載均衡選出一個節(jié)點(diǎn),對于日常應(yīng)用可能每個應(yīng)用間還有聯(lián)系,也就是各節(jié)點(diǎn)間要通信,通信符合TCP/IP協(xié)議,節(jié)點(diǎn)的下邊就是數(shù)據(jù)處理層

? ? ? ? 這是內(nèi)部一個集群的處理過程,在公司的情況下,一個部門的服務(wù)可能與其他部門是相關(guān)的,每個部門都有獨(dú)立的機(jī)器部署,相互間的通信是通過rpc實(shí)現(xiàn)的遠(yuǎn)程處理(rpc實(shí)現(xiàn)通信的過程主要是對一端對數(shù)據(jù)進(jìn)行封裝,另一端解封,調(diào)用的過程)

這是一個大概的框架,如果下一步會詳細(xì)看下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iptabels是與Linux內(nèi)核集成的包過濾防火墻系統(tǒng),幾乎所有的linux發(fā)行版本都會包含iptables的功...
    隨風(fēng)化作雨閱讀 4,975評論 1 16
  • iptables簡介 netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防...
    yshenhn閱讀 113,738評論 2 78
  • iptables俗稱防火墻,或許我們已經(jīng)不在陌生,但是作為openstack基礎(chǔ),這里還是對其做一些補(bǔ)充,了解更多...
    ximitc閱讀 1,862評論 0 8
  • (本文源于轉(zhuǎn)載或摘抄整理) 一:前言 防火墻,其實(shí)說白了講,就是用于實(shí)現(xiàn)Linux下訪問控制的功能的,它分為硬件的...
    JackyTsuuuy閱讀 9,032評論 1 6
  • 正則表達(dá)式要想做更精確地匹配,可以用[]表示范圍,比如: [0-9a-zA-Z\_]可以匹配一個數(shù)字、字母或者下劃...
    溪西閱讀 603評論 0 0

友情鏈接更多精彩內(nèi)容