测试环境
文档地址:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013024
在K8S内部署、SQL型-V4.3.5
安装
1.ob-operator(复制文档中命令)
2.OceanBase 集群(复制文档中命令)
3.部署 ODP(复制文档中命令)
4.创建Headless Service(手动创建)
ob-headless.yaml
apiVersion: v1
kind: Service
metadata:
name: obcluster-headless
namespace: oceanbase
spec:
clusterIP: None # 设置为 Headless Service
selector:
ref-obcluster: obcluster # 匹配 OceanBase Pod 的标签
ports:
- name: sqles
port: 2881
targetPort: 2881
- name: rpces
port: 2882
targetPort: 2882
1.部署 ODP,修改RS_LIST为集群中的如下格式,是可以正常启动的
- name: RS_LIST
value: “10.244.4.251:2881;10.244.3.178:2881;10.244.4.155:2881”
但是设置为如下格式,没有报错,无法启动
- name: RS_LIST
value: “obcluster-headless.oceanbase.svc.cluster.local:2881”
请问怎么解决
2.OceanBase中的pod删除重建后,会创建不一样的PVC,假如重建了一百次,就会创建一百次的PVC
请问怎么规避
与义
#5
问题 1,observer 和 obproxy 都无法直接用域名来通信,需要使用 IP
问题 2,你的 Pod 删除并且重建的过程是怎样的?如果没有删除 OBServer 资源的话应该不会重建 PVC 的
kubectl get pod -A |grep oceanbase
oceanbase-system oceanbase-controller-manager-57984bcc6b-g62nt 2/2 Running 0 109s
oceanbase obcluster-1-zone1-8mk9dm 2/2 Running 0 40h
oceanbase obcluster-1-zone2-n8h2h6 2/2 Running 0 40h
oceanbase obproxy-86c747d6fc-hd4h5 1/1 Running 0 25h
oceanbase obproxy-86c747d6fc-jnq8l 1/1 Running 0 25h
kubectl get pvc -A |grep oceanbase
oceanbase obcluster-1-zone1-8mk9dm-data-file Bound pvc-bc244c25-333b-408a-b84b-82bffc74eb3d 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone1-8mk9dm-data-log Bound pvc-8576c531-75b8-45d5-a638-aadbe7c59478 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone1-8mk9dm-log Bound pvc-582ade36-9840-4299-828d-abe600d1f134 20Gi RWO nfs-client 40h
oceanbase obcluster-1-zone2-n8h2h6-data-file Bound pvc-236cc48b-7304-4d10-b04a-f10e85429a3a 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone2-n8h2h6-data-log Bound pvc-9e3b5760-e9e7-4ca5-9fd7-19c56d73044f 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone2-n8h2h6-log Bound pvc-323490a9-69ee-4ae4-9c5f-b9a99b0d363b 20Gi RWO nfs-client 40h
oceanbase obcluster-1-zone3-2gf4s2-data-file Bound pvc-b7cad00e-92bf-4272-b994-fa39d08d9160 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone3-2gf4s2-data-log Bound pvc-8c0cb12e-a864-49f4-b282-9c8f08827c64 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone3-2gf4s2-log Bound pvc-2227fa91-47c9-4291-a53f-1621c4c5771c 20Gi RWO nfs-client 40h
oceanbase obcluster-1-zone3-x8prd5-data-file Bound pvc-b8a60002-0a6a-4eb9-9697-7c7ff7f35fcd 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone3-x8prd5-data-log Bound pvc-aa42ca97-d9ca-492c-8cc9-fddb7235b383 50Gi RWO nfs-client 40h
oceanbase obcluster-1-zone3-x8prd5-log Bound pvc-14680f07-bf3f-4ae1-bbcb-a929118adba3 20Gi RWO nfs-client 40h
volumeMounts:
- mountPath: /home/admin/data-file
name: obcluster-1-zone1-8mk9dm-data-file
- mountPath: /home/admin/data-log
name: obcluster-1-zone1-8mk9dm-data-log
- mountPath: /home/admin/log
name: obcluster-1-zone1-8mk9dm-log
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-k6znh
readOnly: true
workingDir: /home/admin/oceanbase
问题1假如boserver集群的一个pod有问题,导致重新创建了,pod的IP变了,那怎么规避boproxy的rslist中的ip与新建observer的ip不一样
使用官网的ai回答是支持headless,麻烦修正一下
问题2
使用K9S,直接选中CTRL+D删除的,你看上面的PVC
查看pod内的volumeMounts的name是obcluster-1-zone1-8mk9dm-data-file,第四段是随机产生的啊,所以每次都不一样啊
请问一下集群的恢复pod是多少分钟内恢复的
我手动删除obcluster-1-zone2-x8prd5,我以外会在三分钟会重新启动的一个新的,可是没有任何反应,而且我将oceanbase-controller-manager-57984bcc6b-g62nt重新删除后也不会创建 obcluster-1-zone3
可以参考一下这个文档,我们提供了一种方式可以为每一个 observer 创建一个 service 地址,这个地址在 pod 重启的时候也是保持不变的,这样 rs_list 也不会变化,而且在 pod 重建的时候如果有这个固定的地址的话恢复的逻辑也会直接变成重启而不是新建一个 observer,如果是默认的配置,恢复的逻辑相当于完全重建一个 observer 添加到集群中,再删除被 delete 的 observer,这样所有 observer 的资源都相当于是重建的,包括 pvc
https://oceanbase.github.io/ob-operator/docs/manual/ob-operator-user-guide/high-availability/disaster-recovery-of-ob-operator
2 个赞
你好,
1、可以登录root@sys,通过以下sql获取查询结果,并配置到 ODP 的 'RS_LIST’参数中。
SELECT GROUP_CONCAT(CONCAT(SVR_IP, ‘:’, SQL_PORT) SEPARATOR ‘;’) AS RS_LIST FROM oceanbase.DBA_OB_SERVERS;
2、规避方法
使用 StatefulSet 管理 Pod
StatefulSet 会为每个 Pod 分配一个唯一的、稳定的网络标识和存储卷(PVC)。即使 Pod 被删除并重建,StatefulSet 会复用PVC,不创建新的PVC
1 个赞
谢谢告知,由于官网给出的示例是使用kind: OBCluster部署集群的,就没有使用StatefulSet 部署,StatefulSet 也是一个思路。谢谢告知
1 个赞
谢谢告知,你给出的文档地址,已设置参数后。的确是删除pod后1.立马恢复。2.不会重建pvc
注:
之前后端存储是使用nfs的,obcluster-check-fs、obcluster-get-version、obcluster-service-validate这三个job是没有通过的,都是error,但是后端集群obcluster是可以创建成功使用镜像(oceanbase/oceanbase-cloud-native:4.3.5.0-100000202024123117),其他镜像地址到达obcluster-check-fs就是error,无法下一步。
1 个赞