今天有这么一个需求,需要为之前配置的weblogic集群来配置负载均衡,因为对nginx有所了解,并且nginx在反向代理与负载均衡这方面做得都很好,所以用nginx来为weblogic做负载均衡。
在redhat上部署安装nginx
检查安装环境依赖
# rpm -qa gcc # rpm -qa zlib # rpm -qa pcre # rpm -qa zlib-devel # rpm -qa pcre-devel
如果没有上述几个环境,则需要安装,
并且zlib版本要与zlib-devel版本对应
pcre版本要与pcre-devel版本对应
pcre版本要与pcre-devel版本对应
安装包可从下面链接获取,下载完上传到服务器,以root用户安装
http://rpmfind.net/
安装nginx
解压nginx压缩包
#tar -zxvf nginx-1.12.0.tar.gz #cd nginx-1.12.0
开始编译安装
检查安装环境
# ./configure --prefix=/ieswbsvr/bea/nginx/
编译
#make
安装
#make install
安装完成后,修改nginx绑定的端口
#cd /ieswbsvr/bea/nginx/conf #vi nginx.conf
将端口由80 改为8848
创建nginx启动脚本
vi /etc/init.d/nginx
脚本内容如下:
#! /bin/sh
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/ieswbsvr/bea/nginx/sbin/$NAME
CONFIGFILE=/ieswbsvr/bea/nginx/conf/$NAME.conf
PIDFILE=/ieswbsvr/bea/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
kill -INT `cat $PIDFILE` || echo -n "nginx not running"
}
do_reload() {
kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
这样,我们就可以使用
service nginx start service nginx stop service nginx restart
来控制nginx了。
配置nginx负载均衡weblogic
在weblogic上我们已经配置了相应的集群,这样我们就可以配置负载均衡了。
在nginx的conf文件夹下创建vhsot文件夹,将站点的配置文件统一都放到vhost文件夹下,新建站点配置文件如下:
upstream myproject{
server 192.168.136.131:8001 weight=3;
server 192.168.136.131:7006;
#server 192.168.136.131:8003;
#server 192.168.136.131:8005;
#server 192.168.136.131:8007;
ip_hash;
}
server{
listen 8849;
server_name 192.168.136.131;
access_log logs/e200pro.access.log;
error_log logs/e200pro.error.log;
#root html;
#index index.html,index.htm,index.jsp;
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
location /{
proxy_pass http://myproject;
}
}
将上述配置文件include到nginx.conf的http节点下就可以了,启动nginx就实现了负载均衡。
存在的问题
关于session共享的问题,目前只是采用了nginx的ip_hash算法实现了session共享,但是ip_hash有局限性,以后还有改进配置
参考文章
nginx 负载均衡session复制解决方案