7.2. 为 3scale 配置后端组件
作为 3scale 管理员,在以下部署配置中为 后端
组件环境变量配置 Redis HA(failover):backend-cron
、backend-listener
和 backend-worker
。这些配置是 3scale 中红帽 HA 所必需的。
如果要将 Redis 与 sendinel 一起使用,您必须使用所有字段创建 system-redis
secret,以便在部署 3scale 前配置您要指向的 Redis。从 3scale 开始,这些字段在后端中不作为参数提供。
7.2.1. 创建 backend-redis
和 system-redis
secret
按照以下步骤相应地创建 backend-redis
和 system-redis
secret:
7.2.2. 为 HA 部署 3scale 的新安装
为防止使用单数据库 Redis 实例部署时发生密钥冲突,可以为 sidekiq
和 message_bus
Redis 密钥设置不同的命名空间。这适用于 Redis Enterprise 和 Redis Cluster。
对于 sidekiq
和 message_bus
读取和写入到不同 Redis 数据库的其他部署,不需要命名空间。
以下参数用于设置 Redis 密钥 namespaces :
-
NAMESPACE
:对于与system-app
和system-sidekiq
存储在 Redis 数据库中的作业队列相关的条目。 -
MESSAGE_BUS_NAMESPACE
:对于与 Redis 数据库中system-app
存储的message_bus
通信相关的条目。
流程
使用以下字段创建
backend-redis
和system-redis
secret:backend-redis
REDIS_QUEUES_SENTINEL_HOSTS REDIS_QUEUES_SENTINEL_ROLE REDIS_QUEUES_URL REDIS_STORAGE_SENTINEL_HOSTS REDIS_STORAGE_SENTINEL_ROLE REDIS_STORAGE_URL
system-redis
MESSAGE_BUS_NAMESPACE MESSAGE_BUS_SENTINEL_HOSTS MESSAGE_BUS_SENTINEL_ROLE MESSAGE_BUS_URL NAMESPACE SENTINEL_HOSTS SENTINEL_ROLE URL
当使用 sendinels 为 Redis 配置时,
backend-redis
和system-redis
中的对应URL
字段以redis://[:redis-password@]redis-group[/db]'
格式引用 Redis 组,其中 [x] 表示可选元素 x,redis-password
、redis-group
和db
是变量。示例
redis://:redispwd@mymaster/5
SENTINEL_HOSTS
字段采用以下格式以逗号分隔:redis://:sentinel-password@sentinel-hostname-or-ip:port
对于列表的每个元素,[x] 表示可选元素 x,
sendinel-password
、finel-hostname-or-ip
,port
是相应地替换的变量:示例
:sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722
-
SENTINEL_ROLE
字段为master
或slave
字段。
使用最新版本模板,部署 3scale,如 OpenShift 在 OpenShift 上部署 3scale 所示。
-
忽略因为
backend-redis
和system-redis
已存在的错误。
-
忽略因为
7.2.3. 将 3scale 的非 HA 部署迁移到 HA
-
使用所有字段编辑
backend-redis
和system-redis
secret,如 部署 3scale 为 HA 所示。 确保为后端容器集定义了以下
backend-redis
环境变量:name: BACKEND_REDIS_SENTINEL_HOSTS valueFrom: secretKeyRef: key: REDIS_STORAGE_SENTINEL_HOSTS name: backend-redis name: BACKEND_REDIS_SENTINEL_ROLE valueFrom: secretKeyRef: key: REDIS_STORAGE_SENTINEL_ROLE name: backend-redis
确保为
system-(app|sidekiq|sphinx)
pod 定义了以下system-redis
环境变量。name: REDIS_SENTINEL_HOSTS valueFrom: secretKeyRef: key: SENTINEL_HOSTS name: system-redis name: REDIS_SENTINEL_ROLE valueFrom: secretKeyRef: key: SENTINEL_ROLE name: system-redis name: MESSAGE_BUS_REDIS_SENTINEL_HOSTS valueFrom: secretKeyRef: key: MESSAGE_BUS_SENTINEL_HOSTS name: system-redis name: MESSAGE_BUS_REDIS_SENTINEL_ROLE valueFrom: secretKeyRef: key: MESSAGE_BUS_SENTINEL_ROLE name: system-redis
- 继续执行说明以使用模板升级 3scale。
7.2.3.1. 使用 Redis Enterprise
在 OpenShift 中使用 Redis Enterprise,具有三个不同的
redis-enterprise
实例:编辑
system-redis
secret:-
将不同的值设置为
MESSAGE_BUS_NAMESPACE
和NAMESPACE
。 -
将
URL
和MESSAGE_BUS_URL
设置为同一数据库。
-
将不同的值设置为
-
将
backend-redis
中的后端数据库设置为REDIS_QUEUES_URL
。 -
将第三个数据库设置为
backend-redis
的REDIS_STORAGE_URL
。
7.2.3.2. 使用 Redis Sentinel
使用 Redis Sentinel,具有三个或四个不同的 Redis 数据库:
编辑
system-redis
secret:-
将不同的值设置为
MESSAGE_BUS_NAMESPACE
和NAMESPACE
。 -
将
URL
和MESSAGE_BUS_URL
设置为正确的 Redis 组,例如:redis://:redispwd@mymaster/5
-
将
SENTINEL_HOSTS
和MESSAGE_BUS_SENTINEL_HOSTS
设置为以逗号分隔的主机和端口列表,例如::sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722
-
将
SENTINEL_ROLE
和MESSAGE_BUS_SENTINEL_ROLE
设置为 master
-
将不同的值设置为
使用以下值为后端设置
backend-redis
secret:-
REDIS_QUEUES_URL
-
REDIS_QUEUES_SENTINEL_ROLE
-
REDIS_QUEUES_SENTINEL_HOSTS
-
将第三个数据库中的变量设置为如下:
-
REDIS_STORAGE_URL
-
REDIS_STORAGE_SENTINEL_ROLE
-
REDIS_STORAGE_SENTINEL_HOSTS
-
备注
system-app 和 system-sidekiq 组件直接连接到
后端
Redis 以检索统计信息。-
从 3scale 2.7 开始,使用发送时这些系统组件也可以连接到
后端
Redis(存储)。
-
从 3scale 2.7 开始,使用发送时这些系统组件也可以连接到
system-app 和 system-sidekiq 组件 仅使用
backend-redis
存储,而不使用backend-redis
队列。-
对系统组件所做的更改支持带有 sendinels 的
backend-redis
存储。
-
对系统组件所做的更改支持带有 sendinels 的