发现服务

Redis 企业软件

Discovery Service 提供基于 IP 的连接管理服务 在连接到 Redis Enterprise Software 数据库时使用。使用时 与 Redis Enterprise Software 的其他高可用性结合使用 功能,Discovery Service 可协助应用程序范围 拓扑更改,例如添加、删除节点、节点故障转移和 等等。它通过为您的应用程序提供以下功能来实现这一点: 轻松发现托管数据库终端节点的节点。用于 discovery 服务与 Redis Sentinel API 兼容。

Discovery Service 是不想 依赖于 DNS 名称解析来实现其连接。发现服务 和基于 DNS 的连接并不互斥。他们可以使用 在给定集群中并排,某些客户端可以使用发现 基于服务的连接,而其他人可以在 连接到数据库。

发现服务的工作原理

Discovery Service 可用于在 群集,侦听端口 8001。为了使用它,您的应用程序利用 启用了 Redis Sentinel 的客户端 库以连接到 Discovery Service 并请求 给定的数据库。Discovery Service 使用数据库的 endpoint 的 intent 的 intent 中。如果节点发生故障,则 Discovery 集群管理器使用新的端点更新服务,并且 由于故障转移,客户端无法连接到数据库终端节点, 可以重新查询 Discovery Service 以获取 数据库。

Discovery Service 可以返回 internal 或 external endpoint 的数据库。如果您在发现服务中查询 终端节点时,Discovery Service 会返回 默认情况下,外部终端节点信息。如果只有一个内部的 endpoint exists 没有外部端点,则默认行为是 返回内部终端节点。“@internal” 被添加到 要显式请求内部终端节点的数据库名称。查询 内部端点显式使用数据库名称 “db1” 时,您可以传递 在数据库名称中显示为 “db1@internal”。

如果要检查从 Redis Enterprise 返回的元数据 软件发现服务,您可以使用 redis-cli 连接到端口 8001 工具并执行 “SENTINEL masters”。以下是示例输出 从 Redis Enterprise Software 集群的其中一个节点:

$ ./redis-cli -p 8001
127.0.0.1:8001> SENTINEL masters
1) 1) "name"
2) "db1@internal"
3) "ip"
4) "10.0.0.45"
5) "port"
6) "12000"
7) "flags"
8) "master,disconnected"
9) "num-other-sentinels"
10) "0"
2) 1) "name"
2) "db1"
3) "ip"
4) "10.0.0.45"
5) "port"
6) "12000"
7) "flags"
8) "master,disconnected"
9) "num-other-sentinels"
10) "0"

It is important to note that, the Discovery Service is not a full implementation of the Redis Sentinel protocol. There are aspects of the protocol that are not applicable or would be duplication with existing technology in Redis Enterprise Software. The Discovery Service implements only the parts required to provide applications with easy High Availability, be compatible with the protocol, and not rely on DNS to derive which node in the cluster to communicate with.

Note:
To use Redis Sentinel, every database name must be unique across the cluster.

Redis client support

We recommend these clients that are tested for use with the Discovery Service that uses the Redis Sentinel API:

If you need to use another client, consider using Sentinel Tunnel to discover the current Redis master with Sentinel and create a TCP tunnel between a local port on the client and the master.

Note:
Redis Sentinel API can return endpoints for both master and replica endpoints. Discovery Service only supports master endpoints and does not support returning replica endpoints for a database.
RATE THIS PAGE
Back to top ↑