开源版Resin4服务器的集群部署

Resin开源版(GPL)下载地址:http://caucho.com/products/resin/download/gpl

以最新版4.0.40(date:2014-08-02)为例。部署环境为Ubuntu,其他发行版本类似(我在公司部署过RedHat6)。

下载tar.gz包(http://www.caucho.com/download/resin-4.0.40.tar.gz)或zip包(http://www.caucho.com/download/resin-4.0.40.zip),不要下载deb包,因为我们需要将Resin安装到指定目录(deb包应该也可以,不过我linux没学到家,不会解这个包)。

等待下载的过程中请先确认你的linux环境安装了必要的编译安装工具。Ubuntu下可以通过apt-get命令安装

sudo apt-get install build-essential automake

下载完成之后,解压压缩包得到文件夹。

进入文件夹,执行

./configure --prefix=/home/liufl/temp/resin-install
其中 --prefix参数指定要安装的路径,具体参数使用,可自行百度,linux下源码编译安装软件。

configure命令会告诉我们当前是否满足编译条件。

你可能会见到最后输出以下两行

 OPENSSL     : No OpenSSL has been found
    *** OpenSSL libraries cannot be compiled ***

这两行输出告诉我们当前没有SSL的类库可用,SSL功能将不会编译。如果你需要SSL功能支持的话可以执行

sudo apt-get install libssl-dev

之后再次执行configure操作,输出如下,说明可以正常编译了

Resin Configuration Summary:

  RESIN       : 4.0.40
    home      : /home/liufl/temp/resin-install
    root      : /home/liufl/temp/resin-install
    conf      : /home/liufl/temp/resin-install/conf
    log       : /home/liufl/temp/resin-install/log
    plugins   : common resin_os 
    init      : /etc/init.d/resin

  JAVA_HOME   : /usr/local/java/jdk_default

  JNI         : 64-bit
    include       : -I/usr/local/java/jdk_default/include -I/usr/local/java/jdk_default/include/linux
    CFLAGS        : 
    cflags_shlib  : -fpic
    ld_shlib      : gcc
    ldflags_shlib : -shared -fPIC -m64
    libs_shlib    : 
    epoll() for keepalives

编译安装,执行

make;make install

适用于你的linux环境的resin就编译且安装好了。到安装目录看一下

liufl@liufl-virtual-machine:~/temp/resin-install$ ll
总用量 56
drwxrwxr-x 14 liufl liufl 4096  8月  3 20:00 ./
drwxrwxr-x  6 liufl liufl 4096  8月  3 20:00 ../
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 app-inf/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 bin/
drwxrwxr-x  4 liufl liufl 4096  8月  3 20:00 conf/
drwxrwxr-x  5 liufl liufl 4096  8月  3 20:00 doc/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 endorsed/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 lib/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 libexec64/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 log/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 project-jars/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 resin-inf/
drwxrwxr-x  2 liufl liufl 4096  8月  3 20:00 webapp-jars/
drwxrwxr-x  3 liufl liufl 4096  8月  3 20:00 webapps/

其中,我们只要关心下面几个目录就可以了:

bin:这里放置了resin的控制脚本文件,其中只有resin.sh这一个文件需要保留,其他文件用不到,为保证不会误操作,删除之。

conf:resin的配置文件都在这里。其中我们一会需要修改的文件有三个:cluster-default.xml、resin.properties、resin.xml

webapps:默认的webapp加载目录。通常生产环境下我们需要把其中的ROOT项目删除。

其他目录暂时不用关心,需要了解的话请参考官方文档或自行百度谷歌。

至此,resin已可运行,你可以把这个文件夹拷贝到你这台机器的任意目录去运行了。但是因为这是GPL开源版,开发方作了限制:不能运行集群,只能以1watchdog+1app方式执行。即使你像处理Tomcat一样改了不同路径下resin的端口号,你也没办法启动第二个resin实例。因为resin watchdog监听端口冲突,而官方文档中根本没有提及如何修改watchdog端口号(反正我没找到)。但是,这个难不倒广大的劳动人民啊,经过一番百度谷歌,还是找到的设置方法。

我们进入conf目录下,首先修改下resin.properties文件,这里我们主要修改resin的各端口号。找到下面一行:

app_servers      : 127.0.0.1:6800

这一行指明了我们的webapp控制端口号,修改并增加一行如下

app_servers      : 127.0.0.1:2800
watchdog_port    : 2600

上述修改,我们将webapp控制端口改到了2800,第二行是新增了watchdog的控制端口(默认为6600),值为2600。注意!此时启动服务器watchdog端口还是6600,我们还需要修改resin.xml才行。resin.properties中的配置需要生效都需要EL表达式的方式在resin.xml中注入才会生效,所以我们直接修改resin.xml对应配置也是可以的。不过为了方便管理,我们还是修改resin.properties吧。

再之后找到行:

app.http          : 8080

这个就是对外服务端口号了,一样修改成2080。你可能注意到了,我改过的端口号千位数是相同的(原来的是6800、6600、8080),这样做是为了将不同实例的端口号分别设置在不同的端口号段里了(每一千个端口号分成一个号段),方便记忆。

其他修改:

dev_mode      : true #这里生产环境请改成false

resin_doc      : true #这里通常可以写成false。服务器文档可以去官网或下载离线看,不必要浪费服务器资源。

web.http          : 8080 #这个可以注释掉。因为是开源版,这个配置不会生效。

# jvm_args  : -Xmx2048m -XX:MaxPermSize=256m #请根据服务器状态和需要修改。这个配置只会影响到app实例,不会对watchdog实例生效。

port_thread_max   : 256
accept_thread_max : 32
accept_thread_min : 4
# keepalive_max   : 512

...等请参考文档和机器性能酌情处理。

PS:SSL配置请自行研究吧,我没研究这个,本文就不提了。

修改完resin.properties之后,我们还需要修改resin.xml才能使配置完全生效。

找到这一行:

<server-multi id-prefix="app-" address-list="${app_servers}" port="6800"/>

注意到${app_servers}了?对这就是在resin.properties文件中配置的服务控制端口号。不用在意后面的port="6800",只有找不到app_servers值的时候它才会等效(直接的说就是默认值)。我们把这一行做如下修改:

    <server-multi id-prefix="app-" address-list="${app_servers}" port="6800">
      <watchdog-port>${watchdog_port?:6600}</watchdog-port>
    </server-multi>

恩,这下你知道watchdog端口号是怎么改的了。官方就是没提这句,都写了这功能了,提一下会掉块肉吗?(呃,确实会掉不少肉……pro版会少卖出去多少份啊)

其他配置都可以参考文档修改了,webapp加载配置、jndi注入一类的文档和百度上说的都比较清楚,大家可以自行查找,我这里只给出一份Apache Solr的配置示例,不做具体解释了

<web-app id="/" root-directory="webapps/ROOT"/>
替换为

      <web-app id="/solr" root-directory="/webapp/search-solr">
        <env-entry>
          <env-entry-name>solr/home</env-entry-name>
          <env-entry-type>java.lang.String</env-entry-type>
          <env-entry-value>/io-drive/search-solr/solr-master</env-entry-value>
        </env-entry>
      </web-app>

说一下日志的问题,resin是原生支持日志滚动输出的。找到下面一行

  <logger name="com.caucho.loader" level="config"/>

之后加入

  <stdout-log archive-format="jvm-console-%Y%m%d.log.zip"
              path="log/jvm-console.log"
              rollover-count="30"
              rollover-period="1D"/>
  <stderr-log path="log/jvm-console.log"/>

就可以让后台日志每天滚动输出,一天一文件,保留30天,过期自动清除。

另外还有访问日志access-log的设置,默认配置是1周一个文件不压缩不清除,为防止磁盘占用增长过快,需要修改cluster-default.xml文件,将如下行

      <access-log path="log/access.log" 
                 format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
                 rollover-period="1W"/>

替换为

      <access-log path="log/access.log" 
                 format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
                 archive-format="access-%Y%m%d.log.zip"
                 rollover-period="1D"
                 rollover-count="14"/>

至此,resin(GPL)配置修改完成。之后就可以像Tomcat集群一样制作Resin集群了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值