编辑Active-Active数据库的参与集群
使用Redis Enterprise for Kubernetes向现有Active-Active数据库添加或删除参与集群的步骤。
添加一个参与集群
按照以下步骤将参与集群添加到现有的Kubernetes Redis Enterprise Active-Active数据库(REAADB)中。
先决条件
为了使Redis Enterprise集群(REC)能够参与Active-Active数据库,请从准备参与集群执行以下任务:
- 确保集群满足硬件和命名要求。
- 启用Active-Active控制器。
- 配置外部路由。
- 配置
ValidatingWebhookConfiguration
。
收集REC凭证
为了与其他集群通信,所有参与的集群都需要访问所有其他集群的管理员凭据。
-
获取新参与集群的REC凭证密钥。
kubectl get secret -o yaml <rec-name>
此示例显示了一个名为
rec-boston
的 REC 的管理员凭据密钥:apiVersion: v1 data: password: ABcdef12345 username: GHij56789 kind: Secret metadata: name: rec-boston type: Opaque
-
为名为
redis-enterprise-
的新参与集群创建一个密钥,并添加用户名和密码。下面的示例显示了一个名为
rerc-logan
的远程集群的机密文件。apiVersion: v1 data: password: ABcdef12345 username: GHij56789 kind: Secret metadata: name: redis-enterprise-rerc-logan type: Opaque
-
将收集到的密钥文件应用到每个参与的REC上。
kubectl apply -f <rec-secret-file>
如果任何集群的管理员凭据发生变化,请更新并重新将文件应用到所有集群。
创建RERC
-
从现有的参与集群之一,为新参与的集群创建一个
RedisEnterpriseRemoteCluster
(RERC) 自定义资源。此示例展示了在命名空间
ns-massachusetts
中名为rec-boston
的 REC 的 RERC 自定义资源。apiVersion: app.redislabs.com/v1alpha1 kind: RedisEnterpriseRemoteCluster metadata: name: rerc-logan spec: recName: rec-boston recNamespace: ns-massachusetts apiFqdnUrl: test-example-api-rec-boston-ns-massachusetts.example.com dbFqdnSuffix: -example-cluster-rec-boston-ns-massachusetts.example.com secretName: redis-enterprise-rerc-logan
-
创建RERC自定义资源。
kubectl create -f <new-RERC-file>
-
检查新创建的RERC自定义资源的状态。
kubectl get rerc <RERC-name>
输出应该看起来像这样:
NAME STATUS SPEC STATUS LOCAL rerc-logan Active Valid true
编辑 REAADB 规范
-
修补REAADB规范,将新的RERC名称添加到
participatingClusters
中,用您自己的值替换
和
。kubectl patch reaadb <reaadb-name> < --type merge --patch '{"spec": {"participatingClusters": [{"name": "<rerc-name>"}]}}'
-
查看REAADB
participatingClusters
状态以验证集群是否已添加。kubectl get reaadb <reaadb-name> -o=jsonpath='{.status.participatingClusters}'
输出应该看起来像这样:
[{"id":1,"name":"rerc-ohare"},{"id":2,"name":"rerc-reagan"},{"id":3,"name":"rerc-logan"}]
移除参与的集群
-
在现有的参与集群上,从REAADB规范的
participatingCluster
部分中移除所需的集群。kubectl edit reaadb <reaadb-name>
-
在每个其他参与的集群上,验证状态为
active
,规范状态为Valid
,并且集群已被移除。kubectl get reaadb <reaadb-name -o=jasonpath=`{.status}`
输出应该看起来像这样:
{... ,"participatingClusters":[{"id":1,"name":"rerc1"},{"id":2,"name":"rerc2"}],"redisEnterpriseCluster":"rec1","specStatus":"Valid","status":"active"}
-
在移除的参与集群上,列出集群上的所有REAADB资源以验证它们已被删除。
kubectl get reaadb -o+jasonpath=`{range.items[*]}{.metadata.name}`