为MongoD雷竞技下载官网B跨站复制设置Percona Server¶
跨站点复制包括将一个MongoDB站点配置为主要,而另一个MongoDB站点为副本允许它们之间的复制:
操作员自动配置主要而且副本MongoDB站点,但是该特性本身并不绑定到Kubernetes。要么主要或副本可以在Kubernetes之外运行,是常规的MongoDB,不受运营商的控制。
这个特性在以下几种情况下很有用:
- 简化MongoDB集群到Kubernetes的迁移
- 将远程节点添加到容灾副本集中
为操作员控制的集群配置跨站点复制将在以下小节中解释。
公开MongoDB集群的实例¶
您需要通过专用服务公开所有副本集节点(包括配置服务器)来确保主要而且副本可以互相接触,就像一个完整的网格:
请注意
从v1.14开始,操作人员使用本地DNS主机名配置replset,即使replset是公开的。如果您希望在replset配置中有IP地址以实现多集群部署,则需要设置clusterServiceDNSMode来外部.
这是通过replsets.expose,sharding.configsvrReplSet.expose,sharding.mongos.expose的部分部署/ cr.yaml配置文件如下。
规范:replset:-rs0:暴露:启用:真正的exposeType:loadbalance...分片:configsvrReplSet:暴露:启用:真正的exposeType:loadbalance...
上面的例子是使用LoadBalancer Kubernetes Service对象,但是还有其他选项(ClusterIP, NodePort等)。
请注意
上面的例子将为每个Replica Set Pod创建一个LoadBalancer。在大多数情况下,这个负载均衡器应该是面向internet的,以便跨区域复制工作。
要列出分配给Pods的端点,请通过执行列出Kubernetes Service对象kubectl get services -l "app.kubernetes.io/instance=CLUSTER_NAME"命令。
在主站点配置跨站点复制¶
操作员管理的集群应该能够到达副本集的外部节点。您可以在replsets.externalNodes而且sharding.configsvrReplset.externalNodes的子章节部署/ cr.yaml配置文件。下面的键可以设置为指定每个外部副本,它的副本集和配置服务器实例:
- 集
宿主到外部replset实例的URL或IP地址, - 集
港口外部节点的端口号(或依赖于27017默认值),
可选的,您可以设置以下附加键:
优先级键设置优先级外部节点(2默认为集群的所有本地成员;外部节点应具有较低的优先级,以避免非托管节点被选为主节点;0将节点添加为无投票权的成员),票Key设置的号码票外部节点可以在复制集选举中强制转换(0默认情况下,0对于集群中的无投票权成员)。
这里有一个例子:
规范:非托管:假replset:-名字:rs0externalNodes:-宿主:rs0 - 雷竞技下载官网1. percona.com港口:27017优先级:0票:0-宿主:rs0 - 雷竞技下载官网2. percona.com...分片:configsvrReplSet:大小:3.externalNodes:-宿主:cfg - 雷竞技下载官网1. percona.com港口:27017优先级:0票:0-宿主:cfg - 雷竞技下载官网2. percona.com...
的主要当您像往常一样应用更改时,站点将准备好进行复制:
$kubectl应用- f部署/ cr.yaml
获取要从主副本复制到副本的集群秘密和证书¶
主要而且副本应该具有相同的Secrets对象(具有相同的用户凭证)和证书。所以你可能需要从主要.属性中设置对应对象的名称用户,ssl,sslInternal自定义资源的键秘密第(my-cluster-name-secrets,my-cluster-name-ssl,my-cluster-name-ssl-internal默认情况下)。
方法从现有集群中获取secretKubectl得到秘密命令每一个你想获得的秘密对象:
$kubectl得到秘密my-cluster-name-secrets- oyaml>my-cluster-secrets.yaml
接下来删除注释,creationTimestamp,resourceVersion,selfLink,uid的元数据字段,以便为副本.
您将需要在Replica上进一步应用这些秘密。
在Replica实例上配置跨站点复制¶
当Operator创建一个新集群时,会发生很多事情,比如选择Primary、生成证书和选择特定的名称。如果我们希望运算符运行副本站点,因此首先应该通过设置将集群置于非托管状态非托管输入部署/ cr.yaml配置文件为true。你还应该设置updateStrategy关键OnDelete而且backup.enabled来假,因为智能更新而且备份在非托管集群上不允许。
请注意
设置非托管设置为true不仅会阻止Operator控制Replica Set配置,而且还会导致不能为新集群生成证书和用户凭证。
这里有一个例子:
规范:非托管:真正的updateStrategy:OnDeletereplset:-名字:rs0大小:3....备份:启用:假...
主要而且副本网站应该有相同的Secrets对象,所以不要忘记从你的应用Secrets主要网站。属性中设置对应对象的名称用户,ssl,sslInternal自定义资源的键秘密第(my-cluster-name-secrets,my-cluster-name-ssl,my-cluster-name-ssl-internal默认情况下)。
从现有集群复制您的秘密,并将它们应用到您的副本地点如下:
$kubectl应用- fmy-cluster-secrets.yaml
的副本当您像往常一样应用更改时,站点将准备好进行复制:
$kubectl应用- f部署/ cr.yaml
启用多集群服务¶
Kubernetes多集群服务(MCS)是服务的跨集群发现和调用。支持mcs的服务可以通过虚拟IP地址跨集群发现和访问。
该特性允许将应用程序拆分为多个集群并组合在一起舰队,可用于分离逻辑上独立的部分(即有状态部分和无状态部分),或解决隐私和可伸缩性需求等。
云提供商应该支持多集群服务。是支持的Kubernetes Engine (GKE),Amazon Elastic Kubernetes Service (EKS).
为多集群服务配置集群包括两部分:
- 与云供应商一起配置MCS,
- 与操作员一起做好必要的准备工作。
要为特定的云提供商设置MCS,您应该遵循官方指南,例如from谷歌Kubernetes Engine (GKE),或来自Amazon Elastic Kubernetes Service (EKS).
警告
对于EKS,还需要在启用多集群服务之前创建ClusterProperty对象。
apiVersion:about.k8s.io / v1alpha1种类:ClusterProperty元数据:名字:cluster.clusterset.k8s.io规范:价值:[您的集群标识符]---apiVersion:about.k8s.io / v1alpha1种类:ClusterProperty元数据:名字:clusterset.k8s.io规范:价值:[您的ClusterSet标识符]
检查AWS MCS控制器存储库获取更多信息。
为MCS设置Operator会导致注册Services以导出到其他集群使用ServiceExport对象,并使用ServiceImport 1导入外部服务。中设置以下选项multiCluster第部署/ cr.yaml配置文件,使它发生:
multiCluster.enabled应该设置为真正的,multiCluster。DNSSuffix字符串应该等于Kubernetes使用的多集群服务的集群域后缀(svc.clusterset.local默认情况下).
下面的例子部署/ cr.yaml配置文件相当简单:
...multiCluster:启用:真正的DNSSuffix:svc.clusterset.local...
类像往常一样应用更改Kubectl apply -f deploy/cr.yaml命令。
请注意
如果希望在新集群中启用多集群服务,建议首先使用multiCluster.enabled设置为假并在replset初始化后启用它。从一开始就启用MCS很容易在replset初始化时出错。
最初的ServiceExport创建和与舰队集群的同步大约需要5分钟。您可以使用以下命令查看需要导出和导入的服务列表。
$kubectl得到serviceexport
预期的输出
NAME AGE my-cluster-name-cfg 22m my-cluster-name-cfg-0 22m my-cluster-name-cfg-1 22m my-cluster-name-cfg-2 22m my-cluster-name-mongos 22m my-cluster-name-rs0 22m my-cluster-name-rs0-1 22m my-cluster-name-rs0-2 22m my-cluster-name-rs0-1 22m my-cluster-name-rs0-2 22m
$kubectl得到serviceimport
预期的输出
名称类型IP年龄my-cluster-name-cfg无头22米my-cluster-name-cfg-0 ClusterSetIP(“10.73.200.89”)22米my-cluster-name-cfg-1 ClusterSetIP(“10.73.192.104”)22米my-cluster-name-cfg-2 ClusterSetIP(“10.73.207.254”)22米my-cluster-name-mongos ClusterSetIP(“10.73.196.213”)22 m my-cluster-name-rs0无头22 m my-cluster-name-rs0-0 ClusterSetIP(“10.73.206.24”)22米my-cluster-name-rs0-1 ClusterSetIP(“10.73.207.20”)22米my-cluster-name-rs0-2 ClusterSetIP“10.73.193.92”22米
请注意
ServiceExport对象由Percona Server for MongoDB Operator自动创建雷竞技下载官网。另一方面,ServiceImport对象不受操作符控制。如果需要对ServiceImport对象进行故障排除,则必须检查云提供商安装的MCS控制器。
创建ServiceExport对象后,导出的服务可以从任何舰队集群中的任何Pod解析为SERVICE_EXPORT_NAME.NAMESPACE.svc.clusterset.local.
请注意
这意味着具有相同名称和名称空间的ServiceExports将被识别为单个组合服务。
MCS可以对跨站点复制收费,但附加了特定于云提供商的限制。例如,GKE要求所有参与pod的人都在同一个pod中项目.同时,默认的命名空间应该谨慎使用:您的云提供商可能不允许将服务从该集群导出到其他集群。
将MCS应用到现有集群¶
需要其他操作来打开MCS已经存在的非mcs集群.
文件编辑完成后,需要重新启动操作符
multiCluster分段键和应用部署/ cr.yaml.类的输出中查找操作员的Pod名称库贝特尔去拿吊舱命令(它将类似于雷竞技下载官网percona-server-mongodb-operator-d859b69b6-t44vk),并按如下方式删除:$kubectl删除雷竞技下载官网percona-server-mongodb-operator-d859b69b6-t44vk如果从Operator版本升级后正在运行的集群启用MCS
1.11.0或以下,您需要旋转多域(SAN)证书。这样做暂停集群和删除TLS的秘密.