为了稳定和安全,Resin使用一个独立的watchdog进程来启动和监视Resin服务器。watchdog连续你检测Resin服务器的状态,如果其没有反应或者迟钝,将会重启Resin服务器进程。大多数情况下,watchdog从resin.xml中读取配置信息,而不需要其它的附加配置。某些ISP服务商可能使用特别的配置,为了安全他们会配置watchdog来隔离JVM(Java虚拟主机)。

概述

因为watchdog作为一个服务运行,大多数情况下你根本不需要注意它。标准的配置下,一个机器上的watchdog可以监视这个机器上所有JVM,因此大部分情况下你不需要修改watchdog的配置。需要你管理watchdog的任务就是,如果机器发生了问题,停止watchdog,并检查watchdog日志中Resin服务器的重启事件。

  watchdog自动重启崩溃和退出的Resin服务。因此如果你想停止Resin,你需要告诉watchdog来停止Resin实例,或者完全停止watchdog。使用resin.ar中的主程序(main)来控制watchdog,有用来启动、停止、重启Resin实例的命令,同样还有报告watchdog状态的命令。

  大多数用户不需要特别的配置watchdog,但是ISP和大的站点可能创建特殊的watchdog.xml(包含<watchdog-manager>标签)来控制watchdog。<watchdog-manager>允许ISP控制watchdog,为他们用户的Resin实例指定附加的命令行参数,包括为他们的用户创建安全的chroot环境的能力。典型地,watchdog以root帐号运行,然而用户实例使用他们各自的用户id。

命令行

  resin.jar中的主类ResinBoot的命令行用来控制watchdog。主要的操作包括:start、stop、restart、shutdown和status。

start

  "start"命令使用给定的server id启动一个新的Resin实例。ResinBoot首先会尝试在当前机器上的watchdog,在需要时会启动一个新的watchdog。在resin.xml中定义的server id必须是惟一的。

例如: watchdog启动

resin-3.2.x> java -jar lib/resin.jar -conf conf/test.conf -server a start

Resin/3.2.x started -server 'a' for watchdog at 127.0.0.1:6700

stop

"stop"命令使用给定的server id停止Resin实例。如果停止的实例是watchdog管理的最后一个Resin实例,watchdog也会自动退出。如果没有指定 -server 参数,watchdog使用默认的 -server "" 。

例子: watchdog停止

resin-3.2.x> java -jar lib/resin.jar stop

Resin/3.2.x started -server '' for watchdog at 127.0.0.1:6600

status

"status"命令统计被watchdog服务管理的Resin实例的状态。

例子: watchdog状态

resin-3.2.x> java -jar lib/resin.jar status

Resin/3.2.x status for watchdog at 127.0.0.1:6600

server '' : active

  password: missing

  user: ferg

  root: /home/test/resin/

  conf: /etc/resin/resin.xml

单一Resin实例

  这个例子显示了一个单一服务器站点,其监听标准的HTTP端口80,并以resin这个用户身份运行。在这个例子中watchdog是以root用户身份运行的,因此其能够绑定到特殊的端口80上,但是Resin实例是以resin身份运行的。

  因为使用了默认的配置,watchdog监听6600端口来获取命令。

例子: /etc/resin/resin.xml

<resin xmlns="http://caucho.com/ns/resin">

<cluster id="">

<server id="app-a" address="127.0.0.1">

    <user-name>resin</user-name>

    <group-name>resin</group-name>

<http port="80" />

  </server>

<resin:import path="${resin.home}/conf/app-default.xml" />

<host id="">

    <web-app id="" path="/var/www/htdocs" />

  </host>

</cluster>

</resin>

在一个机器上使用共享的watchdog实现负载平衡

  当在一个机器上运行多个Resin实例的时候,一个watchdog-manager就能管理所有的Resin实例。指定server id用来决定那个Resin实例是start或者stop。

在这个例子中,有一个web-tier服务器做为负载平衡器,两个app-tier服务器处理后台数据,它们都在一个机器上。为了维护和升级方便,一个站点可能需要多个app-rier服务器。当一个停机的时候,第二个服务器可以继续服务。

这个例子使用默认的watchdog配置,其读取的是标准的resin.xml文件。watchdog进程和ResinBoot都读取resin.xml配置文件,因此不需要特别的watchdog配置。watchdog能够自动发现运行在这个机器上的多个Resin实例并管理它们。

例子: /etc/resin/resin.xml

<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" />

  <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>

    <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>

同一机器使用不同的watchdog来实现负载平衡

在某些情况下,最好让每个Resin实例有其自己的watchdog,例如当多个用户在使用相同的机器。每个<server>块配置一个<watchdog-port>。因为watchdog将读取resin.xml使用<server>块匹配命令行参数中的 -server id,每个watchdog将启动期自己的端口。

例子: /etc/resin/resin.xml

<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>

  在上面的例子中,启动Resin, 使用 -server app-a参数将启动一个在端口6700上的watchdog,使用 -server app-b参数将启动一个在端口6701上的watchdog。

例子: starting app-b with watchdog-port=6701

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

ISP watchdog管理

  在ISP的环境中,你可能需要为watchdog使用一个隔离的配置文件,它为不同的用户启动Resin实例。在这个情况下,你要确保watchdog.xml不能被这些普通用户读取,要创建一个管理用户来读取这个文件。

●启动和重启用户的Resin JVM

●设置JVM参数和Java可执行性

●设置Resin实例的root-directory

●setuid user-name 和 group-name

●设置resin.xml配置

●打开受保护的端口,例如80

●可选的chroot设置

watchdog将使用给定的帐号作为setuid来启动Resin实例。它也能打开任何需要的保护端口,例如80。

例子: /etc/resin/watchdog.xml

<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-xml>/home/user_1/conf/resin.xml</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.xml</resin-conf>

    <resin-root>/home/user_n/www</resin-root>

<open-port address="192.168.1.240" port="80" />

  </watchdog>

</watchdog-manager>

</resin>

Resin 的watchdog(看门狗)介绍和resin负载均衡实现的更多相关文章

  1. android -- WatchDog看门狗分析

    在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...

  2. STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示

    一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料:             ...

  3. 服务器watchdog看门狗的理解

    1.什么是watchdog?watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器.然而它与我们平常所接触的定时器在作用上又有所不同.普通 ...

  4. 【分享】iTOP-iMX6UL开发板驱动看门狗 watchdog 以及 Linux-c 测试例程

    iTOP-iMX6UL开发板看门狗测试例程,iTOP-iMX6UL 开发板的看门狗驱动默认已经配置,可以直接使用测试例程. 版本 V1.1:1.格式修改:2.例程修改完善,其中增加喂狗代码.1 看门狗 ...

  5. linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...

  6. 【Linux开发】linux设备驱动归纳总结(十一):写个简单的看门狗驱动

    linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  7. Redisson 分布式锁源码 02:看门狗

    前言 说起 Redisson,比较耳熟能详的就是这个看门狗(Watchdog)机制. 本文就一起看看加锁成功之后的看门狗(Watchdog)是如何实现的? 加锁成功 在前一篇文章中介绍了可重入锁加锁的 ...

  8. IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...

  9. LVS负载均衡介绍

    LVS介绍 负载均衡器 • 链路负载均衡 (三层负载均衡) • 服务器负载均衡 (四层负载均衡) • 应用层负载均衡 (七层负载均衡) • 全局负载均衡 基本情况 • 实现服务器负载均衡 • 核心功能 ...

随机推荐

  1. OSPF 配置

    封装在IP层:协议号 89 hello时间是dead时间的1/4 224.0.0.5 .在点到点网络, 比如T1线路,是连接单独的一对路由器的网络, 点到点网络上的有效邻居总是可以形成邻接关系的,在这 ...

  2. I.MX6 ethtool 移植

    /************************************************************************* * I.MX6 ethtool 移植 * 说明: ...

  3. LINUX 修改本机yum源为163镜像源

    进入yum源配置目录 [root@localhost yum.repos.d]# cd /etc/yum.repos.d/ 备份系统yum源,用于日后恢复. [root@localhost yum.r ...

  4. LibreOJ β Round #2 题解

    LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...

  5. UVA12296 Pieces and Discs

    题意 PDF 分析 可以看成直线切割多边形,直接维护. 对每个多边形考虑每条边和每个点即可. 时间复杂度?不过\(n,m \leq 20\)这种数据怎么都过了.据说是\(O(n^3)\)的,而且常数也 ...

  6. OLAP和OLTP的区别(基础知识)

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 ( ...

  7. bzoj 3796 Mushroom追妹纸——后缀数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3796 长度一般都是 1e5 ,看这个是 5e4 ,一看就是把两个串接起来做. 自己本来想的是 ...

  8. android栈和队列

    android栈和队列 栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表.LinkedList数据结构是一种双向的链式结构,每一 ...

  9. JGroups 入门实践

    前言 JGroups是一个开源的纯java编写的可靠的群组通讯工具.其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展.其结构上设计灵活,提供了一种灵活兼容多种协议的协议栈. JGroup ...

  10. BMP格式介绍(一)

    原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...