Skip to content

使用 a9s Redis

本部分介绍了如何使用 a9s Redis。

在应用中使用 a9s Redis

要在应用中使用 a9s Redis,请创建服务实例并将服务实例绑定到应用中。 有关管理服务实例的详细信息,请参见使用 cf CLI 管理服务实例

查看 a9s Redis 服务

磁贴安装完成后,redis32 及其服务计划会显示在 CF marketplace 中。运行 cf marketplace 查看服务列表:

$ cf marketplace
Getting services from marketplace in org test / space test as admin...
OK
service plans description
redis32 redis-xs, redis-m This is the anynines Redis 32 service.

创建服务实例

要配置 Redis 数据库,请运行 cf create-service。例如:

cf create-service redis32 redis-xs my-redis-service

创建服务实例可能需要几分钟的时间,具体取决于您的基础架构和服务代理使用情况。

运行 cf services 命令可以查看创建状态。此命令将显示所有服务实例的列表。要查看特定服务实例的状态,请运行 cf service NAME-OF-YOUR-SERVICE

将应用绑定到服务实例

创建数据库后,运行 cf bind-service 将服务绑定到应用:

cf bind-service redis-app my-redis-service

重新载入或重新启动应用

要使应用能够访问服务实例,请运行 cf restagecf restart 来重新载入或重新启动应用。

获取服务实例访问凭证

将服务实例绑定到应用后,Redis 数据库的凭证将存储在应用的环境变量中。运行 cf env APP-NAME 显示环境变量。

可以从 VCAP_SERVICES 密钥中获取凭证。

$ cf env redis-app
Getting env variables for app redis-app in org test / space test as admin...
OK

System-Provided:
{
 "VCAP_SERVICES": {
 "redis": [
 {
 "credentials": {
 "host":"EXAMPLE-HOST",
 "password":"EXAMPLE-PWD",
 "port":6379
 },
 "label": "redis",
 "name": "my-redis-service",
 "plan": "redis-xs",
 }
 ]
 }
}
...

您可以在 Redis 客户端使用 host 和密码连接到数据库。

删除 a9s Redis 服务实例

警告

在删除服务实例之前,必须对数据库中存储的数据进行备份。服务实例删除操作无法撤消,一旦服务删除,所有数据都将丢失。

必须先解除服务实例与所有应用之间的绑定,然后才能删除服务实例。

列出可用服务

运行 cf services 列出可用服务。

$ cf services

Getting services in org test / space test as admin...
OK

name service plan bound apps last operation
my-redis-service redis redis-xs redis-app create succeeded

在此示例中,将 my-redis-service 绑定到 redis-app 应用上。

解绑服务实例

运行 cf unbind-service 可以解除应用与服务间的绑定关系:

cf unbind-service redis-app my-redis-service

删除服务实例

解除绑定后,服务不再绑定在应用上。运行 cf delete-service 删除服务:

cf delete-service my-redis-service

删除服务可能需要几分钟的时间。删除服务会删除相应的基础架构资源。 运行 cf services 命令可以查看删除状态。

将服务实例升级到其它服务计划

服务实例创建后,您可以将其升级到其它较大的服务计划。较大的服务计划提供更多的 CPU、RAM 和存储资源。有关详细信息,请参见更新服务​​实例

cf update-service my-redis-service -p a-bigger-plan

您可以根据当前使用的计划选择升级计划 :

  • 如果您当前正在使用 redis-xs 计划,则可以升级到 redis-m 计划。

更改 RDB 持久化设置

a9s Redis 支持时间点快照 RDB 持久化。 用户可以更改此设置。

默认行为

设置 作用
save 900 1 如果发生 1 次写入操作,则在 900 秒后创建快照。
save 300 10 如果发生 10 次写入操作,则在 300 秒后创建快照。
save 60 10000 如果发生 10 次写入操作,则在 300 秒后创建快照。

配置 RDB

您可以根据不同应用需求通过提供客户设置来配置 RDB。此设置必须遵循 RDB 的原始 Redis 配置 -c {"snapshot": "['save 900 1', 'save 300 10']"}

cf update-service my-redis-service -c {"snapshot": "['save 900 1', 'save 300 10']"}

根据此示例的配置,将根据以下规则创建 Redis 数据库的快照:

设置 作用
save 900 1 如果发生 1 次写入操作,则在 900 秒后创建快照。
save 300 10 如果发生 10 次写入操作,则在 300 秒后创建快照。

仅作为缓存

通过使用客户设置 -c '{"snapshot": "[]"}' 创建服务,您可以禁用快照并仅使用 Redis 作为缓存。

命令:

cf update-service my-redis-service -c {"snapshot": "[]"}

有关详细信息,请参见 Redis 持久化文档中的快照设置。

更改 Maxmemory 策略

通过 maxmemory_ 策略,您可以对 a9s Redis 进行配置, 在达到 maxmemory 值时删除指定键。可配置的行为如下。 默认为 noeviction

设置 作用
volatile-lru 使用 LRU 算法通过过期集删除密钥
allkeys-lru 根据 LRU 算法删除任何密钥
volatile-random 通过过期集随机删除密钥
allkeys-random 随机删除密钥
volatile-ttl 删除最快到期的的密钥(TTL 较短)
noeviction 永不过期,只会在写入操作后返回错误

您可以使用 -c {"maxmemory_policy": "volatile-ttl"} 来更新 maxmemory-policy。

cf update-service my-redis-service -c {"maxmemory_policy": "volatile-ttl"}

有关详细信息,请参见自描述文档 redis.conf 中的 maxmemory-policy 设置。

使用 Redis Sentinel 的高可用集群

a9s Redis 使用 Redis Sentinel 提供高可用复制集。 Redis Sentinel 可以监控多个节点,负责自动故障转移,并且能够在集群中出现变化时发送通知。

a9s Redis 提供两种设置来调整集群行为。 min_slaves_max_lagdown_after_milliseconds

设置 作用
min_slaves_max_lag 表示当备用服务器无法访问时,主服务器在停止接受写入操作之前要等待的时间(单位:秒)。默认为 10 秒。min-slaves-to-write 要设置为固定值 1,不能更改。详见 redis.conf
down_after_milliseconds 表示主服务器在无法访问多长时间后判断其状态为 S_DOWN(单位:毫秒)。默认为 30000 毫秒。详见 sentinel.conf
cf update-service my-redis-service -c {"min_slaves_max_lag":"10"}
cf update-service my-redis-service -c {"down_after_milliseconds":"30000"}

添加 Graphite 端点

如果要使用 Graphite 来监控服务,您可以设置一个端点, 使用 cf update-service 命令可以向该端点发送信息。此命令需要提供 -c flag 和包含 graphitemetrics_prefix 键的 JSON 字符串。 metrics_prefix 可能会要求每个指标名称必须以 API 密钥开头,具体取决于您的 graphite 供应商。您还可以更改向端点发送数据的间隔。interval 默认为 10 秒。

cf update-service my-redis-service -c '{ "graphite": ["yourspace.your-graphite-endpoint.com:12345"], "metrics_prefix": "your-api-key.my-cluster-redis", "interval":"5"}'

添加 Syslog 端点

使用 cf update-service 命令与 -c flag 可以将 syslog 流式传输到第三方服务。在这种情况下,该命令需要一个包含 syslog 键的 JSON 字符串。您还可以使用与 graphite 端点 interval 相同的键来更改 syslog 的间隔。

cf update-service my-redis-service -c '{ "syslog": ["logs4.your-syslog-endpoint.com:54321"], "interval":"5" }'

Cloud Foundry 应用安全组

本部分介绍了判断安全组是否已创建的方法。

每个 a9s 数据服务都将自动创建并更新 Cloud Foundry 安全组,以防止未在同一个 Cloud Foundry 应用空间中运行的应用访问该实例。 有关安全组的详细信息,请参见 了解应用安全组

获取服务实例 GUID

运行 cf service INSTANCE_NAME --guid 获取服务实例的 GUID。

$ cf service my-redis --guid
ca16f111-5073-40b7-973a-156c75dd3028

检查可用的安全组

要查看所有可用的安全组,请使用 cf security-groups

$cf security-groups
Getting security groups as demo@mindsphere.io
OK

 Name Organization Space
#0 public_networks
#1 dns
#2 tcp_open
#3 guard_432fb752-876d-443b-a311-a075f4df2237 demonstrations demo
#4 guard_ca16f111-5073-40b7-973a-156c75dd3028 demonstrations demo

在此我们可以看到一个名为 guard_ca16f111-5073-40b7-973a-156c75dd3028 的安全组已经创建成功。

说明

如果无法建立应用与服务实例之间的连接,请检查是否已创建安全组。

备份和恢复服务实例,下载备份

a9s Redis 可以轻松地创建和恢复备份。

获取仪表盘地址、登录和授权

  1. 使用 cf service SERVICE-NAME 获取仪表盘 URL:
$cf service my-redis

Service instance:my-redis
Service:redis32
Bound apps:
Tags:
Plan:redis-xs
description: This is a service creating and managing dedicated Redis service instances and clusters, powered by the anynines Service Framework
Documentation url:
Dashboard:https://a9s-redis-dashboard.aws.ie.apps.eu1.mindsphere.io/service-instances/ca16f111-5073-40b7-973a-156c75dd3028

Last Operation
Status:update succeeded
Message:
Started:2017-10-26T08:28:38Z
Updated:2017-10-26T08:28:38Z
  1. 在浏览器中输入仪表盘 URL,然后通过“使用 WebKey 登录”方法在重定向的页面上进行身份验证:
    authentication-page
  2. 单击 **授权**以批准授权请求:
    authorization-page

执行备份

如上所示,您可以单击仪表盘上的 **触发备份**来进行备份。

service-dashboard

随后,备份将进行排队。很快就可以开始备份。

service-dashboard

说明

备份所需时间取决于数据的大小。

还原备份

再次打开仪表盘并选择要还原的备份。 单击备份的 **还原**按钮。随后将触发还原。

service-dashboard

说明

备份还原的所需时间取决于数据的大小。

service-dashboard

下载备份

要下载已执行的备份,首先必须设置个人加密密钥。否则,执行的备份无法下载。

要设置个人加密密钥,请打开相应服务实例的服务仪表盘,如上图所示。单击 编辑 按钮。

service-dashboard

设置加密秘钥并单击**保存** 按钮。加密密钥的最小长度为8个字符。

service-dashboard

新创建的备份现在将显示一个**下载** 按钮。 单击此按钮下载备份。

service-dashboard

Note

如果更改了个人加密密钥,将无法再下载使用旧的个人加密密钥加密的已执行备份。

使服务实例在本地可用

任何 a9s 数据服务都可以在本地访问。也就是说您可以将本地客户端连接到服务,实施调试等多种操作。 CF 提供了一种创建 SSH 正向通道的智能方法,即通过推送应用来实现。 有关此功能的详细信息,请参见 CF 文档中使用 SSH 访问应用部分。

首先,您必须将应用绑定到服务。请参见将应用绑定到服务实例了解具体方法。

说明

必须在平台中启用 cf ssh 支持。如果不确定,请咨询管理员。

获取服务 URL 和凭证

请参照获取服务实例访问凭证中的说明获取服务的 hostname 和用户凭证。

$ cf env redis-app
Getting env variables for app redis-app in org test / space test as admin...
OK

System-Provided:
{
 "VCAP_SERVICES": {
 "redis": [
 {
 "credentials": {
 "host": [
 "d67901c.service.dc1.a9svs"
 ],
 "password": "brk-usr",
 "username": "password"
 },
 "label": "redis",
 "name": "my-redis-service",
 "plan": "redis-xs"
 }
 ]
 }
}
...

请记住 host 是 d67901c.service.dc1.a9svs,用户名是 brk-usr,密码是 password。在下一步骤中将用到这些信息。

创建连接服务的通道

使用前面提到的 cf ssh 可以创建一个连接管理仪表盘的 ssh 正向通道。 使用端口 6379 连接 a9s Redis 实例。

$ cf ssh redis-app -L 6379:d67901c.service.dc1.a9svs:6379
vcap@956aaf4e-6da9-4f69-4b1d-8e631a403312:~$

当 ssh 通道打开时,您可以通过地址 localhost:6379 访问该实例。

说明

不要忘记用 exit 关闭会话。

还有问题?

向社区提问


除非另行声明,该网站内容遵循MindSphere开发许可协议.


Last update: November 16, 2021