obproxy,读写分离,用户访问不了

【 使用环境 】测试环境
【 OB or 其他组件 】obproxy 4.3.5
【 使用版本 】 4.3.5
【问题描述】配置只读proxy,但是访问异常
【复现路径】
老师,您好,我们想搭建一个proxy,用于处理弱读请求读取从副本的。
我们在proxy中配置:

ALTER PROXYCONFIG SET obproxy_read_only = 0;
ALTER PROXYCONFIG SET obproxy_read_consistency = 1;
ALTER PROXYCONFIG SET init_sql='set session ob_read_consistency=WEAK; set session autocommit=1; set session _show_ddl_in_compat_mode = 1;';

但是使用后却出现如下异常:

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

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

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

1 个赞

不要使用127ip搭建obproxy

1 个赞

应该怎么搭呢

老师,请问是哪里有配置吗?

我们用内网DNS也不行。

使用内外ip,报错也是直接断链了么。

开启弱一致性读只是配置读写分离的第一步,在开启弱一致性读时,如果没有设置LDC策略,所有的请求还是会按照最开始讲到的 OBProxy 路由策略,优先发送到primary zone,如果未设置primary zone,即primary zone为random,那么请求会按照随机路由的策略,随机发送到任意副本,因此时有可能发送到 Leader 副本,并未实现完全的读写分离。

设置LDC路由策略

alter proxyconfig set proxy_idc_name=‘idc1’;

FOLLOWER_FIRST设置

在设置了LDC路由策略之后,弱一致性的读请求只会就近访问,为了保证弱一致性的读请求能够优先路由到Follower 副本上,还需要对OBProxy设置 proxy_route_policy 参数,这个参数有两个值:

  • FOLLOWER_FIRST:优先发往备副本,如果无备副本可用则发往主副本。
  • FOLLOWER_ONLY:只能发往备副本,如果无备副本可用则报错。

设置方式如下,通过连接OBProxy,执行如下命令

obclient [oceanbase]> alter proxyconfig set proxy_route_policy="follower_first";
Query OK, 0 rows affected (0.005 sec)

obclient [oceanbase]> show proxyconfig like "%proxy_route_policy%";
+--------------------+----------------+--------------------+-------------+---------------+
| name               | value          | info               | need_reboot | visible_level |
+--------------------+----------------+--------------------+-------------+---------------+
| proxy_route_policy | follower_first | proxy route policy | false       | SYS           |
+--------------------+----------------+--------------------+-------------+---------------+
1 row in set (0.002 sec)

通过以上的设置,那么就可以实现弱一致性的优先访问 follower 副本的策略。

1 个赞

补充一句你的这个搭建的时候是用的127.0.0.1吗,如果是建议重新部署一下,这个回环地址从别的地方也连接不了

没有配置 127.0.0.1呢。
用的是服务器的内网地址,测试的时候,没太讲究,后面我们注意一下。

感谢老师,我们已经配置成功。