当前位置: > Linux服务器 > nginx >

nginx、jboss配置负载均衡

时间:2015-12-02 16:26来源:linux.it.net.cn 作者:IT
Jdk安装
首先安装JDK,执行命令./ jdk-6u27-linux-x64.bin,JDK安装目录为当前指定目录或者是./jdk-6u33-linux-x64-rpm.bin,或者(如果是rpm格式)执行 rpm –ivh jdk-6u33-linux-amd64.rpm 默认安装目录为/usr/java这个目录下面。
nginx安装及配置
nginx安装
适用的环境Redhat Linux 5.x。
nginx安装所需要的包如下:
nginx-1.0.8.tar.gz、nginx-upstream-jvm-route-0.1.tar.gz、pcre-8.30.zip。
假设这些包都在/opt/nginx目录下。
 安装pcre
安装过程的命令如下:
cd /opt/nginx
unzip pcre-8.30.zip
cd pcre-8.30
./configure
make
make install
若安装过程中提示未安装gc++,先执行yum -y install gcc-c++;再重新执行上面命令.
 安装jvm-route补丁
安装过程的命令如下:
cd /opt/nginx
tar -xvf nginx-1.0.8.tar.gz
tar -xvf nginx-upstream-jvm-route-0.1.tar.gz
cdnginx-1.0.8
patch -p0 < /opt/nginx/nginx_upstream_jvm_route/jvm_route.patch




 安装nginx
安装过程的命令如下:
cd /opt/nginx
cd nginx-1.0.8
./configure --with-http_ssl_module  --with-http_stub_status_module --add-module=/opt/nginx/nginx_upstream_jvm_route  -- prefix=安装目录
//如果没有 –prefix则nginx安装到默认目录下
make
make install




 解决nginx找到pcre包问题
执行下面命令可以解决nginx找不到libpcre.so.1依赖包问题。
ln -s /usr/local/lib/libpcre.so.1 /lib64/libpcre.so.1




nginx配置
nginx默认安装的路径在/usr/local/nginx下,nginx的配置文件/usr/local/nginx/conf/nginx.conf
 配置后端服务节点
这里主要配置后端服务,比如tomcat,jboss等。
下面配置两个tomcat后端服务:

http{

upstream income_portal {
server ip1:8899   srun_id=node1;
server ip2:8899  srun_id=node2;
jvm_route $cookie_JSESSIONID reverse;
     }

}
其中srun_id对应服务器的tomcat的jvmRoute。nginx的jvm_route补丁插件会根据cookie信息里的JSESSIONID中附带的srun_id信息来实现session sticky。
比如 server ip1:8899   srun_id=node1;,就需要在ip3的服务器的tomcat的server.xml做如下的配置:
<Engine defaultHost="localhost" name="Catalina"  jvmRoute="node1">
注意:nginx的均衡算法第一次分配时后端服务节点偶数节点被命中的概率比较大,所以为了负载能均衡,我们可以为每一后端节点配置两个节点,并有一个在偶数点上,比如:
upstream income_portal {
server ip2:8899    srun_id=node2;
server ip1:8899    srun_id=node1;
server ip1:8899    srun_id=node1;
server ip2:8899    srun_id=node2;




jvm_route $cookie_JSESSIONID reverse;
     }
 配置虚拟服务器
这里主要配置nginx对外发布的虚拟服务,并且与后端服务关联起来。
这里我们配置一个虚拟服务器与上面配置的后端服务关联起来:
http{

server {
listen  8899;
server_name  ip4;
location / {
proxy_pass http://income_portal;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host:8899;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect    off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
         }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
         }
}

}
Listen为虚拟服务监听的端口
server_name为虚拟服务的域名或ip
proxy_pass配置与后端的服务关联起来,比如http://income_portal,“http://”为请求的协议,“income_portal”为后端服务的名称。
proxy_set_header Host $host:8899;这里应该注意该端口要与listen保持一致,默认是80。
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
         }
这些配置主要是到后端服务不可用时,重定向到nginx本地错误页面。
 启动关闭
启动nginx:
cd /usr/local/nginx/sbin
./nginx
关闭nginx:
ps -ef|grep nginx
kill -9 {sid}
其中sid是ps-ef|grep nginx查找出来的进程id。
下面是ps-ef|grep nginx执行的结果:
root      2405     1  0 19:15 ?        00:00:00 nginx: master process ./nginx
nobody    2406  2405  0 19:15 ?        00:00:00 nginx: worker process
root      2412  2306  0 19:15 pts/6    00:00:00 grep --color=auto nginx
可以执行如下命令关闭nginx:
Kill -9 2405
Kill -9 2406
注意:关闭的顺序不能弄反,要先关闭master在关闭worker。
 使配置文件生效
修改了nginx的配置文件,不需要重启nginx,可以使用如下命令使配置生效:
cd /usr/local/nginx/sbin
./nginx -s reload
当然,我们还可以先不使配置文件生效而测试配置文件是否正确:
cd /usr/local/nginx/sbin
./nginx -t
jboss配置
jboss配置jdk
配置jboss的java_home,修改文件位置:/settle/nginx/jboss-business/bin/run.conf,JAVA_HOME="/usr/java/jdk1.6.0"。//该目录为上传到服务器上的jboss的目录
Nginx配置需要jboss的端口和IP以及JVM名称,所以每个jboss都需要设定特定的端口和jvm。
配置jboss的jvm
修改jvm  node值
/jboss5/server/web/deploy/jbossweb.sar/server.xml   
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
jvmRoute="node1" 这里的node1与nginx的配置文件对应
修改jboss端口
jboss5\server\web\conf\bindingservice.beans\META-INF\bindings-jboss- beans.xml
Jboss默认的web端口是8080,为了避免与别的服务,或者一台服务主机启动多个jboss实例,可以使用如下的方法来解决端口冲突的问题。
在/ jboss5/server/web/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml,修改<parameter>${jboss.service.binding.set:ports-default}</parameter>
其中ports-default表明所有的端口使用的时默认,比如web端口是8080,jdni是1099,改为ports-01,表明所有的端口全部增加100,比如web端口变为8180,jdni变为1199。
jboss启动命令及其他操作命令:
cd /jboss-menu/bin    进入jboss的bin目录
nohup ./run.sh -c web -b 10.0.204.199&  红色字体是机器IP
tail -f nohup.out  查看日志
ps –ef|grep jboss 查看jboss 进程号
kill -9 进程号   杀掉jboss 进程
配置jboss 内存最优化配置
/settle/nginx/jboss-business/bin/run.conf文件  ,内存分配最好是4G到6G,
JAVA_OPTS="-Xms8192m -Xmx8192m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000  //客户端GC发生周期的设定
-Dsun.rmi.dgc.server.gcInterval=3600000 //服务端GC发生周期的设定-Dsun.lang.ClassLoader.allowArraySyntax=true"
关闭jboss的日志
在jboss-5.1\jboss-5.1\server\web\conf下jboss-log4j.xml
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
       <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
       <param name="Target" value="System.out"/>
       <param name="Threshold" value="INFO"/>




       <layout class="org.apache.log4j.PatternLayout">
          <!-- The default pattern: Date Priority [Category] Message\n -->
          <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
       </layout>
    </appender>




将INFO修改为ERROR

   <root>
       <!--
          Set the root logger priority via a system property. Note this is parsed by log4j,
          so the full JBoss system property format is not supported; e.g.
          setting a default via ${jboss.server.log.threshold:WARN} will not work.        
        -->
       <priority value="${jboss.server.log.threshold}"/>
       <appender-ref ref="CONSOLE"/>
       <appender-ref ref="FILE"/>
    </root>
中的${jboss.server.log.threshold}修改为ERROR
机器问题jboss启动报UnknownHostException错误
vi /etc/hosts
在下面位置中加入本机的ip




# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
109.0.204.199      m910-111   m910-111    红色字体为本机ip 


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容