rstgroup/zf-consul-service-discovery-module

这是一个用于Zend Framework的模块,允许在Consul的服务发现中注册应用程序。

dev-master 2017-07-25 16:19 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:03:32 UTC


README

此模块提供了允许应用程序在Consul的服务发现中注册的逻辑。

Build Status

需求

  1. PHP: 5.6 或 7.X
  2. 兼容ZF3的应用程序
  3. 可访问的Consul代理API

安装

使用Composer要求模块

composer require rstgroup/zf-consul-service-discovery-module

下一步是将模块添加到ZF系统配置(config/application.config.php)中

return [
    'modules' => [
        (...),
        'RstGroup\ZfConsulServiceDiscoveryModule',
    ],
    (...)
]

.. 以及(可选,但我们强烈建议) - 安装 rstgroup/zf-local-config-module

配置

该模块需要以下内容

  • Consul API URL
  • 服务名称
  • 服务ID (如果服务名称在同一Consul代理实例中不唯一)

示例配置

return [
    'rst_group'       => [
        'service_discovery' => [
            'service_name' => 'my-service',
            'service_id'   => 'my-service-1',
            'consul'       => [
                'url' => 'http://consul-instance.loc:8500',
                'check' => [
                    'url' => 'http://my-service/check-endpoint',
                    'name' => 'check-endpoint',
                    'interval' => '30s',
                ],
                'tags' => [ 'service', 'httpd', 'php' ],
            ],
        ],
    ],
];

最小配置

return [
    'rst_group'       => [
        'service_discovery' => [
            'service_name' => 'my-service',
            'consul'       => [
                'url' => 'http://consul-instance.loc:8500',
            ],
        ],
    ],
];

我们建议使用 rstgroup/zf-external-config-module 在配置阶段传递 rst_group.service_discovery.consul.url 键 - 因为基础设施配置不应存储在应用程序的仓库中。

如果您的服务将在多个实例中运行,那么在配置阶段也应传递其名称。

用法

该模块提供简单的命令来在Consul代理中注册/注销服务。这两个命令在运行不带参数的 php public/index.php 时都有描述。

在Consul代理中注册服务

在POST安装脚本中

  1. (可选) 提供所需的Consul代理配置

    php public/index.php local-config set rst_group.service_discovery.consul.url http://consul-instance.loc:8500

    假设服务名称和ID已经在配置中。

    请记住,此命令要求您安装 rstgroup/zf-external-config-module

  2. 注册服务

    php public/index.php service-discovery consul register

注销服务

在POST卸载阶段

```bash
php public/index.php service-discovery consul deregister
```

运行带参数的命令

service-discovery consul register 命令定义了一系列可选属性,允许您覆盖存储在应用程序配置中的设置。您可以简单地通过输入来列出完整的用法信息

php public/index.php

以下是描述 zf-consul-service-discovery-module 命令的部分

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    RstGroup\ZfConsulServiceDiscoveryMod
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    ZF Service Discovery - Consul
      index.php service-discovery consul register [--id=] [--name=] [--tags=] [--check] [--check-url=] [--check-name=] [--check-interval=]    Register service in Consul Agent's Service Discovery.                                       
    
      --id=               Override ID of service.                                                                                                                                                                                                               
      --name=             Override name of service.                                                                                                                                                                                                             
      --tags=             Override list of tags. Write tags as comma-separated list with no whitespaces.                                                                                                                                                                                            
      --check             If flag is set, the check is expected to be defined.                                                                                                                                                                                  
      --check-url         Override service's check URL                                                                                                                                                                                                          
      --check-name        Override service's check name                                                                                                                                                                                                         
      --check-interval    Override service's check interval                                                                                                                                                                                                     
    
      index.php service-discovery consul deregister [--id=]    Deregister service in Consul Agent' Service Discovery.                                                                                                                     
    
      --id=    Override ID of service.