obproxy无法连接到集群


【 使用环境 】测试环境
【 OB or 其他组件 】 ob-operator 2.3.3/ obproxy-ce:4.0.0-5
【 使用版本 】ob-operator 2.3.3 obproxy-ce:4.0.0-5
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
metadata:
name: svc-obproxy
namespace: oceanbase
spec:
type: NodePort
selector:
app: obproxy
ports:
- name: “sql”
port: 2883
targetPort: 2883
nodePort: 30083
- name: “prometheus”
port: 2884
targetPort: 2884
nodePort: 30084

apiVersion: apps/v1
kind: Deployment
metadata:
name: obproxy
namespace: oceanbase
spec:
selector:
matchLabels:
app: obproxy
replicas: 1
template:
metadata:
labels:
app: obproxy
spec:
containers:
- name: obproxy
image: 764741675347.dkr.ecr.cn-north-1.amazonaws.com.cn/oceanbase/obproxy-ce:4.0.0-5
ports:
- containerPort: 2883
name: “sql”
- containerPort: 2884
name: “prometheus”
env:
- name: APP_NAME
value: helloworld
- name: OB_CLUSTER
value: obcluster
- name: RS_LIST
value: “172.20.220.181:2881;172.20.238.16:2881;172.20.6.233:2881”
- name: PROXYRO_PASSWORD
valueFrom:
secretKeyRef:
name: proxyro-password
key: password
resources:
limits:
memory: 2Gi
cpu: “1”
requests:
memory: 200Mi
cpu: 200m

$ obclient -h 10.20.6.19 -P 30083 -u root@sys#obcluster -p
Enter password:
ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error: 11

【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

之前通过以下方式解决问题,但后面重建k8s集群又出现类似问题

https://www.oceanbase.com/docs/community-odp-cn-1000000000079256
使用 ODP 连接 OceanBase 数据库报错如下。
ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error: 0
产生原因:ODP 中 observer_sys_password 设置的密码和 OceanBase 数据库中 proxyro 用户的密码不一致,ODP 无法通过该用户与 OBServer 节点保持通信。
ODP中最原始的observer_sys_password 设置的密码 是空的(要进入obproxy pod中执行# strings obproxy/etc/obproxy_config.bin | grep -w observer_sys_password
observer_sys_password=)
而obproxy 部署配置的 proxyro 用户的密码是通过secret 传进来的,是有值的

  • name: PROXYRO_PASSWORD
    valueFrom:
    secretKeyRef:
    name: proxyro-password
    两个值不一致导致报错
    需要先通过直连数据库某一pod,修改proxyro 用户的密码为空。
    ALTER USER ‘proxyro’@’%’ IDENTIFIED BY ‘’;

黑屏化创建的集群么,是否绑定过proxyro密码到obproxy中

是的,通过黑屏创建,
我发现 ob-operator 创建的,用oceanbase-cloud-native:4.2.1.1-101010012023111012
的话,obproxy可以连接上,但oceanbase-cloud-native:4.3.5.3-103000092025080818 不行,怎么查看模块版本兼容?

可以参考这篇部署obproxy后边的方法,在启动ODP的时候把密码适配一下

https://www.oceanbase.com/knowledge-base/oceanbase-database-proxy-1000000001687223?back=kb