91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

不同場景容器內獲取客戶端源IP的方法是什么

發布時間:2021-11-12 16:48:46 來源:億速云 閱讀:278 作者:柒染 欄目:大數據

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

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

k8s已經成為當今容器化的標準,人們在享受容器帶來的高效與便利的同時,也遇到一些煩惱:客戶端和容器服務器之間可能存在多種不同形式的代理服務器,那容器中如何獲取到客戶端真實的源ip呢?下面我們就幾種場景類型如何能獲取到源ip進行討論。

原理介紹:

不同場景容器內獲取客戶端源IP的方法是什么

四層轉發:

Nodeport:nodeport訪問方式,是將容器端口映射到節點端口,如果“服務親和”選擇“集群級別”需要經過一次服務轉發,無法實現獲取客戶端源ip,而“節點模式”不經過轉發,可以獲取客戶端源ip。

ELB:ELB訪問方式,是通過華為云ELB產品來實現負載均衡,“服務親和”也是需要選擇“節點級別”,其中“共享型”ELB需要在節點安裝TOA插件,而“獨享型”ELB默認透傳源ip,不需要安裝TOA插件。

七層轉發:

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

具體操作:

一、負載均衡 ( LoadBalancer )

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

1. 服務親和選擇“節點級別”而不是“集群級別”。

不同場景容器內獲取客戶端源IP的方法是什么

2. 在pod所在的節點安裝TOA插件。(“獨享型”ELB無需進行以下操作)

安裝TOA插件步驟如下:

1) 準備編譯環境:

執行如下命令,安裝gcc編譯器。

]# yum install gcc

執行如下命令,安裝make工具。

]# yum install make

2)編譯內核模塊

a) 下載TOA內核模塊源代碼。

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

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

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

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

3)加載內核模塊

執行如下命令,加載內核模塊。

]# insmod toa.ko

執行如下命令,驗證模塊加載情況,查看內核輸出信息。

]# dmesg | grep TOA

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

不同場景容器內獲取客戶端源IP的方法是什么

4) 自動加載內核模塊

為了使TOA內核模塊在系統啟動時生效,可以將加載TOA內核模塊的命令加到客戶的啟動腳本中。

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

#!/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內核模塊文件的路徑,客戶需要將其替換為自己編譯的TOA內核模塊路徑。

執行以下命令,為toa.modules啟動腳本添加可執行權限。

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

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

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

二、節點訪問 ( NodePort )

節點訪問(NodePort)類型的Service的服務親和選擇“節點級別”而不是“集群級別”,即Service的 spec.externalTrafficPolicy 需要設置為 Local

圖1 服務親和選擇節點級別

不同場景容器內獲取客戶端源IP的方法是什么

三、七層負載均衡(Ingress)

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

真實的來訪者IP會被負載均衡放在HTTP頭部的X-Forwarded-For字段,格式如下:

X-Forwarded-For: 來訪者真實IP, 代理服務器1-IP,  代理服務器2-IP, ...

測試要點:從容器中獲取http請求頭”x-forward-for”,獲取的IP為客戶端的IP。

上述內容就是不同場景容器內獲取客戶端源IP的方法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ip
AI

鸡东县| 壶关县| 林口县| 江口县| 来安县| 务川| 焉耆| 许昌市| 呼和浩特市| 灵石县| 吉安市| 左贡县| 福贡县| 西宁市| 磴口县| 新巴尔虎右旗| 汝南县| 丁青县| 齐河县| 扶沟县| 潜山县| 嘉祥县| 喀喇沁旗| 阿勒泰市| 新和县| 桂东县| 依兰县| 梁河县| 海盐县| 威远县| 罗源县| 亚东县| 扎兰屯市| 营山县| 青海省| 灌南县| 江永县| 岗巴县| 江达县| 巨鹿县| 达拉特旗|