nginx、jboss配置负载均衡

本文介绍了如何在Redhat Linux 5.x环境下安装和配置Nginx,包括安装JDK、Nginx以及应用jvm-route补丁。详细步骤涉及安装JDK、Nginx的编译和安装,以及配置Nginx的负载均衡策略,特别是针对Tomcat和Jboss的session sticky设置。同时,文章还涵盖了Jboss的JDK配置、端口和JVM名称的修改,以及启动和关闭Jboss的命令。
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值