部署 Databend Meta 集群
预计部署时间: 5 分钟:stopwatch:
databend-meta
是全局性的 metadata 服务(例如用户信息、表格架构等)。 单一 databend-meta 进程可用于测试,生产环境通常使用3到5个节点组成一个集群。
必须先部署并启动databend-meta
,然后才能启动 databend-query
集群。
.~~~~~~~~~~~~~~~~.
! MySQL !
! ClickHouse !
! REST API !
.------. '~~~~~~~~~~~~~~~~'
| meta | ^
'------' |
^ v
| .----------------.
.------. | |
| meta |<-------------------->| databend-query |
'------' | |
| '----------------'
v ^
.------. !
| meta | v
'------' .~~~~~~~~~~~~~~~~.
! !
! AWS S3 !
! !
'~~~~~~~~~~~~~~~~'
1. 下载
您可以从 GitHub 下载最新的二进制文件或从源代码编译。
mkdir databend && cd databend
- Linux
curl -LJO https://github.com/datafuselabs/databend/releases/download/v0.7.32-nightly/databend-v0.7.32-nightly-x86_64-unknown-linux-musl.tar.gz
- Linux
tar xzvf databend-v0.7.32-nightly-x86_64-unknown-linux-musl.tar.gz
您可以找到两个可执行文件:
ls
# databend-meta databend-query
2. 部署 databend-meta
Databend 独立模式 不可以 在生产环境中使用。 但不必担心。 一个独立模式的 databend-meta
可随时通过 Cluster management API 扩展为一个包含3或5个节点的集群。
2.1 独立模式
2.1.1 配置 databend-meta.toml
log_dir = "metadata/_logs"
admin_api_address = "127.0.0.1:28101"
grpc_api_address = "127.0.0.1:9101"
[raft_config]
id = 1
single = true
raft_dir = "metadata/datas"
2.1.2 启动 databend-meta
./databend-meta -c ./databend-meta.toml > meta.log 2>&1 &
2.1.3 检查 databend-meta
curl -I http://127.0.0.1:28101/v1/health
Check the response is HTTP/1.1 200 OK
.
2.2 集群模式
在本章中,我们将部署一个包含3个节点的 databend-meta
集群。
首先我们要以 单一 模式启动第一个节点,形成一个单节点的集群。 然后启动另外两个节点,并让它们加入该集群,最终形成一个包含三个节点的集群。
3个节点中的一个将被选为 leader,提供数据读写 API。 其它节点是 follower ,并将请求重定向到 leader。 这样一来,可以配置 databend-query
连接到集群中的任何节点。
2.2.1 创建 databend-meta-1.toml
log_dir = "metadata/_logs1"
admin_api_address = "0.0.0.0:28101"
grpc_api_address = "0.0.0.0:9191"
[raft_config]
id = 1
raft_dir = "metadata/datas1"
raft_api_port = 28103
raft_listen_host = "127.0.0.1"
raft_advertise_host = "localhost"
admin_api_address
是获取集群状态的服务。grpc_api_address
是用于应用程序写入或读取 Meta 数据。raft_config.id
是此节点的全局唯一ID,u64
格式。raft_config.raft_dir
是存储 Meta 数据的本地目录,包括 Raft 日志和状态机等。raft_config.raft_api_port
,raft_config.raft_listen_host
和raft_config.raft_advertise_host
用来定义内部Raft通信的服务。 应用程序不应使用此端口。raft_listen_host
是内部 Raft 服务器监听的主机地址。raft_advertise_host
是内部 Raft 客户端连接的主机地址。single
告诉节点初始化一个单节点集群。 如果已经完成集群的初始化,请忽略这个配置项。
了解更多配置信息,请参阅配置。
2.2.2 启动第一个 databend-meta 节点
./databend-meta -c ./databend-meta-1.toml > meta1.log 2>&1 &
2.2.3 检查第一个 databend-meta 节点
curl -I http://127.0.0.1:28101/v1/health
检查响应是否为 HTTP/1.1 200 OK
。
2.2.4 为其他两个节点创建配置文件
其它节点的配置与第一个相似,但 single
应替换为 join
,且 id
必须不同。
log_dir = "metadata/_logs2"
admin_api_address = "0.0.0.0:28201"
grpc_api_address = "0.0.0.0:28202"
[raft_config]
id = 2
raft_dir = "metadata/datas2"
raft_api_port = 28203
raft_listen_host = "127.0.0.1"
raft_advertise_host = "localhost"
join = ["localhost:28103"]
log_dir = "metadata/_logs3"
admin_api_address = "0.0.0.0:28301"
grpc_api_address = "0.0.0.0:28302"
[raft_config]
id = 3
raft_dir = "metadata/datas3"
raft_api_port = 28303
raft_listen_host = "127.0.0.1"
raft_advertise_host = "localhost"
join = ["localhost:28103"]
join
指定了一个现有的集群的地址列表 (<raft_advertise_host>:<raft_api_port>
),用于新节点的加入。
2.2.5 启动其他节点
./databend-meta -c ./databend-meta-2.toml > meta2.log 2>&1 &
./databend-meta -c ./databend-meta-3.toml > meta3.log 2>&1 &