【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.2
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
当配置haproxy或者F5连接过来的时候,有办法配置一下可以看到真实的来源IP吗
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.2
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
当配置haproxy或者F5连接过来的时候,有办法配置一下可以看到真实的来源IP吗
学习一下
根据文档库中的信息,OceanBase 数据库本身并不直接提供类似“IP 透传”的功能配置。但是,当您使用负载均衡设备(如 haproxy 或 F5)连接到 OceanBase 时,可以通过以下方式获取真实的客户端来源 IP:
obproxy
获取真实 IP如果您的架构中使用了 OBProxy,可以利用 OBProxy 的功能来记录和传递客户端的真实 IP 地址。OBProxy 支持通过 X-Forwarded-For
或类似的机制将客户端的真实 IP 地址传递给后端的 OceanBase 数据库。
确保 haproxy 或 F5 在转发请求时添加了客户端的真实 IP 地址。
option forwardfor
这样会在 HTTP 请求头中添加 X-Forwarded-For
字段。在 OBProxy 中启用对 X-Forwarded-For
的支持。
SHOW PROCESSLIST;
来查看连接的真实来源 IP。show processlist
查看真实 IP即使没有使用 OBProxy,您也可以通过 SQL 查询来获取当前连接的详细信息。执行以下命令:
SHOW PROCESSLIST;
该命令会返回当前所有连接的信息,包括客户端的真实 IP 地址(如果负载均衡器正确传递了相关信息)。
如果您不希望通过 OBProxy,而是直接让 haproxy 或 F5 将真实 IP 传递给 OceanBase,可以尝试以下配置:
haproxy 配置:
option forwardfor
。log-format
并包含 %ci
(客户端 IP)字段。frontend ob_frontend
bind *:2883
mode tcp
option tcplog
log-format "%ci:%cp [%t] %ft %b/%s %Tw/%Tc/%Tt %B %ts %ac/%fc/%bc/%sc/%rc %sq/%bq"
default_backend ob_backend
backend ob_backend
mode tcp
server ob1 xx.xx.xx.xx:2881 check
F5 配置:
X-Forwarded-For
插件或类似功能,确保客户端的真实 IP 被附加到请求头中。直连模式 vs ODP 模式:
生产环境建议:
虽然 OceanBase 数据库本身没有直接的“IP 透传”配置选项,但通过结合 OBProxy 和负载均衡器(如 haproxy 或 F5)的功能,您可以轻松实现获取真实客户端 IP 的需求。具体方法取决于您的网络架构和组件选择。
详情请参考:
show process
都能看到客户端的真实 IP。这个透传 有好有坏,看你想怎么利用。当客户端都是 k8s 应用的时候,真实的ip 都是 k8s 虚拟机的 ip ,很多重复。不一定能用。这种情况下,OB 租户的白名单 功能还是不要根据 客户端 IP 来限制。
楼主有条件的话可以帮验证一下 我上面观点对不对 /
v3 的研究参考: OBCE V3 培训实验:应用到数据库全链路分析(下)
学习
学习学习