1. What is loadbalancer ?
LoadBalancer 可以將來自客戶端的請求分發到不同的服務器,通過將一系列的請求轉發到不同的服務器可以提高服務器的性能,並可以自動地尋找最優的服務器轉發請求,這樣不僅提高了系統性能,同時達到了負載均衡的目的,滿足了用戶需求,因此 LoadBalancer 在應用場景中一般處於 web 服務器的前端,用來均衡發到 web 服務器的請求量,均衡負載,提高系統性能。LoadBalancer 可以連接多個 web server,從而將多個 web server 組成一個集群(cluster),集群中負載的分配通過 loadBalancer 進行控制和管理。當然為了更好地進行負載均衡,LoadBalancer 也可以構建為一個集群,使用 LoadBalancer 構建的 web server cluster
2. How to configure loadbalancer ?
WebSphere Edge Load Balancer 在 Linux 環境下的安裝
我們需要在 Linux 環境下安裝 LoadBalancer,Linux 的系統環境為 64bit 的 Redhat6.2,將要安裝的 LoadBalancer 版本為 V8.0.0.6。因為 LoadBalancer V8.0 只有在升級到 V8.0.0.6 之后才可以正常使用,所以我們除了要安裝 LoadBalancer8.0 之外,還要將其升級為 V8.0.0.6。有圖形界面和命令行兩種安裝方式。
在安裝 LoadBalancer 之前,首先要安裝 IBM Installation Manager。目前可以在 Linux 64bit 環境下正常運行的 IM 最低版本為 1.6,建議使用。因為在命令行界面使用 IM 安裝和在圖形界面使用 IM 安裝步驟基本一致,為了簡便起見,下面只介紹 LoadBalancer 在圖像界面下的安裝。
LoadBalancer 的圖形界面安裝
- 啟動 IM1.6。
- 在 IM1.6 中添加 LoadBalancer V8.0 的 repository。
- 測試是否正確連接。
- 點擊 IM 界面上的 Install 按鈕啟動安裝界面。
- 按照步驟進行相應的選擇,執行安裝,直到安裝成功。
- 在 IM1.6 中添加 fixpack6 的 repository。
- 測試連接成功后,在 IM 安裝界面選擇 Update 按鈕更新現有的 LoadBalancer V8.0。
- 按照步驟提示進行相應選擇,直到更新成功。
使用 WebSphere Edge Load Balancer 構建 IBM Http Server Cluster
如圖 1 所示,可以使用 LoadBalancer 將多個 web Server 構建為一個 Cluster,同時 LoadBalancer 也可以構成一個 Cluster,這里我們以使用一個 LoadBalancer 將兩台 HTTP Server 構成一個集群為例介紹在 Linux 環境下如何使用 WebSphere Edge Load Balancer 構建 IBM Http Server Cluster。
前期准備
- 為了構建 HTTP Server Cluster,首先需要有兩台裝有 HTTP Server 的 VM. 同時需要有一台裝有 LoadBalancer 的 VM。因為這三台機器要互相交互,所以要保證它們之間可以互相 ping 通並且在同一個網段內。因此需要在每一台機器的 hosts 文件中添加進去另外兩台機器的 ip 和 hostname,以便這三台機器之間進行交互。
- 需要一個同一網段內的另一個沒有被任何 VM 占用的 IP 作為 Cluster 的 IP。為了確保所使用的 IP 沒有被任何 VM 占用,可以在 Windows 的終端內輸入 nslookup IP 命令進行查詢,如果顯示如法查找到該 IP,表示該 IP 是可以作為 Cluster 的 IP 被使用的。
- 需要將 Cluster IP 作為一個虛擬網絡 IP 配置到 HTTP Server 的虛擬網卡上。需要在終端執行以下命令:
# ifconfig lo:1 Cluster IP netmask 255.255.255.255 up
在兩台 HTTP Server 上都需要執行上述配置命令,這樣配置好的 Cluster 才可以通過 Cluster IP 將服務器請求分發到兩台 HTTP Server 上完成負載均衡。
- 需要啟動 HTTP Server。在裝有 HTTP Server 的 VM 上,進入到 HTTP Server 的安裝目錄,進入 bin 目錄,運行 # ./apachect1 命令啟動 HTTP Server。
使用 LoadBalancer 配置 HTTP Server Cluster
- 執行命令 dsserver 啟動服務。注意執行完該命令后不會出現任何提示,但是從 server.log 里可以看到系統啟動信息。Log 文件位於 LoadBalancer 安裝目錄下的 servers/logs/dispatcher 子目錄下面。啟動后 log 文件內容如圖 2 所示。不要重復執行 dsserver 命令,第二次執行時候會提示:Error: can not create registry on port 10,099. 此時不能認為是出現錯誤,因為再次看 log 就會發現是因為 Server 已經啟動緣故。如圖 3 所示。
圖 2. dsserver 啟動后 log 文件內容
圖 3. 重復啟動 dsserver 后 log 文件內容
- 執行 lbadmin 命令啟動 LoadBalancer 的配置界面,如圖 4 所示。
圖 4. LoadBalancer 配置界面
- 添加本機為 LoadBalancer 的 Host,右擊 Dispatcher,選擇 Connect to Host …,這時就會將本機添加為 Host 主機。
- 右擊 Host,選擇 start Executor, 這樣可以啟動執行器。
- 啟動執行器之后,右擊執行器 Executor 選擇 Add Cluster 選項開始構建 cluster。
- 在彈出的窗口中輸入 Cluster name , Cluster IP 和 LoadBalancer 的 Host IP 保存並退出。
- 右擊在第 6 步中新建的 Cluster, 選擇 Add port 為 HTTP Cluster 添加端口號。通過 Cluster IP 和該端口號可以將來自服務器對該端口的應用請求分別分發到不同的 HTTP Server 上。在該節中我們構建的是 HTTP Cluster,所以將該端口號填為 80,即 HTTP 的默認端口。
- 右擊 Port 並選擇 Add Server,分別將兩個 HTTP Server 添加到該 Cluster 中。
- 右擊 Host 選擇 Start Manager 可以啟動 Cluster。
IBM HTTP Server 的配置
為了達到能夠通過 Cluster IP 來分發負載的功能,在每個 HTTP Server 上都需要進行相應的配置。配置完成后該 HTTP Server 不僅能夠偵聽來自本 IP 80 端口的請求,也可以偵聽來自 Cluster IP 80 端口的請求。
在安裝有 HTTP Server 的機器上,進入 HTTP Server 的安裝目錄,默認為 /opt/IBM/HTTPServer/,進入配置文件子目錄 conf,編輯配置文件 Httpd.conf 將 Listen 端口處編輯為 Listen HTTPServer IP:80 和 Listen Cluster IP:80. 如圖 5 所示。
圖 5. 配置 HTTP Server 時偵聽 80 端口
重新啟動 HTTP Server,至此使用 LoadBalancer 構建 HTTP Server Cluster 的步驟已經完成,這也是為下一節使用 LoadBalancer 構建 Security IBM HTTP Cluster 做的准備和鋪墊,所以在下節構建好 Security IBM HTTP Server Cluster 后將一並描述如何測試構建起來的 Cluster 是否成功。
使用 WebSphere Edge Load Balancer 構建 Security IBM Http Server Cluster
在上一節構建起來的 Http Server Cluster 的基礎上,我們進一步來構建 Security IBM HTTP Server Cluster。
前期准備工作由於上節已經做過,在該節可以忽略。接着我們使用 LoadBalance 配置 Security HTTP Server Cluster,前 6 步與上節相同,在第 7 步添加端口時,要添加 Security 端口,默認值為 443。之后在該端口下添加 HTTP Server,添加完成后啟動 Manager。配置 HTTP Server Cluster 與配置 Security HTTP Server Cluster 的主要區別在於對 HTTP Server 的配置。
由於我們所要配置的是 Security HTTP Cluster,因此必須保證每個 HTTP Server 節點都可以通過 https 訪問主機。所以首先要在 HTTP Server 的機器上生成進行安全訪問是使用的 key 文件。
HTTP Server 的配置
- 進入 HTTP Server 的安裝目錄,進入 bin 子目錄下,執行如下命令可以生成名為 ihsserverkd 的 key 文件。
# ./gsk7cmd -keydb -create -db ihsserverkdb -pw passw0rd -stash
執行完命令后,在 bin 目錄下將會生成 ihsserverkdb.kdb 和 ihsserverkdb.rdb 文件,如圖 6 所示。上述命令中,ihsserverkdb 為 key 文件的名字,passw0rd 為 keydb 的密碼,當然可以根據個人的喜好進行改變。
圖 6. 產生 key 文件
- 編輯 HTTP Server 配置文件,開啟對安全端口 443 的偵聽。進入 HTTP Server 的安裝目錄,默認為 /opt/IBM/HTTPServer/, 進入配置文件子目錄 conf,編輯配置文件 Httpd.conf,在 Listen 端口處添加 Listen HTTPServer IP:443 和 Listen Cluster IP:443 如圖 7 所示。
圖 7. 配置 HTTP Server 時偵聽 443 端口
- 編輯 HTTP Server 配置文件,添加 443 虛擬端口。進入 conf 配置子目錄,編輯 Httpd.conf 文件,在該文件最后添加代碼為 HTTP Server 的本機 IP 和 Cluster IP 都開啟 443 虛擬端口,否則會導致訪問不成功。添加后如圖 8 所示。
圖 8. 添加 443 虛擬端口
- 編輯 HTTP Server 配置文件,添加 ssl key 文件。
編輯 Httpd.conf 文件,在該文件最后添加如下代碼來指定訪問時所要使用的 ssl key 文件。
KeyFile "/opt/IBM/HTTPServer/bin/ihsserverkdb.kdb"
添加后如圖 9 所示。
圖 9. 在 httpd.conf 文件中添加 key 文件
- 保存 httpd.conf 文件並退出。
- 重新啟動 HTTP Server。
- 在另一台 HTTP Server 上也執行與步驟 1-6 同樣的操作。
至此使用 LoadBalancer 構建 Security HTTP Server Cluster 的步驟已經完成,下面測試下構建起來的 Security HTTP Server Cluster 是否能夠正常工作。
測試 Security IBM HTTP Server Cluster
可以通過以下四個方面測試 Security IBM HTTP Cluster 的構建是否成功。
- 通過 LoadBalancer 的配置頁面查看 Security HTTP Server Cluster,單擊 Refresh Statistics 按鈕,觀察 HTTP Server 的負載信息是否會發生變化,如圖 10 所示。如果負載信息會發生變化說明 Security IBM HTTP Server Cluster 構建成功。
圖 10. Security HTTP Server Cluster 配置完成后的 LoadBalancer 頁面
- 查看管理信息輸出,在終端輸入如下命令,可以看到構建好的 Cluster 的詳細信息,如圖 11 所示。從圖上可以看到 HTTP Server 的詳細信息和狀態。
dscontrol manager rep
圖 11. LoadBalancer 的管理信息圖
- 查看 advisor report 的輸出,在終端輸入如下命令查看端口 443 的信息,如圖 12 所示。
Dscontrol advisor report https 443
圖 12. Security HTTP Server Cluster 信息
- 在瀏覽器中輸入 https://ClusterIP:443,IHS 的歡迎頁如果可以出現就說明 Security HTTP Server Cluster 配置成功。