<document>
<localtoc/>
<resin xmlns="http://caucho.com/ns/resin"> <cluster id=""> <server id="app-a" address="192.168.1.10" port="6800"> <watchdog-port>6700</watchdog-port> <user-name>resin</user-name> <group-name>resin</group-name> <http port="80"/> </server> <host id=""> <web-app id="" path="/var/www/htdocs"/> </host> </cluster> </resin>

When running multiple instances of Resin on the same machine, one watchdog-manager typically handles all the instances. The server id will select which instance to start or stop.

<resin xmlns="http://caucho.com/ns/resin"> <cluster id="app-tier"> <server-default> <watchdog-port>6700</watchdog-port> <user-name>resin</user-name> <group-name>resin</group-name> </server-default> <server id="app-a" address="192.168.1.10" port="6810"/> <server id="app-b" address="192.168.1.10" port="6811"/> <host id=""> <web-app id="" path="/var/www/htdocs"/> </host> </cluster> <cluster id="web-tier"> <server-default> <watchdog-port>6700</watchdog-port> <user-name>resin</user-name> <group-name>resin</group-name> </server-default> <server id="web-a" address="192.168.1.10" port="6800"> <http port="80"/> </server> <host id=""> <web-app id=""> <rewrite-redirect> <load-balance regexp="" cluster="app-tier"/> </rewrite-redirect> </web-app> </host> </cluster> </resin>

In some cases, it's best to let each Resin instance have its own watchdog, for example when multiple users are sharing the same machine. Each <server> block configures a separate <watchdog-port>. Because the watchdog will read the resin.conf and use the <server> block matching the `-server id` command-line argument, each watchdog will start with it's own port.

<resin xmlns="http://caucho.com/ns/resin"> <cluster id="app-tier"> <server-default> <user-name>resin</user-name> <group-name>resin</group-name> </server-default> <server id="app-a" address="192.168.1.10" port="6810"> <watchdog-port>6700</watchdog-port> <http port="8080"/> </server> <server id="app-b" address="192.168.1.10" port="6811"> <watchdog-port>6701</watchdog-port> <http port="8081"/> </server> <host id=""> <web-app id="" path="/var/www/htdocs"/> </host> </cluster> </resin>

In the previous example, starting Resin with `-server app-a` will start a watchdog at port 6700. Starting Resin with `-server app-b` will start the watchdog at port 6701.

resin-3.1.x> java -jar lib/resin.jar -server app-b start

In a situation like an ISP, you may wish to have a separate configuration file for the watchdog, which launches Resin instances for different users. In this case, you will want to make sure the watchdog.conf is not readable by the users, and make sure to set a management user (see resin-security).

The watchdog will launch the Resin instance with the given user as a setuid. It will also open any necessary protected ports, e.g. port 80.

<resin xmlns="http://caucho.com/ns/resin"> <management> <user name="harry" password="MD5HASH=="/> </management> <watchdog-manager> <watchdog-default> <jvm-arg>-Xmx256m</jvm-arg> </watchdog-default> <watchdog id="user_1"> <user-name>user_1</user-name> <group-name>group_1</group-name> <resin-conf>/home/user_1/conf/resin.conf</resin-conf> <resin-root>/home/user_1/www</resin-root> <open-port address="192.168.1.10" port="80"/> </watchdog> ... <watchdog id="user_n"> <user-name>user_n</user-name> <group-name>group_n</group-name> <resin-conf>/home/user_n/conf/resin.conf</resin-conf> <resin-root>/home/user_n/www</resin-root> <open-port address="192.168.1.240" port="80"/> </watchdog> </watchdog-manager> </resin> resin-3.1.x> java -jar lib/resin.jar status Resin/3.1.x status for watchdog at 127.0.0.1:6600 server '' : active password: missing user: ferg root: /home/test/resin/ conf: /tmp/caucho/qa/cfg/resin.conf resin-3.1.x> java -jar lib/resin.jar -conf conf/test.conf -server a start Resin/3.1.x started -server 'a' for watchdog at 127.0.0.1:6700 resin-3.1.x> java -jar lib/resin.jar stop Resin/3.1.x started -server '' for watchdog at 127.0.0.1:6600

The watchdog publishes the watchdog instances to JMX with the JMX name "resin:type=Watchdog,name=a". With a JMX monitoring tool like jconsole, you can view and manage the watchdog instances.

</document>