跳转到主要内容

ZEO ZooKeeper

项目描述

管理地址,尤其是端口是个麻烦。ZooKeeper可以用作服务注册。服务器可以在这里注册自己,客户端可以在这里找到服务。《zc.zkzeo》包提供了注册ZEO服务器和从ZooKeeper获取地址的ZEO客户端存储的支持。

运行ZEO服务器

要运行ZEO服务器并将其注册到ZooKeeper,首先创建一个ZEO配置文件

<zeo>
   address 127.0.0.1
</zeo>

<zookeeper>
   connection zookeeper.example.com:2181
   path /databases/demo
</zookeeper>

<filestorage>
   path demo.fs
</filestorage>

ZEO配置文件具有与通常相同的选项,还有一个包含两个选项的zookeeper部分

连接

一个ZooKeeper连接字符串。这通常是一系列由逗号分隔的HOST:PORT对。

路径

注册服务器的路径。该路径必须已存在。当服务器启动时,它将通过创建路径的子节点来注册自己,该子节点的名称由其地址组成。

(您还可以使用session-timeout选项指定ZooKeeper会话超时时间,以毫秒为单位。)

在指定ZEO地址时,您可以省略端口号,操作系统将为您分配它。

要启动服务器,请使用zkrunzeo脚本

$ bin/zkrunzeo -C FILENAME

其中FILENAME是您创建的配置文件的名称。

包括一个zc.monitor监控服务器

zc.monitor包提供了一个简单的可扩展命令服务器,用于收集监控数据或提供对服务器的运行时控制。如果zc.monitor在Python路径中,zc.zkzeo可以启动一个监控服务器并将其地址作为服务器临时端口的monitor属性提供。为了请求此功能,我们在zookeeper部分使用一个monitor-server选项

<zeo>
   address 127.0.0.1
</zeo>

<zookeeper>
   connection zookeeper.example.com:2181
   path /databases/demo
   monitor-server 127.0.0.1
</zookeeper>

<filestorage>
   path demo.fs
</filestorage>

该值是要监听的地址。

使用上述配置,如果我们启动服务器并使用 zc.zk 包查看 ‘/databases/demo’ 的 ZooKeeper 树,我们会看到如下内容

>>> zk.print_tree('/databases/demo')
/demo
  /127.0.0.1:64211
    monitor = u'127.0.0.1:11976'
    pid = 5082

您还可以指定一个 Unix 域套接字名称

<zeo>
   address 127.0.0.1
</zeo>

<zookeeper>
   connection zookeeper.example.com:2181
   path /databases/demo
   monitor-server ./monitor.sock
</zookeeper>

<filestorage>
   path demo.fs
</filestorage>

当使用 Unix 域套接字时,监视地址不包括在树中

>>> zk.print_tree('/databases/demo')
/demo
  /127.0.0.1:64213
    pid = 5082

关于监视服务器的几点说明

  • 如果没有注册一些命令插件,监视服务器将没有用处。

  • zc.monitor 不是 zc.zkzeoc 的依赖项,除非您安装它,否则它不会在 Python 路径中。

监控

zkzeo 包提供了一个 Nagios 插件。该插件接受 ZooKeeper 连接字符串和查找 ZEO 服务器的路径(使用 zc.zk 服务注册框架)。例如,要监视上面定义的服务器

zkzeo-nagios zookeeper.example.com:2181 /databases/demo

zkzeo nagios 监视器支持与 ZEO nagios 监视器相同的选项,因此例如要获取完整的指标

zkzeo-nagios -m -s statusfile zookeeper.example.com:2181 /databases/demo

有时,可能在同一路径注册多个服务器,例如在服务器复制的情况下。当监视单个服务器时,您需要知道要检查哪个。如果您有一个监视 ZEO 进程的服务器,就像我们上面做的那样,那么您可以使用它来确定要使用哪一个。只需提供监视服务器地址

zkzeo-nagios -m -M ./monitor.sock zookeeper.example.com:2181 /databases/demo

还有一个对其他监视器有用的辅助函数

>>> import zc.zkzeo.nagios
>>> [zc.zkzeo.nagios.find_server(
...     'zookeeper.example.com:2181',
...     '/databases/demo',
...     None)] == zk.get_children('/databases/demo')
True
>>> [zc.zkzeo.nagios.find_server(
...     'zookeeper.example.com:2181',
...     '/databases/demo',
...     './monitor.sock')] == zk.get_children('/databases/demo')
True

定义ZEO客户端

您可以通过两种方式定义客户端:从 Python 和使用配置文件。

使用Python定义ZEO客户端

从 Python,使用 zc.zkzeo.client

>>> import zc.zkzeo
>>> client = zc.zkzeo.client(
...     'zookeeper.example.com:2181', '/databases/demo',
...     max_disconnect_poll=1)

您传递一个 ZooKeeper 连接字符串和一个路径。Client 构造函数将创建一个客户端存储,其中包含给定路径作为子节点找到的地址,并且它将调整客户端存储地址,当节点作为路径的子节点被添加和删除时。

您可以将所有其他 ZEO.ClientStorage.ClientStorage 参数(除地址外)作为额外的位置和关键字参数传递。

数据库和连接便利函数

您通常并不真正关心获取存储对象。您真正想要的是数据库对象

>>> db = zc.zkzeo.DB(
...     'zookeeper.example.com:2181', '/databases/demo',
...     max_disconnect_poll=1)

或者,通常是数据库连接

>>> conn = zc.zkzeo.connection(
...     'zookeeper.example.com:2181', '/databases/demo',
...     max_disconnect_poll=1)

在配置文件中定义ZEO客户端

在配置文件中,使用 zkzeoclient 存储部分

%import zc.zkzeo

<zodb>
   <zkzeoclient>
      zookeeper zookeeper.example.com:2181
      server /databases/demo
      max-disconnect-poll 1
   </zkzeoclient>
</zodb>

zkzeoclient 的选项与标准 ZODB zeoclient 部分的选项相同,但

  • 有一个额外的必需的 zookeeper 选项,用于提供 ZooKeeper 连接字符串。

  • 只能有一个 server 选项,并且它用于提供可能找到地址的 ZooKeeper 中的路径。

变更历史

1.0.1 (2015-01-11)

解决了固定包装问题(当然)。

1.0.0 (2015-01-11)

  • 更新为与 ZEO/ZODB 一起使用,而不是与 ZODB3 一起使用。

  • 添加了 Nagios 监视插件,zkzeo-nagios 脚本

0.3.2 (2012-07-10)

  • 修复:不支持与 ZConfig 最近支持的显式配置端口 0,该端口无法使用。

0.3.1 (2012-06-26)

  • 修复:设置 Unix 域套接字上的监视服务器不起作用。

0.3.0 (2012-02-07)

  • 添加了一个静态额外功能,以强制依赖 zc-zookeeper-static

  • 在测试模式下,使用较短的 asynore 循环超时,以便服务器可以更快地关闭。

  • 修复:zc.zkzeo 依赖于 zc.zk [static],这强制安装 zc-zookeeper-static,而它应该是可选的。

  • 修复:测试没有通过,因为 zc.zk 中处理空主机名注册的最近更改。

  • 修复:包装:distribute 无法安装带有符号链接的发行版,因此停止在发行版中使用符号链接。

0.2.1 (2011-12-14)

  • 修复了错误:在 ZooKeeper 服务器配置部分中的 "path" 键是必需的,而它不应该如此。

0.2.0 (2011-12-13)

  • 使用 ZEO 地址设置从 ZooKeeper 注册主机名。(这通常是一个空字符串,而 zc.zk 将其转换为完全限定的域名。)

  • 修复了处理监视服务器时的错误。实际的地址设置被忽略。

0.1.1 (2011-12-12)

  • 修复了包装错误。

0.1.0 (2011-12-11)

初始发布。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

zc.zkzeo-1.0.1.tar.gz (15.9 kB 查看哈希值)

上传时间

支持