真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么

本篇文章為大家展示了不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為蚌埠企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,蚌埠網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

客戶端和容器服務(wù)器之間可能存在多種不同形式的代理服務(wù)器,那容器中如何獲取到客戶端真實(shí)的源ip呢?

k8s已經(jīng)成為當(dāng)今容器化的標(biāo)準(zhǔn),人們?cè)谙硎苋萜鲙淼母咝c便利的同時(shí),也遇到一些煩惱:客戶端和容器服務(wù)器之間可能存在多種不同形式的代理服務(wù)器,那容器中如何獲取到客戶端真實(shí)的源ip呢?下面我們就幾種場(chǎng)景類型如何能獲取到源ip進(jìn)行討論。

原理介紹:

不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么

四層轉(zhuǎn)發(fā):

Nodeport:nodeport訪問方式,是將容器端口映射到節(jié)點(diǎn)端口,如果“服務(wù)親和”選擇“集群級(jí)別”需要經(jīng)過一次服務(wù)轉(zhuǎn)發(fā),無法實(shí)現(xiàn)獲取客戶端源ip,而“節(jié)點(diǎn)模式”不經(jīng)過轉(zhuǎn)發(fā),可以獲取客戶端源ip。

ELB:ELB訪問方式,是通過華為云ELB產(chǎn)品來實(shí)現(xiàn)負(fù)載均衡,“服務(wù)親和”也是需要選擇“節(jié)點(diǎn)級(jí)別”,其中“共享型”ELB需要在節(jié)點(diǎn)安裝TOA插件,而“獨(dú)享型”ELB默認(rèn)透?jìng)髟磇p,不需要安裝TOA插件。

七層轉(zhuǎn)發(fā):

Ingress:應(yīng)用在七層訪問時(shí),客戶端源ip默認(rèn)保存在HTTP頭部的“X-Forwarded-For”字段,無需做其他操作。

具體操作:

一、負(fù)載均衡 ( LoadBalancer )

負(fù)載均衡( LoadBalancer )的Service模式下,支持容器中獲取源IP需要滿足以下前提條件:

1. 服務(wù)親和選擇“節(jié)點(diǎn)級(jí)別”而不是“集群級(jí)別”。

不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么

2. 在pod所在的節(jié)點(diǎn)安裝TOA插件。(“獨(dú)享型”ELB無需進(jìn)行以下操作)

安裝TOA插件步驟如下:

1) 準(zhǔn)備編譯環(huán)境:

執(zhí)行如下命令,安裝gcc編譯器。

]# yum install gcc

執(zhí)行如下命令,安裝make工具。

]# yum install make

2)編譯內(nèi)核模塊

a) 下載TOA內(nèi)核模塊源代碼。

]# wget https://github.com/Huawei/TCP_option_address/archive/master.zip b) 執(zhí)行如下命令,進(jìn)入源碼目錄,編譯模塊。

]# unzip master.zip
]# cd TCP_option_address-master/src/
]# make

編譯過程未提示warning或者error,說明編譯成功,檢查當(dāng)前目錄下是否已經(jīng)生成toa.ko文件。

說明:如果報(bào)錯(cuò)提示“config_retpoline=y but not supported by the compiler, Compiler update recommended”,表明gcc版本過老,建議將gcc升級(jí)為較新版本。

3)加載內(nèi)核模塊

執(zhí)行如下命令,加載內(nèi)核模塊。

]# insmod toa.ko

執(zhí)行如下命令,驗(yàn)證模塊加載情況,查看內(nèi)核輸出信息。

]# dmesg | grep TOA

若提示信息包含“TOA: toa loaded”,說明內(nèi)核模塊加載成功。

不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么

4) 自動(dòng)加載內(nèi)核模塊

為了使TOA內(nèi)核模塊在系統(tǒng)啟動(dòng)時(shí)生效,可以將加載TOA內(nèi)核模塊的命令加到客戶的啟動(dòng)腳本中。

在“/etc/sysconfig/modules/”目錄下新建toa.modules文件。該文件包含了TOA內(nèi)核模塊的加載腳本,請(qǐng)參考如下示例:

#!/bin/sh
/sbin/modinfo -F filename /root/toa/toa.ko > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/insmod /root/TCP_option_address-master/src/toa.ko
fi

注意:其中“/root/TCP_option_address-master/src/toa.ko”為TOA內(nèi)核模塊文件的路徑,客戶需要將其替換為自己編譯的TOA內(nèi)核模塊路徑。

執(zhí)行以下命令,為toa.modules啟動(dòng)腳本添加可執(zhí)行權(quán)限。

]# chmod +x /etc/sysconfig/modules/toa.modules

這種情況下可以從四層負(fù)載均衡上獲取到客戶端的源IP(可以通過netstat查看)。

測(cè)試要點(diǎn):這種情況下可以使用netstat看到客戶端連接到POD的IP地址。

二、節(jié)點(diǎn)訪問 ( NodePort )

節(jié)點(diǎn)訪問(NodePort)類型的Service的服務(wù)親和選擇“節(jié)點(diǎn)級(jí)別”而不是“集群級(jí)別”,即Service的 spec.externalTrafficPolicy 需要設(shè)置為 Local

圖1 服務(wù)親和選擇節(jié)點(diǎn)級(jí)別

不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么

三、七層負(fù)載均衡(Ingress)

七層負(fù)載均衡的模式下,不能在四層負(fù)載均衡上獲取客戶端IP(不能通過netstat查看客戶端IP),需要對(duì)應(yīng)用服務(wù)器進(jìn)行配置,然后通過七層負(fù)載均衡的http頭中的x-forward-for獲取。

真實(shí)的來訪者IP會(huì)被負(fù)載均衡放在HTTP頭部的X-Forwarded-For字段,格式如下:

X-Forwarded-For: 來訪者真實(shí)IP, 代理服務(wù)器1-IP,  代理服務(wù)器2-IP, ...

測(cè)試要點(diǎn):從容器中獲取http請(qǐng)求頭”x-forward-for”,獲取的IP為客戶端的IP。

上述內(nèi)容就是不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享名稱:不同場(chǎng)景容器內(nèi)獲取客戶端源IP的方法是什么
網(wǎng)頁路徑:http://weahome.cn/article/gopoee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部