为了稳定和安全,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. 出书了!实战微信小程序

    真正用心写完一本书,才知道写书真的很不容易. 我热衷喜欢分享一些技术,也喜欢钻研一些新东西,去年微信小程序刚内测的时候,我和我的同事四个人就一起研究,恰好公司有小程序相关的项目,做项目的同时,越发感觉 ...

  2. Build ios app with Delphi Xe4. Lazy Social Talker ready for sale.

    Yes, it is build with Delphi XE4. try it. now. What is  Lazy Social  Talker? Lazy Social Talker is a ...

  3. AS3里面的错误代码

    ActionScript 3 出现2048安全策略服务,一种原因是因为843端口下发策略文件有问题,另一种原因是Socket端口有问题,可以用telnet来测试. 其它AS3错误代码的意义可以在官网文 ...

  4. (一)mvc与mvvm设计模式

    前沿:了解设计模式对我们而言,具有很大意义,对语言没有限制,它适用于任何语言,是一种变成思想.设计模式最初有四人帮提出,有兴趣的同学可以去了解下,今天给大家主要分析mvc与mvvm设计模式 一.mvc ...

  5. PTA L3-023 计算图 (dfs+数学推导)

    “计算图”(computational graph)是现代深度学习系统的基础执行引擎,提供了一种表示任意数学表达式的方法,例如用有向无环图表示的神经网络. 图中的节点表示基本操作或输入变量,边表示节点 ...

  6. ActiveMQ面试题

    什么是activemq activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信. activemq的作用以及原 ...

  7. Java泛型小记

    Automobile类: public class Automobile { private String name; public Automobile(String name){ this.nam ...

  8. WPF导学目录

    很早就知道WPF这个东西,做项目中没用到,也就没去整理学习.作为winForm的升级版,未来windows桌面应用程序的趋势,有些公司招聘需求中也会提到熟悉WPF,于是就整理学习了一下WPF. 主要参 ...

  9. bzoj 4671 异或图——容斥+斯特林反演+线性基

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4671 考虑计算不是连通图的方案,乘上容斥系数来进行容斥. 可以枚举子集划分(复杂度是O(Be ...

  10. EasyWeChat微信开放平台第三方平台接入

    EasyWeChat微信开放平台第三方平台接入 https://www.cnblogs.com/bainiu/p/8022729.html