彈性負載均衡支持什么類型的會話保持?
獨享型負載均衡器支持源IP地址、負載均衡器cookie兩種會話保持類型。
共享型負載均衡器支持源IP地址、負載均衡器cookie、應用程序cookie三種會話保持類型。
彈性負載均衡是否支持后端FTP服務?
彈性負載均衡不支持后端FTP服務。但是可以支持SFTP場景。
彈性負載均衡的帶寬是否可調整?
公網彈性負載均衡(ELB綁定EIP)的帶寬可以調整。可通過控制臺進行自助調整,或聯系客戶經理進行調整。
監聽器中分配算法和會話保持算法是什么關系?
會話保持功能,目的是將同一個用戶的會話分發到相同的后端節點。
下表是獨享型負載均衡支持情況。
分配策略 會話保持類型 L4(TCP、UDP) L7(HTTP、HTTPS) 加權輪詢算法 源IP地址 支持 不支持 負載均衡器cookie 不涉及 支持 應用程序cookie 不涉及 不支持 加權最少連接 源IP地址 支持 不支持 負載均衡器cookie 不涉及 支持 應用程序cookie 不涉及 不支持 源IP地址 源IP地址 不涉及 不支持 負載均衡器cookie 不涉及 不支持 應用程序cookie 不涉及 不支持
下表是共享型負載均衡支持情況。
分配策略 會話保持類型 L4(TCP、UDP) L7(HTTP、HTTPS) 加權輪詢算法 源IP地址 支持 不支持 負載均衡器cookie 不涉及 支持 應用程序cookie 不涉及 支持 加權最少連接 源IP地址 支持 不支持 負載均衡器cookie 不涉及 支持 應用程序cookie 不涉及 支持 源IP地址 源IP地址 不涉及 不支持 負載均衡器cookie 不涉及 不支持 應用程序cookie 不涉及 不支持
一般建議:算法可以使用輪詢算法,四層會話保持使用源IP地址,七層使用負載均衡器cookie方式。
云監控EIP帶寬使用統計與ELB監控的網絡流出速率數據為何不一致?
以下兩種情況監控EIP帶寬使用統計與ELB監控的網絡流出速率數據不一致:
- 如果流量沒有超過EIP帶寬,EIP未被限流,云監控EIP帶寬使用統計外網訪問數據,而ELB不僅采集外網訪問數據,而且采集內網訪問的數據。
- 如果流量超過EIP帶寬,EIP會被限流,ELB內訪問的數據流量跟EIP訪問數據流量不是一個路徑,ELB內訪問數據流量不會被限流。
如何檢查彈性負載均衡會話保持不生效問題?
- 查看后端服務器組上是否開啟了會話保持。
- 查看后端云服務器的健康檢查狀態是否正常,如果異常,流量會切換到其他后端云服務器,導致會話保持失效。
- 如果選擇的是源IP算法,需要注意請求到達彈性負載均衡之前IP是否發生變化。
- 如果是HTTP或HTTPS監聽器,配置了會話保持,不用觀察session是否丟失,而需要注意發送的請求是否帶有cookie,如果帶有cookie,則觀察該cookie值是否發生了變化(因為7層會話保持基于cookie)。
每IP地址組支持多少IP地址?
每個IP地址組最多可添加300個IP地址和網段。
說明如果IP地址組未包含任何IP地址,當訪問控制選擇白名單時,則對應的負載均衡監聽器禁止任何IP地址訪問。
如何獲取來訪者的真實IP?
當客戶端通過ELB訪問后端服務器時,客戶端真實的IP地址會被ELB轉換,后端服務器獲取到的往往是ELB轉換后的客戶端IP地址。如果需要獲取到客戶端的真實IP,可以按如下方法操作。
- 七層服務(HTTP/HTTPS協議):需要對應用服務器進行配置,然后使用X-Forwarded-For的方式獲取來訪者的真實IP地址,詳見下文內容。
- 四層服務(TCP/UDP協議):開啟監聽器的“獲取客戶端IP”功能,詳見下文內容。
約束與限制
- 如果IP經過NAT,則只能獲取到NAT轉化后的IP地址,無法獲取到NAT轉化前的IP地址。
- 如果客戶端為容器,只能獲取到容器所在主機的IP地址,無法獲取容器的IP。
- 四層監聽器(TCP/UDP)開啟“獲取客戶端IP”功能之后,不支持同一臺服務器既作為后端服務器又作為客戶端的場景。
- 獨享型負載均衡的四層監聽器(TCP/UDP)默認開啟源地址透傳功能,無需手動開啟,且不支持關閉。
說明如果客戶端經過WAF+ELB訪問服務器,則還可以通過WAF直接獲取客戶端真實IP。
七層服務
針對七層服務(HTTP/HTTPS協議),需要對應用服務器進行配置,然后使用X-Forwarded-For的方式獲取來訪者的真實IP地址。
實的來訪者IP會被負載均衡放在HTTP頭部的X-Forwarded-For字段,格式如下:
X-Forwarded-For: 來訪者真實IP, 代理服務器1-IP, 代理服務器2-IP, ...
當使用此方式獲取來訪者真實IP時,獲取的第一個地址就是來訪者真實IP。
配置Apache服務器
- 安裝Apache 2.4。
例如在CentOS 7.5環境下,可以執行如下命令執行安裝:
yum install httpd
- 修改Apache的配置文件/etc/httpd/conf/httpd.conf,在最末尾添加以下配置信息。
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 100.125.0.0/16
圖 修改Apache的配置文件示例圖

說明將代理服務器的網段添加到 RemoteIPInternalProxy
。
共享型負載均衡需要添加的IP地址段為 100.125.0.0/16(100.125.0.0/16 是負載均衡服務保留地址,其他用戶無法分配到該網段內,不會存在安全風險)和高防IP地址段。多個IP地址段用逗號分隔。
獨享型負載均衡需要添加ELB實例關聯的VPC子網網段。
- 修改Apache的配置文件/etc/httpd/conf/httpd.conf,將日志輸出格式修改為如下所示(%a代表源IP地址):
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- 重啟Apache。
systemctl restart httpd
- 查看httpd的訪問日志,您可以獲取真實的來訪者IP。
配置Nginx服務器
例如在CentOS 7.5環境下,可以執行如下命令執行安裝:
- 運行以下命令安裝http_realip_module。
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
wget //nginx.org/download/nginx-1.17.0.tar.gz
tar zxvf nginx-1.17.0.tar.gz
cd nginx-1.17.0
./configure --prefix=/path/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
make
make install
- 打開nginx.conf文件。
vi /path/server/nginx/conf/nginx.conf
- 在以下配置信息后添加新的配置字段和信息。
在http或者server處,需要添加的配置字段和信息:
set_real_ip_from 100.125.0.0/16;
real_ip_header X-Forwarded-For;
圖 添加配置字段和信息示例圖

說明將代理服務器的網段添加到 set_real_ip_from
。
共享型負載均衡的IP地址段 100.125.0.0/16(100.125.0.0/16是負載均衡服務保留地址,其他用戶無法分配到該網段內,不會存在安全風險)和高防IP地址段。多個IP地址段用逗號分隔。
獨享型負載均衡需要添加ELB實例關聯的VPC子網網段。
- 啟動Nginx。
/path/server/nginx/sbin/nginx
- 查看Nginx的訪問日志,您可以獲取真實的來訪者IP。
cat /path/server/nginx/logs/access.log
配置Tomcat服務器
本教程中的Tomcat的安裝路徑為“/usr/tomcat/tomcat8/”。
- 登錄已安裝Tomcat的服務器。
- 執行如下命令,確定Tomcat已經正常運行。
ps -ef|grep tomcat
netstat -anpt|grep java
圖 正常運行結果示例

- 將server.xml文件中的className="org.apache.catalina.valves.AccessLogValve"模塊修改為如下內容。
vim /usr/tomcat/tomcat8/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false" />
圖 配置示例

- 執行如下命令,重啟Tomcat服務。
cd /usr/tomcat/tomcat8/bin && sh shutdown.sh && sh startup.sh
其中“/usr/tomcat/tomcat8/”為Tomcat安裝路徑,請根據實際情況替換。
圖 重啟Tomcat服務

- 執行如下命令,查看最新的日志。
如圖中紅框所示獲取到的非100.125網段的IP地址,即為獲取到的源IP地址。
cd /usr/tomcat/tomcat8/logs/
cat localhost_access_log..2021-11-29.txt
其中“localhost_access_log..2021-11-29.txt”為當天日志路徑,請根據實際情況替換。
圖 查詢源IP地址

配置Windows IIS服務器
本教程以Windows Server 2012配置IIS7為例介紹,其他版本操作可能略有不同。
- 下載并安裝IIS。
- 從第三方網站下載F5XForwardedFor.dll插件,并獲取x86和x64目錄下的F5XForwardedFor.dll插件拷貝到IIS服務具有訪問權限的目錄下,例如C:\F5XForwardedFor2008。
- 打開IIS管理器,選擇“模塊 > 配置本機模塊”注冊拷貝的2個插件。
圖 選擇模塊選項

圖 配置本機模塊

- 單擊“注冊”,分別注冊x86和x64插件。
圖 注冊插件

- 在“模塊”頁面,確認注冊的模塊名稱出現在列表中。
圖 確認注冊成功

- 選擇IIS管理器主頁的“ISAPI篩選器”,為2個插件授權運行ISAPI和CGI擴展。
圖 添加授權

- 選擇“ISAPI和CGI限制”,為2個插件設置執行權限。
圖 允許執行

- 單擊主頁的“重新啟動”,重啟IIS服務,重啟后配置生效。
圖 重啟IIS服務

四層服務
針對四層服務(TCP/UDP協議):開啟監聽器的“獲取客戶端IP”功能。
注意
開啟此功能后,執行后端服務器遷移任務時,可能出現流量中斷(例如單向下載、推送類型的流量)。所以后端服務器遷移完成后,需要通過報文重傳來恢復流量。
監聽器開啟此功能后,后端服務器不能作為客戶端訪問此監聽器。
如果監聽器之前已經添加了后端服務器、并且開啟了健康檢查功能,開啟“獲取客戶端IP”功能會重新上線后端服務器,新建流量會有1-2個健康檢查間隔的中斷。
1、
1)開啟監聽器的“獲取客戶端IP”功能。
2)登錄管理控制臺。在管理控制臺左上角選擇區域和項目。
3)在頁面中選擇“網絡 > 彈性負載均衡”。
4)在“負載均衡器”界面,單擊需要操作的負載均衡名稱。
5)切換到“監聽器”頁簽。
- 新增場景:單擊“添加監聽器”。
- 修改場景:在需要修改的監聽器名稱右側所在行的操作列,單擊“編輯”。
6)開啟“獲取客戶端IP”開關。
7)設置后端服務器的安全組、網絡ACL、操作系統和軟件的安全規則,使客戶端的IP地址能夠訪問后端服務器。
說明
開啟“獲取客戶端IP”之后,不支持同一臺服務器既作為后端云主機又作為客戶端的場景。如果后端云主機和客戶端使用同一臺云主機,且開啟“獲取客戶端IP”,則后端云主機會根據報文源IP為本地IP判定該報文為本機發出的報文,無法將應答報文返回給ELB,最終導致回程流量不通。
2、
開啟“獲取客戶端IP”之后,不支持同一臺服務器既作為后端服務器又作為客戶端的場景。如果后端服務器和客戶端使用同一臺服務器,且開啟“獲取客戶端IP”,則后端服務器會根據報文源IP為本地IP判定該報文為本機發出的報文,無法將應答報文返回給ELB,最終導致回程流量不通。