基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
使用源码构建 oblogproxy
更新时间:2023-08-03 17:20:32
您可以通过使用源码和下载安装包两种方式安装部署 oblogproxy。本文将介绍如何使用源码构建 oblogproxy。
编译
前置条件
安装 CMake
要求版本 3.20 及以上,下载安装,请参考 CMake 官方网站 。
安装依赖
根据操作系统的不同,安装依赖的情况可以分为以下两种
基于 Fedora(包括 CentOS,Fedora,OpenAnolis,RedHat,UOS 等)
yum install git wget rpm rpm-build cpio gcc gcc-c++ make glibc-devel glibc-headers libstdc++-static binutils基于 Debian(包括 Debian,Ubuntu 等)
apt-get install git wget rpm rpm2cpio cpio gcc make build-essential binutils
编译操作
执行 CMake 编译
mkdir buildenv && cd buildenv
# 生成
cmake ..
# 执行
make -j 6
说明
进行完该步操作,当前目录将产出
logproxy二进制文件。
编译选项
在执行 CMake 编译时,可以添加编译选项改变默认的行为。例如, 编译出 Demo,成功后,当前目录还会产出 demo_client 二进制。
mkdir buildenv && cd buildenv
cmake -DWITH_DEMO=ON ..
make -j 6
自定义 libobcdc.so
获取 libobcdc.so
您可以自己指定编译所使用的 obcdc,可在下载预编译包或者自行编译两种方式中任选其一。
下载预编译包
您可在 Release 页面 下载预编译包,obcdc 的包名是 "oceanbase-ce-devel-xxxx.系统版本.x86_64.rpm",可根据自己的系统选取,解压:
rpm2cpio oceanbase-ce-devel-xxxx.系统版本.x86_64.rpm | cpio -div && mv ./usr ./liboblog解压后获得:
- libobcdc.so:在
./usr/lib目录下。 - libobcdc.h:在
./usr/include目录下。
- libobcdc.so:在
编译 obcdc
您可参考 obcdc 编译说明,在编译 OceanBase 代码库 时,添加参数
OB_BUILD_LIBOBLOG=ON。git clone https://github.com/oceanbase/oceanbase.git && cd oceanbase bash ./build.sh release --init -DOB_BUILD_LIBOBLOG=ON --make获得编译产出:
- libobcdc.so:在
build_release/tools/obcdc/src/目录下。 - obcdc_tailf:在
build_release/tools/obcdc/tests/目录下。
- libobcdc.so:在
编译 oblogproxy
若您选择自定义 libobcdc.so,在编译 oblogproxy 时需要在编译命令中打开自定义 obcdc 的开关并指定路径:
mkdir buildenv && cd buildenv # 设置 CMake 环境变量从而可以找到预编译的 obcdc CMAKE_INCLUDE_PATH=/path/to/obcdc CMAKE_LIBRARY_PATH=/path/to/obcdc cmake -DUSE_LIBOBLOG=ON .. # 执行 make -j 6说明
这里假设您把
libobcdc.so和libobcdc.h都放在了/path/to/obcdc下。
全部编译参数
| 选项 | 默认 | 说明 |
|---|---|---|
| WITH_DEBUG | ON | 调试模式带 Debug 符号 |
| WITH_ASAN | OFF | 编译带 AddressSanitizer |
| WITH_TEST | OFF | 测试 |
| WITH_DEMO | OFF | Demo |
| WITH_GLOG | ON | 使用 glog |
| WITH_DEPS | ON | 自动下载预编译依赖 |
| USE_LIBOBLOG | OFF | 使用自定义预编译的 obcdc |
| USE_CXX11_ABI | ON | 是否使用 C++ 11 ABI 注意 如果您使用了预编译的依赖(obcdc),需要保持一致,否则会找不到符号。 |
编译依赖说明
默认情况下,CMake 会自动下载并编译依赖库。但有几个组件需要特别说明:
openssl:当前使用的版本是:1.0.1e。
注意
1.0.* 和 1.1.* 版本 API 少量不兼容,当前 obcdc 和 logproxy 都是基于 1.0.* 实现的,因此,您需注意版本是否一致。
obcdc:如前文描述,您也可以自行获取或编译,并由环境变量指定路径,运行时需要指定 LD_LIBRARY_PATH。
libaio:obcdc 依赖。
运行
oblogproxy 单一配置文件,用代码目录下的 conf.json。
配置系统租户
您获得 OBServer 的 sys 租户账号和密码后,需要通过加密配置给 oblogproxy,执行以下命令即可得到账号和密码的密文:
# 这里假设账号和密码分别为:user,pswd ./logproxy -x user # 执行后将会输出 4B9C75F64934174F4E77EE0E9A58**** ./logproxy -x pswd # 执行后将会输出 DCE2AF09D006D6A440816880B938****把获得的账号和密码的密文分别配置到
conf.json中的ob_sys_username和ob_sys_password字段,例如:{ "ob_sys_username": "4B9C75F64934174F4E77EE0E9A58****", "ob_sys_password": "DCE2AF09D006D6A440816880B938****" }组织程序目录
# 创建程序目录 mkdir -p ./oblogproxy/bin ./oblogproxy/run # 复制配置文件 cp -r ../conf ./oblogproxy/ # 复制起停脚本 cp ../script/run.sh ./oblogproxy/ # 复制程序二进制 cp logproxy ./oblogproxy/bin/启动 oblogproxy
cd ./oblogproxy # 指定 libobcdc.so 目录,让 oblogproxy 可以动态依赖 export LD_LIBRARY_PATH=/path/to/libobcdc bash ./run.sh start默认监听
2983端口,修改conf.json中的service_port字段可更换监听端口。说明
此时可以使用 oblogclient 进行 OceanBase 数据订阅,详细信息,参考 使用文档。
链路加密
oblogclient 与 oblogproxy 间 TLS 通信
修改 conf.json 中以下字段:
channel_type:"tls",开启与 oblogclient 通信的 TLS。tls_ca_cert_file:CA 证书文件路径。tls_cert_file:服务器端签名证书路径。tls_key_file:服务器端的私钥路径。tls_verify_peer:true,开启 oblogclient 验证。
注意
- 对应的 oblogclient 也需要相应配置,详细情况,参考 oblogclient链路加密。
- 以上路径均需使用绝对路径。
oblogproxy(obcdc)与 OBServer 间 TLS 通信
说明
oblogproxy 运行 obcdc 与 OBServer 进行交互。
修改 conf.json 中以下字段:
liboblog_tls:true,开启与 OBServer 通信的 TLS。liboblog_tls_cert_path:OBServer 相关证书文件路径(绝对路径),可以复制 OBServer 部署文件路径下的wallet文件夹,需要确保此路径包含:ca.pem,client-cert.pem,client-key.pem。