作為示例,我們可以介紹以下 LVS 拓撲:
首先,您需要一個配置良好的 LVS 拓撲。在本文件的其餘部分,我們將假設已完成所有系統配置。這種拓撲通常在 DMZ 架構中實現。有關 LVS NAT 拓撲和系統配置的更多資訊,請閱讀 Joseph Mack LVS HOWTO。
主要架構元件
- LVS 路由器:擁有負載平衡 IP 類路由(192.168.100.0/24)。
- 網路路由器 :整個內部網路的預設路由器。所有 LAN 工作站都透過此 IP 地址進行處理。
- 網路DNS伺服器:參考內網IP拓撲。
- SMTP 伺服器:接收郵件提醒的 SMTP 伺服器。
- 伺服器池:託管負載平衡服務的伺服器集合。
伺服器池規格
在此示例配置中,我們有 2 個伺服器池:
- 伺服器池 1:託管 HTTP 和 SSL 服務。每臺伺服器擁有兩臺應用伺服器(IBM WEBSPHERE 和 BEA WEBLOGIC)
- 伺服器池 2:託管 SMTP 服務。
Keepalived 配置
現在,您可以根據 LVS 拓撲配置 Keepalived 守護程式。整個配置在 /etc/keepalived/keepalived.conf 檔案中完成。在我們的案例研究中,此檔案如下所示:
# Configuration File for keepalived global_defs { notification_email { admin@domain.com 0633225522@domain.com } notification_email_from keepalived@domain.com smtp_server 192.168.200.20 smtp_connect_timeout 30 lvs_id LVS_MAIN } virtual_server 192.168.200.15 80 { delay_loop 30 lb_algo wrr lb_kind NAT persistence_timeout 50 protocol TCP sorry_server 192.168.100.100 80 real_server 192.168.100.2 80 { weight 2 HTTP_GET { url { path /testurl/test.jsp digest ec90a42b99ea9a2f5ecbe213ac9eba03 } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } connect_timeout 3 retry 3 delay_before_retry 2 } } real_server 192.168.100.3 80 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } connect_timeout 3 retry 3 delay_before_retry 2 } } } virtual_server 192.168.200.15 443 { delay_loop 20 lb_algo rr lb_kind NAT persistence_timeout 360 protocol TCP real_server 192.168.100.2 443 { weight 1 TCP_CHECK { connect_timeout 3 } } real_server 192.168.100.3 443 { weight 1 TCP_CHECK { connect_timeout 3 } } } virtual_server 192.168.200.15 25 { delay_loop 15 lb_algo wlc lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.100.4 25 { weight 1 TCP_CHECK { connect_timeout 3 } } real_server 192.168.100.5 25 { weight 2 TCP_CHECK { connect_timeout 3 } } }
根據此配置示例,Keepalived守護程序將使用以下資訊驅動核心:
-
LVS 伺服器將擁有名稱:LVS_MAIN
通知:
- SMTP 伺服器為:192.168.200.20
- SMTP 連線超時設定為:30 秒
- 通知電子郵件將傳送至:admin@domain.com & 0633225522@domain.com
-
負載平衡服務:
-
HTTP: VIP 192.168.200.15 埠 80
- 負載平衡:使用加權輪詢排程程式和 NAT 轉發。每個 TCP 服務的連線永續性設定為 50 秒。如果您使用的是 Linux 核心 2.2,則需要指定 NAT 網路掩碼來定義 IPFW 偽裝粒度(nat_mask 關鍵字)。延遲迴圈設定為 30 秒
- 抱歉伺服器:如果所有真實伺服器都從 VS 的伺服器池中刪除,我們會新增抱歉伺服器 192.168.100.100 埠 80 來滿足客戶端請求。
- 真實伺服器 192.168.100.2 埠 80 的權重將為 2。故障檢測將基於 2 個 URL 上的 HTTP_GET。服務連線超時將設定為 3 秒。真實伺服器在重試 3 次後將被視為已關閉。守護程序將等待 2 秒後再重試。
- 真實伺服器 192.168.100.3 埠 80 的權重將為 1。故障檢測將基於 1 個 URL 上的 HTTP_GET。服務連線超時將設定為 3 秒。真實伺服器在重試 3 次後將被視為已關閉。守護程序將等待 2 秒後再重試。
-
SSL: VIP 192.168.200.15 埠 443
- 負載平衡:使用帶 NAT 轉發的 Round Robin 排程程式。每個 TCP 服務上的連線永續性設定為 360 秒。延遲迴圈設定為 20 秒
- 真實伺服器 192.168.100.2 埠 443 的權重將為 2。故障檢測將基於 TCP_CHECK。3 秒連線超時後,真實伺服器將被視為已關閉。
- 真實伺服器 192.168.100.3 埠 443 的權重將為 2。故障檢測將基於 TCP_CHECK。3 秒連線超時後,真實伺服器將被視為已關閉。
-
SMTP:VIP 192.168.200.15 埠 25
- 負載平衡:在 NAT 拓撲中使用加權最小連線排程演算法,連線永續性設定為 50 秒。延遲迴圈設定為 15 秒
- 真實伺服器 192.168.100.4 埠 25 的權重將為 1。故障檢測將基於 TCP_CHECK。3 秒連線超時後,真實伺服器將被視為已關閉。
- 真實伺服器 192.168.100.5 埠 25 的權重將為 2。故障檢測將基於 TCP_CHECK。3 秒連線超時後,真實伺服器將被視為已關閉。
-
對於 SSL 伺服器健康檢查,我們可以使用 SSL_GET 檢查器。相應真實伺服器的配置塊將如下所示:
virtual_server 192.168.200.15 443 { delay_loop 20 lb_algo rr lb_kind NAT persistence_timeout 360 protocol TCP real_server 192.168.100.2 443 { weight 1 SSL_GET { url { path /testurl/test.jsp digest ec90a42b99ea9a2f5ecbe213ac9eba03 } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } connect_timeout 3 retry 3 delay_before_retry 2 } } real_server 192.168.100.3 443 { weight 1 SSL_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } connect_timeout 3 retry 3 delay_before_retry 2 } } }
要透過 URL 生成總和,只需按以下步驟操作:
[root@lvs /root]# genhash –s 192.168.100.2 –p 80 –u /testurl/test.jsp --------------------------[ HTTP Header Buffer ]-------------------------- 0000 48 54 54 50 2f 31 2e 31 - 20 34 30 31 20 55 6e 61 HTTP/1.1 401 Una 0010 75 74 68 6f 72 69 7a 65 - 64 0d 0a 44 61 74 65 3a uthorized..Date: 0020 20 4d 6f 6e 2c 20 32 33 - 20 41 70 72 20 32 30 30 Mon, 23 Apr 200 0030 31 20 31 35 3a 34 31 3a - 35 34 20 47 4d 54 0d 0a 1 15:41:54 GMT.. 0040 41 6c 6c 6f 77 3a 20 47 - 45 54 2c 20 48 45 41 44 Allow: GET, HEAD 0050 0d 0a 53 65 72 76 65 72 - 3a 20 4f 72 61 63 6c 65 ..Server: Oracle 0060 5f 57 65 62 5f 4c 69 73 - 74 65 6e 65 72 2f 34 2e _Web_Listener/4. 0070 30 2e 38 2e 31 2e 30 45 - 6e 74 65 72 70 72 69 73 0.8.1.0Enterpris 0080 65 45 64 69 74 69 6f 6e - 0d 0a 43 6f 6e 74 65 6e eEdition..Conten 0090 74 2d 54 79 70 65 3a 20 - 74 65 78 74 2f 68 74 6d t-Type: text/htm 00a0 6c 0d 0a 43 6f 6e 74 65 - 6e 74 2d 4c 65 6e 67 74 l..Content-Lengt 00b0 68 3a 20 31 36 34 0d 0a - 57 57 57 2d 41 75 74 68 h: 164..WWW-Auth 00c0 65 6e 74 69 63 61 74 65 - 3a 20 42 61 73 69 63 20 enticate: Basic 00d0 72 65 61 6c 6d 3d 22 41 - 43 43 45 53 20 20 20 20 realm="ACCES 00e0 22 0d 0a 43 61 63 68 65 - 2d 43 6f 6e 74 72 6f 6c "..Cache-Control 00f0 3a 20 70 75 62 6c 69 63 - 0d 0a 0d 0a : public.... ------------------------------[ HTML Buffer ]----------------------------- 0000 3c 48 54 4d 4c 3e 3c 48 - 45 41 44 3e 3c 54 49 54 <HTML><HEAD><TIT 0010 4c 45 3e 55 6e 61 75 74 - 68 6f 72 69 7a 65 64 3c LE>Unauthorized< 0020 2f 54 49 54 4c 45 3e 3c - 2f 48 45 41 44 3e 0d 0a /TITLE></HEAD>.. 0030 3c 42 4f 44 59 3e 54 68 - 69 73 20 64 6f 63 75 6d <BODY>This docum 0040 65 6e 74 20 69 73 20 70 - 72 6f 74 65 63 74 65 64 ent is protected 0050 2e 20 20 59 6f 75 20 6d - 75 73 74 20 73 65 6e 64 . You must send 0060 0d 0a 74 68 65 20 70 72 - 6f 70 65 72 20 61 75 74 ..the proper aut 0070 68 6f 72 69 7a 61 74 69 - 6f 6e 20 69 6e 66 6f 72 horization infor 0080 6d 61 74 69 6f 6e 20 74 - 6f 20 61 63 63 65 73 73 mation to access 0090 20 69 74 2e 3c 2f 42 4f - 44 59 3e 3c 2f 48 54 4d it.</BODY></HTM 00a0 4c 3e 0d 0a - L>.. -----------------------[ HTML MD5 final resulting ]----------------------- MD5 Digest : ec90a42b99ea9a2f5ecbe213ac9eba03
唯一要做的就是複製生成的 MD5 摘要值並將其貼上到您的 Keepalived 配置檔案中作為摘要值關鍵字。