负载均衡的实现方式有很多种,这里只介绍三种相对来说成本较低的方案(维护成本以及费用成本)weblogic自带的proxy、apache、nginx
1、weblogic自带的proxy方式:
1)需要新建proxy服务器
[img]http://dl2.iteye.com/upload/attachment/0089/3339/6d5b83c6-a56d-3528-b259-4b964fcb27fe.png[/img]
2)配置proxy的ip、端口,这里设置为7100
[img]http://dl2.iteye.com/upload/attachment/0089/3341/88ed6030-928c-3d63-a647-03f83f0954e3.png[/img]
3)配置SSL的主机名验证为“无”
[img]http://dl2.iteye.com/upload/attachment/0089/3353/f541796b-cdb8-3396-8696-e34d6e9761c8.png[/img]
4)添加到machine管理
[img]http://dl2.iteye.com/upload/attachment/0089/3343/f99bb13e-9d2a-39d5-8e46-3ff6b9ae9739.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0089/3345/3b26b8df-91ca-30b1-8a2a-75a9b0e6071d.png[/img]
5)部署proxy应用
[img]http://dl2.iteye.com/upload/attachment/0089/3347/2c4f5722-6d5a-3d96-a08c-e7b2e35497ff.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0089/3349/4ba47497-cca1-3aac-be5e-aa991904658c.png[/img]
6)在服务器列表中启动三个server
[img]http://dl2.iteye.com/upload/attachment/0089/3351/a88b65a3-9eed-3004-ba2c-80a1fb08f5f2.png[/img]
7)测试
[img]http://dl2.iteye.com/upload/attachment/0089/3355/f9f8041a-b06d-3a5e-8350-9351069083b7.png[/img]
proxy应用的代码我压缩打包上传了
主要就是配置web的servlet,拦截所有的请求,weblogic自带的配置如下:
实际上,这个proxy内部会检测server的状态、负载情况,然后根据算法再将请求转发给具体的server处理。
2、apache方式:
1)下载apache,安装过程就不介绍了。下载地址为:
[url]http://httpd.apache.org/download.cgi[/url]
2)添加weblogic插件:
weblogic11g的插件位置是:
D:\server\weblogic11\wlserver_10.3\server\plugin\win\32
注意这里与weblogic较早的版本位置不同。具体库所在目录根据操作系统版本及位数决定,我的是32位操作系统,所以就是这个目录下的mod_wl_22.so复制到apache的modules文件夹下
3)配置apache
在原有的配置最后增加如下片段
主要就是设置WebLogicCluster,根据集群的server列表来设置。
注意:我这里设置的Listen端口号是8001,所以下面测试访问这个端口
4)测试
[img]http://dl2.iteye.com/upload/attachment/0089/3359/2e8ffb95-e55d-3706-abde-f2bafefe3ef9.png[/img]
3、nginx方式:
1)下载nginx并安装(我这里是windows环境,下载地址是:
[url]http://nginx.org/en/download.html[/url])
2)简单配置nginx:
修改nginx/conf/nginx.conf文件,开发、学习情况,只需要简单的增加如下配置即可:
具体的意义,可以从网上找资料,这里不做详解。
3)运行
直接双击nginx.exe就可以了。
4)测试:
我这里配置的listen端口号是8001,测试如图所示:
[img]http://dl2.iteye.com/upload/attachment/0089/3636/db1c3f99-5e93-370f-9c17-e8e7d438a1e6.png[/img]
可以查看进程列表,有nginx的进程在运行,同时可以查看nginx的logs目录下的access.log,http请求的日志都能看到。我的日志也贴上吧:
这篇仅仅介绍负载分发的几种方式,也都是简单的配置,实际环境下还需要做相关性能测试以及配置动静分离,减少后端服务的压力。
下一篇介绍WebLogic集群中涉及的概念、原理……敬请期待。
1、weblogic自带的proxy方式:
1)需要新建proxy服务器
[img]http://dl2.iteye.com/upload/attachment/0089/3339/6d5b83c6-a56d-3528-b259-4b964fcb27fe.png[/img]
2)配置proxy的ip、端口,这里设置为7100
[img]http://dl2.iteye.com/upload/attachment/0089/3341/88ed6030-928c-3d63-a647-03f83f0954e3.png[/img]
3)配置SSL的主机名验证为“无”
[img]http://dl2.iteye.com/upload/attachment/0089/3353/f541796b-cdb8-3396-8696-e34d6e9761c8.png[/img]
4)添加到machine管理
[img]http://dl2.iteye.com/upload/attachment/0089/3343/f99bb13e-9d2a-39d5-8e46-3ff6b9ae9739.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0089/3345/3b26b8df-91ca-30b1-8a2a-75a9b0e6071d.png[/img]
5)部署proxy应用
[img]http://dl2.iteye.com/upload/attachment/0089/3347/2c4f5722-6d5a-3d96-a08c-e7b2e35497ff.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0089/3349/4ba47497-cca1-3aac-be5e-aa991904658c.png[/img]
6)在服务器列表中启动三个server
[img]http://dl2.iteye.com/upload/attachment/0089/3351/a88b65a3-9eed-3004-ba2c-80a1fb08f5f2.png[/img]
7)测试
[img]http://dl2.iteye.com/upload/attachment/0089/3355/f9f8041a-b06d-3a5e-8350-9351069083b7.png[/img]
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处理。
2、apache方式:
1)下载apache,安装过程就不介绍了。下载地址为:
[url]http://httpd.apache.org/download.cgi[/url]
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)测试
[img]http://dl2.iteye.com/upload/attachment/0089/3359/2e8ffb95-e55d-3706-abde-f2bafefe3ef9.png[/img]
3、nginx方式:
1)下载nginx并安装(我这里是windows环境,下载地址是:
[url]http://nginx.org/en/download.html[/url])
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://weblogic;
}
……
}
具体的意义,可以从网上找资料,这里不做详解。
3)运行
直接双击nginx.exe就可以了。
4)测试:
我这里配置的listen端口号是8001,测试如图所示:
[img]http://dl2.iteye.com/upload/attachment/0089/3636/db1c3f99-5e93-370f-9c17-e8e7d438a1e6.png[/img]
可以查看进程列表,有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)"
这篇仅仅介绍负载分发的几种方式,也都是简单的配置,实际环境下还需要做相关性能测试以及配置动静分离,减少后端服务的压力。
下一篇介绍WebLogic集群中涉及的概念、原理……敬请期待。