今天有这么一个需求,需要为之前配置的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复制解决方案