分布式数据库连接问题

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】
请问大家部署好分布式数据库之后,用
nc -zv 172.16.120.6(分布式数据库ip地址) 2881(observer端口号)
能够直接显示连接成功嘛?

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

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

3 个赞

用户问题: “部署好 OceanBase 分布式数据库后,使用 nc -zv 命令测试连接 172.16.120.6 的 2881 端口能否成功”

推荐使用 obdiag 工具进行日志采集,并且将采集到的日志提供给我们。
日志采集场景: 集群无法连接
日志采集命令: obdiag gather scene run --scene=observer.cluster_down

为了更好地定位问题,请您执行上述命令并将日志压缩包发送给我们。此外,为了进一步了解您的环境配置和可能存在的网络问题,请您提供以下信息:

  1. 当前使用的 OceanBase 版本是什么?
  2. 在尝试连接时是否遇到了任何具体的错误消息或提示?
  3. 您是否确认 172.16.120.6 上的 2881 端口是 OceanBase 数据库实例正在监听的端口?
  4. 您的网络环境中是否有防火墙或其他安全设置可能会阻止对 2881 端口的访问?

详情请参考:

  1. 升级 OceanBase 集群
  2. 升级 OBShell
  3. 在 Kubernetes 环境中部署 OceanBase 集群
  4. 使用 OBShell 扩容 OceanBase 集群
  5. C3P0 连接池连接 OceanBase 数据库示例程序

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

正常的情况下,监听端口起来了。会通的。

1 个赞

可以直接用命令行连接测试,mysql 或者obclient都可以
看你另一个帖子也是关于部署端口相关的。执行如下看看返回的都是什么
ps -ef|grep obproxy
obclient -h172.16.120.6 -P2883 -uroot@sys#集群名 -p -Ac
obclient -h172.16.120.6 -P2881 -uroot@sys -p -Ac

2 个赞

其实我黑屏也部署过,同样是卡在了连接observer这个阶段,
在172.16.120.6机器上显示为:


在中控机172.16.120.2上显示为

1 个赞

根据您提供的信息,您在尝试连接到 172.16.120.6 的 2881 端口时遇到了问题。具体来说,您在中控机 172.16.120.2 上使用 obclient 尝试连接时收到了错误信息 “Can’t connect to OceanBase server on 172.16.120.6”。这表明存在网络连接问题或者目标服务器上的 OceanBase 实例没有正确响应。

以下是可能的原因和解决方案:

  1. 端口未开放或防火墙规则限制

    • 请确保 172.16.120.6 上的 2881 端口已经开放,并且没有防火墙规则阻止从中控机 172.16.120.2 发起的连接请求。
    • 检查目标服务器的 iptables 或其他防火墙设置,确保 2881 端口允许外部连接。
    • 您可以尝试在目标服务器上使用 netstat -tuln 命令检查 2881 端口是否处于监听状态。
  2. 服务未运行或配置问题

    • 根据您提供的信息,172.16.120.6 上的 OceanBase 实例似乎正在运行(从 ps -ef | grep obproxy 输出中可以看出),但是仍然有可能存在配置问题导致无法正常接收连接。
    • 检查 observer 日志文件,查看是否有任何错误信息或警告,这些信息可以帮助定位问题。
    • 确认 observer 的配置文件中关于监听端口的设置是否正确。
  3. 网络问题

    • 检查两台机器之间的网络连通性,确保没有网络中断或路由问题。
    • 使用 ping 172.16.120.6 命令检查网络连通性。
  4. 认证问题

    • 确保您使用的用户名和密码是正确的,并且具有足够的权限来连接到目标数据库。
  5. 其他可能性

    • 如果以上方法均无法解决问题,建议您检查 obproxy 的配置和日志文件,确保其正确配置并能够转发到目标 observer

综上所述,您可以按照以下步骤进行排查:

  1. 检查端口监听状态

    [admin@172.16.120.6 ~]$ netstat -tuln | grep 2881
    
  2. 检查防火墙规则

    [admin@172.16.120.6 ~]$ sudo iptables -L -n | grep 2881
    
  3. 检查 observer 日志

    [admin@172.16.120.6 ~]$ cat /path/to/observer/log/*.log
    
  4. 检查 obproxy 配置和日志

    [admin@172.16.120.6 ~]$ cat /path/to/obproxy/conf/obproxy.ini
    [admin@172.16.120.6 ~]$ cat /path/to/obproxy/log/*.log
    

希望以上建议能帮助您解决问题。如果问题依然存在,请提供更多详细的日志信息以便进一步分析。

检索到的文档如下:

  1. 服务端连接
  2. 快速体验 OceanBase 数据库

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

1 个赞

obd.log (41.3 KB)
最新的日志

1 个赞

主要是2881的端口好像是不通的
这是在172.16.120.6机器上的进程


这是在172.16.120.2中控机上的访问连接超时

1 个赞

你2881是通过了的,2883登录失败是因为没有obproxy 你看一下你的yaml配置文件是否配置了obproxy
然如果陪着了可以使用 obd cluster start xxxx -c obproxy-ce单独启动proxy组件

1 个赞


你这里不是通过2881登录成功了么已经

1 个赞

这个是172.16.120.6本地能够登录,
我不能在172.16.120.2机器上登录.6的obclient,难道分布式数据库中控机就是不可以登录其他机器上启动的obclient的?

2881是本地登录端口,你需要搭建obproxy使用2883的obproxy端口进行链接。
你看一下你的yaml配置文件是否配置了obproxy
然如果配置了可以使用 obd cluster start xxxx -c obproxy-ce单独启动proxy组件

现在是我在172.16.120.6上启动了obclient和obproxy

172.16.120.7和172.16.120.8上都是只有obclient进程

那么我想使用obproxy端口连接.7和.8上的obclient应该用什么命令连接呢?
我试了一下这条命令是链接不上的

ps -ef|grep obproxy 看一下,把yaml文件也发一下看看

这个是172.16.120.6机器上的


这是中控机172.16.120.2的yaml文件

你的obproxy只安装了一个6节点,所以ip你只能填6节点,7和8节点登录不进去的。obproxy会自己根据负载均衡选择登录哪个节点.
这个应该可以登录的obclient -172.16.120.6 -P2883 -uroot@sys#myoceanbase222 -p -Ac
obproxy可以创建1个或者多个节点成为一个proxy集群。

比如当前是 6 7 8 三个节点的ob集群,你的obproxy搭建在5节点
届时你的链接串为:obclient -172.16.120.5 -P2883 -uroot@sys#myoceanbase222 -p -Ac

1 个赞

我明白你的意思了大佬 但是我现在在6节点搭建了obproxy,我在2节点或者9节点上,用obclient -h172.16.120.6 -P2883 -uroot@sys#myoceanbase222 -p -Ac连接串仍然连接不上代理,他们几个节点之间的网络是通的,防火墙是关闭的,这个是为啥呢? 我现在只能在节点上用本地登录才行


我直接打断是因为它运行了蛮久的也,这个如果联通的话 应该不需要等很久的把?

  1. 你在 120.6 机器上,通过2881端口可以连上数据库,这说明observer是正常工作的。 但你在 120.2 机器无法访问120.6 的2881端口,很可能是OB_TCP_INVITED_NODES变量设置的问题。

  2. 建议先在 120.6 机器上,通过2881端口可以连上数据库,然后检查OB_TCP_INVITED_NODES变量设置:
    SHOW VARIABLES LIKE ‘ob_tcp_invited_nodes’;

测试下别的节点,看看是不是所有节点都无法登录呢,也有可能是proxy存在问题。