首批通过分布式安全可靠测评,为关键业务系统打造
使用源码构建 oblogproxy
更新时间:2024-04-19 09:30:55
您可以通过下载安装包和使用源码两种方式安装部署 oblogproxy。本文将介绍如何使用源码构建 oblogproxy。
前提条件
已安装 CMake,要求版本 3.20 及以上。下载安装,请参考 CMake 官方网站 。
编译 oblogproxy
安装依赖
根据操作系统的不同,安装依赖的情况可以分为以下两种
基于 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
编译操作
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-cdc-${package_version},可根据自己的系统选择下载。然后进行解压:
rpm2cpio oceanbase-ce-cdc-${package_version} | cpio -idv在 RPM 包解压的目录下,会有
home/admin/oceanbase目录,包含了以下 obcdc 运行必要的组件:- 库文件:包括
libobcdc.so,在lib64/目录下。 - 头文件:
libobcdc.h、ob_errno.h在include/libobcdc/目录。
- 库文件:包括
编译 obcdc
详细操作,请参考 obcdc 编译说明。
git clone https://github.com/oceanbase/oceanbase.git && cd oceanbase ./build.sh release -DOB_BUILD_CDC=ON --init --make编译产出物有:
- libobcdc.so:在
${PROJECT_BUILD_DIR}/src/logservice/libobcdc/src/目录下。 - obcdc_tailf:在
$${PROJECT_BUILD_DIR}/src/logservice/libobcdc/tests/目录下。
- libobcdc.so:在
编译 oblogproxy
若您选择自定义 libobcdc.so,在编译 oblogproxy 时需要在编译命令中打开自定义 obcdc 的开关并指定路径,示例以
libobcdc.so和libobcdc.h都放在了/path/to/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
全部编译参数
| 选项 | 默认 | 说明 |
|---|---|---|
| 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
配置系统租户
oblogproxy 单一配置文件,用代码目录下的 conf.json。
出于安全考虑,oblogproxy 需要配置某个用户的用户名和密码,该用户必须是 OceanBase 的 sys 租户用户才能连接。
注意
此处的用户名不应包含集群名称或租户名称。
您获得 OBServer 节点的 sys 租户账号和密码后,需要通过加密配置给 oblogproxy。执行以下命令即可得到账号和密码的密文:
# 这里假设账号和密码分别为:user,pswd
./logproxy -x user
# 执行后将会输出 4B9C75F64934174F4E77EE0E9A58****
./logproxy -x pswd
# 执行后将会输出 DCE2AF09D006D6A440816880B938****
把获得的账号和密码的密文分别配置到 /usr/local/oblogproxy/conf/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 字段可更换监听端口。oblogproxy 的服务日志位于 logs/,LogReader(任务线程)的服务日志位于 run/{client-id}/logs/。
说明
此时可以使用 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。