jiay 发表于 2018-11-9 13:48:13

nginx+resin的多实例配置

  一、 需求
  架构:
  nginx+resin
  Nginx的ip:
  192.168.1.1
  域名:user.test.com
  应用部署的服务器ip:
  192.168.1.2
  192.168.1.3
  应用部署的路径:
  /var/htdocs/test
  建立log文件存储位置的软连接,该软连接指向服务器中硬盘空间最大的挂载点下。
  二、操作步骤
  2.1 由于域名解析生效时间问题,应在工作开始时先做域名解析的工作,以便届时生效。查找到nginx的公网IP,将user.test.com与公网IP做域名解析。
  2.2 部署后端resin服务
  在192.168.1.2和192.168.1.3上进行操作。
  生产环境中,Resin已经安装完毕,需要注意的是resin的多实例配置。Resin的多实例配置有几种方法,不同版本之间的方法也有差异,请注意自己的resin版本。
  生产环境上使用的是resin3.0的版本。
  Resin多实例配置方法大概有两种:
  
第一种就是通过不同的配置文件来实现,通过不同的端口、目录、server_id来实现多实例。
  
第二种方法与tomcat类似,copy出N个主体程序来实现多实例。
  此次配置选用的方法与tomcat类似,copy出多个主体程序来实现多实例。
  复制现有的resin为resin_test:
  


[*]cd /usr/local && rsync -av resin/ resin_test/
[*]cd ./resin_test/
[*]vim ./conf/resin.conf
  

  修改三个地方:
  (1)端口:
  
  
  将原来的80端口修改为8081端口,确保8081端口未被系统使用。修改后的内容如下:
  
  
  (2)server端口
  
  
  
  将原来的6802端口改为6803端口,确保6803端口未被系统使用。这样做的目的是保证每一个实例的server接口不冲突。修改后内容如下:
  
  
  
  (3)主目录的全路径
  修改如下:

  
    


[*]vim ./bin/httpd.sh
  

  增加resin目录环境变量的设置并修改成相应路径,修改部分如下:
  RESIN_HOME=/usr/local/resin_test
  export RESIN_HOME
  args='-Djava.library.path=/usr/local/resin_test/lib -J-server -Xms200m -Xmx1024m-XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.
  awt.headless=true '
  


[*]> httpd.pid#清空存放resin进程pid数值的文件
[*]ln -s /data/app_log/ /opt/app_log#创建软连接,将日志目录存放于最大的分区中。
  

  启动程序
  


[*]/usr/local/resin_test/bin/httpd.sh start
  

  验证程序启动是否正常:
  


[*]# ps -ef | grep resin_test
[*]
[*]root   11579   10 Oct15 ?      00:00:00 perl ./wrapper.pl -chdir -name httpd -class com.caucho.server.resin.Resin -Djava.library.path=/usr/local/resin_test/lib -J-server -Xms200m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true start
[*]
[*]root   11581 115790 Oct15 ?      00:00:06 /usr/local/java/jdk1.6.0_24/bin/java -Djava.library.path=/usr/local/resin_test/lib -server -Xms200m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true -Xss1m -Dresin.home=/usr/local/resin_test -Dserver.root=/usr/local/resin_test -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl com.caucho.server.resin.Resin -socketwait 61123 -stdout /usr/local/resin_test/log/stdout.log -stderr /usr/local/resin_test/log/stderr.log
[*]
[*]netstat -natp|grep java
[*]
[*]tcp      0      0 :::80                     :::*                        LISTEN      11037/java
[*]
[*]tcp      0      0 :::8081                     :::*                        LISTEN      11581/java
[*]
[*]tcp      0      0 ::ffff:127.0.0.1:6802       :::*                        LISTEN      11037/java
[*]
[*]tcp      0      0 ::ffff:127.0.0.1:6803       :::*                        LISTEN      11581/java
[*]
[*]
  

  有进程,且端口开启正常,说明程序启动成功。
  2、web前端nginx配置
  登录到192.168.1.1上,作如下操作:
  


[*]cd /opt/nginx/conf
[*]
[*]cp nginx.conf nginx.conf_20121016.bak
[*]
[*]vim nginx.conf
[*]
[*]nginx.conf配置文件中添加如下内容:
[*]
[*]    upstream real-test {
[*]      ip_hash;
[*]      server 10.127.64.26:8081;
[*]      server 10.127.64.27:8081;
[*]    }
[*]      server {
[*]      listen       80;
[*]      server_nameuser.test.com
[*]      access_loglogs/test.access.logmain;
[*]
[*]      location / {
[*]            proxy_set_header X-Real-IP $remote_addr;
[*]            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
[*]            proxy_set_header Host $http_host;
[*]            client_max_body_size    20m;
[*]            proxy_connect_timeout   90;
[*]            proxy_send_timeout      90;
[*]            proxy_read_timeout      90;
[*]            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
[*]            proxy_pass http://real-test;
[*]            }
[*]      error_page   500 502 503 504/50x.html;
[*]      location = /50x.html {
[*]            root   html;
[*]      }
[*]      }
  

  验证nginx.conf的正确性
  


[*]/opt/nginx/sbin/nginx -t
[*]    the configuration file /opt/nginx/conf/nginx.conf syntax is ok
[*]    configuration file /opt/nginx/conf/nginx.conf test is successful
  

  验证无误,重新启动nginx
  


[*]/opt/nginx/sbin/nginx -s reload
  

  遇到的问题:
  1、主目录的全路径后面丢失'/',导致nginx不能找到路径,从而报504错误。
  2、在遇到多域名同时解析到一个主目录时,要配置多个虚拟主机,并且保证host-id不同。


页: [1]
查看完整版本: nginx+resin的多实例配置