使用 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 restage
或 cf 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_lag
和 down_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 和包含 graphite
与 metrics_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 可以轻松地创建和恢复备份。
获取仪表盘地址、登录和授权
- 使用
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
- 在浏览器中输入仪表盘 URL,然后通过“使用 WebKey 登录”方法在重定向的页面上进行身份验证:
- 单击 **授权**以批准授权请求:
执行备份
如上所示,您可以单击仪表盘上的 **触发备份**来进行备份。
随后,备份将进行排队。很快就可以开始备份。
说明
备份所需时间取决于数据的大小。
还原备份
再次打开仪表盘并选择要还原的备份。 单击备份的 **还原**按钮。随后将触发还原。
说明
备份还原的所需时间取决于数据的大小。
下载备份
要下载已执行的备份,首先必须设置个人加密密钥。否则,执行的备份无法下载。
要设置个人加密密钥,请打开相应服务实例的服务仪表盘,如上图所示。单击 编辑 按钮。
设置加密秘钥并单击**保存** 按钮。加密密钥的最小长度为8个字符。
新创建的备份现在将显示一个**下载** 按钮。 单击此按钮下载备份。
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开发许可协议.