負載均衡的實現方式有不少種,這裏只介紹三種相對來講成本較低的方案(維護成本以及費用成本)weblogic自帶的proxy、apache、nginx
一、weblogic自帶的proxy方式:
1)須要新建proxy服務器
2)配置proxy的ip、端口,這裏設置爲7100
3)配置SSL的主機名驗證爲「無」
4)添加到machine管理
5)部署proxy應用
6)在服務器列表中啓動三個server
7)測試
proxy應用的代碼我壓縮打包上傳了
主要就是配置web的servlet,攔截全部的請求,weblogic自帶的配置以下:
- <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
- <web-app>
- <servlet>
- <servlet-name>HttpClusterServlet</servlet-name>
- <servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
- <init-param>
- <param-name>WebLogicCluster</param-name>
- <param-value>127.0.0.1:7101|127.0.0.1:7102</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.jsp</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.jspx</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.htm</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.html</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.jpd</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.jcx</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.dtf</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>HttpClusterServlet</servlet-name>
- <url-pattern>*.jws</url-pattern>
- </servlet-mapping>
- </web-app>
實際上,這個proxy內部會檢測server的狀態、負載狀況,而後根據算法再將請求轉發給具體的server處理。
二、apache方式:
1)下載apache,安裝過程就不介紹了。下載地址爲:
http://httpd.apache.org/download.cgi
2)添加weblogic插件:
weblogic11g的插件位置是:
D:\server\weblogic11\wlserver_10.3\server\plugin\win\32
注意這裏與weblogic較早的版本位置不一樣。具體庫所在目錄根據操做系統版本及位數決定,個人是32位操做系統,因此就是這個目錄下的mod_wl_22.so複製到apache的modules文件夾下
3)配置apache
在原有的配置最後增長以下片斷
- Listen 8001
- ######################## weblogic plugin ##########################
- LoadModule weblogic_module modules/mod_wl_22.so
-
- <IfModule mod_weblogic.c>
- WebLogicCluster 127.0.0.1:7101,127.0.0.1:7102
- MatchExpression */servlet/*
- MatchExpression *.jsp
- MatchExpression *.action
- Debug OFF
- </IfModule>
主要就是設置WebLogicCluster,根據集羣的server列表來設置。
注意:我這裏設置的Listen端口號是8001,因此下面測試訪問這個端口
4)測試
三、nginx方式:
1)下載nginx並安裝(我這裏是windows環境,下載地址是:
http://nginx.org/en/download.html)
2)簡單配置nginx:
修改nginx/conf/nginx.conf文件,開發、學習狀況,只須要簡單的增長以下配置便可:
- upstream weblogic {
- server 127.0.0.1:7101 weight=10;
- server 127.0.0.1:7102 weight=10;
- }
-
- server {
- listen 8001;
- server_name weblogic;
-
- #charset koi8-r;
-
- #access_log logs/host.access.log main;
-
- location / {
- #root html;
- #index index.html index.htm;
- proxy_pass http:
- }
- ……
- }
具體的意義,能夠從網上找資料,這裏不作詳解。
3)運行
直接雙擊nginx.exe就能夠了。
4)測試:
我這裏配置的listen端口號是8001,測試如圖所示:
能夠查看進程列表,有nginx的進程在運行,同時能夠查看nginx的logs目錄下的access.log,http請求的日誌都能看到。個人日誌也貼上吧:
- 127.0.0.1 - - [16/Sep/2013:16:55:12 +0800] "GET /weblogic HTTP/1.1" 499 0 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:55:15 +0800] "GET /weblogic HTTP/1.1" 499 0 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:56:23 +0800] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:50 +0800] "GET /mini-web-cluster HTTP/1.1" 302 273 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:50 +0800] "GET /mini-web-cluster/ HTTP/1.1" 302 311 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:51 +0800] "GET /mini-web-cluster/account/user.action HTTP/1.1" 302 297 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /mini-web-cluster/login.action HTTP/1.1" 200 2416 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /mini-web-cluster/css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8001/mini-web-cluster/login.action" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /mini-web-cluster/css/yui.css HTTP/1.1" 304 0 "http://127.0.0.1:8001/mini-web-cluster/login.action" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /mini-web-cluster/js/validate/jquery.validate.js HTTP/1.1" 304 0 "http://127.0.0.1:8001/mini-web-cluster/login.action" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /mini-web-cluster/js/validate/messages_cn.js HTTP/1.1" 304 0 "http://127.0.0.1:8001/mini-web-cluster/login.action" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /mini-web-cluster/js/jquery.js HTTP/1.1" 304 0 "http://127.0.0.1:8001/mini-web-cluster/login.action" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- 127.0.0.1 - - [16/Sep/2013:16:58:52 +0800] "GET /favicon.ico HTTP/1.1" 404 1214 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
這篇僅僅介紹負載分發的幾種方式,也都是簡單的配置,實際環境下還須要作相關性能測試以及配置動靜分離,減小後端服務的壓力。