分布式数据库连接问题

根据您提供的信息,您在尝试连接到 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存在问题。

那是不是需要启动的时候把yaml文件中的obproxy给放在120.6 120.7 120.8都放上? 我现在只给了.6

这个需要自行考虑, :rofl:我总感觉你的理解有点怪怪的
建议学习下下面关于obproxy的知识有很多章节介绍可以慢慢看
https://open.oceanbase.com/blog/10900290

正常情况下哦。

  1. 没有启动成功,是不会的。
  2. 网络联通性有问题,也不会的。

你这个命令都报错,不应该啊。 感觉你的集群就没有部署成功。

在 120.6 机器上,通过2881端口连上数据库, 执行如下命令:

show databases;

如果输出中没有看到oceanbase这个库,即表示集群初始化未成功。

目前集群的搭建和登录功能是否正常了呢?