三节点(obproxy也是三个)部署的情况下,关闭一个obproxy,ocp报错

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】4.2.1.7
【问题描述】三节点(obproxy也是三个)部署的情况下,关闭一个obproxy,ocp报错

报错如下,为什么ocp只会连接59的obproxy???59关闭了ocp就不能用了??
2024-08-22 11:20:14.258 ERROR 7160 — [Druid-ConnectionPool-Create-1210939243,] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:oceanbase://10.10.10.59:2883/ocp_express?useUnicode=true&characterEncoding=UTF8&connectTimeout=2000&socketTimeout=600000&sessionVariables=ob_query_timeout=600000000,ob_trx_timeout=600000000&rewriteBatchedStatements=true, errorCode -1, state 08000

java.sql.SQLNonTransientConnectionException: Could not connect to HostAddress{host=‘10.10.10.59’, port=2883}. Connection refused (Connection refused)
at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:122) ~[oceanbase-client-2.4.3.jar!/:na]
at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:225) ~[oceanbase-client-2.4.3.jar!/:na]
at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1659) ~[oceanbase-client-2.4.3.jar!/:na]
at com.oceanbase.jdbc.internal.util.Utils.retrieveProxy(Utils.java:1427) ~[oceanbase-client-2.4.3.jar!/:na]
at com.oceanbase.jdbc.OceanBaseConnection.newConnection(OceanBaseConnection.java:306) ~[oceanbase-client-2.4.3.jar!/:na]
at com.oceanbase.jdbc.Driver.connect(Driver.java:89) ~[oceanbase-client-2.4.3.jar!/:na]
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.2.8.jar!/:1.2.8]
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:251) ~[druid-1.2.8.jar!/:1.2.8]
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.2.8.jar!/:1.2.8]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1659) ~[druid-1.2.8.jar!/:1.2.8]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1723) ~[druid-1.2.8.jar!/:1.2.8]
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2838) ~[druid-1.2.8.jar!/:1.2.8]

我用Java程序连接这个集群,也是将59关闭后就连接不上了。为什么不会自动切换??

obproxy 都是独立工作,彼此并没有集群功能(负载均衡)和高可用功能。
你的需求需要借助外部负载软硬件。如 f5 或 a10,或者 nginx,haproxy 去实现一个 vip,vip 将请求转发到后端obproxy。当一个 obproxy 挂了,vip 再转发到另外一个obproxy,从而实现高可用。

所以你部署 ocp的时候填的是一个具体的obproxy ip,而不是专门的vip,导致出现你看到的这种现象。

那为什么我用vip负载均衡到三个obproxy后,关掉59的obproxy整个程序就不可用了,为什么不会自动切换?vip具备探活功能,并且obclient可以通过vip连接上。


说错了,是关掉59的observer整个程序就不可用了。

proxy是单独工作的,你要在3鸽proxy前面加一个LB才能实现应用层连接的故障转移的

你把日志抛出来啊

麻烦提供组件版本信息
ocp日志信息默认是在/tmp/ocp/log/ocp/下的ocp.log
如有报错对应的节点,提供下对应节点下的 /home/admin/ocp-agent/log/下的日志

怎么关掉的 observer?是关机还是只杀 observer 进程?