分布式版本部署
安装包文件清单
UDB-TO提供 X86-64 和 ARM-64 两个版本,两个版本的安装包基本相同,安装文件打包成一个压缩文件。下面是文件清单:
| 文件或文件夹 | 内容描述 |
|---|---|
| bin.tar.gz | 可执行程序、命令行工具以及集群控制脚本,用于管理UDBTO系统。 |
| client.tar.gz | POSIX方式使用的客户端软件,一般安装在用户应用侧。 |
| blobstore.tar.gz | 纠删码存储子系统 |
| monitor.tar.gz | 监控节点程序 |
| setup | 安装程序执行文件 |
| distributed.conf | 分布式版本安装规划文件 |
| standalone.conf | 单机版本安装规划文件 |
| rpm-packages | 程序安装或者运行依赖的组件 |
rpm-packages中包括如下rpm包,用户可根据需要在各个主机上进行安装:
| 依赖项 | 作用 |
|---|---|
| sshpass | 用于远程访问其他机器 |
| jq | 用于在脚本中解析 json 格式的配置文件 |
| fuse | 用于支持 client 进行的挂载操作 |
安装规划
在部署分布式版本前,编辑配置文件 distributed.conf:
{
"deploymentMode":"distributed",
"path":"/path/to/udbto",
"logLevel":"error",
"hostlist":[
{"index":1, "ip":"192.168.0.1", "port":22, "user":"root", "password":"root"},
{"index":2, "ip":"192.168.0.2", "port":22, "user":"root", "password":"root"},
{"index":3, "ip":"192.168.0.3", "port":22, "user":"root", "password":"root"}
],
"master":{
"hostindex":[1, 2, 3],
"config":{
"clusterName":"udbto",
"metaNodeReservedMem":"1073741824",
"legacyDataMediaType":1
}
},
"datanode":{
"hostindex":[1, 2, 3],
"config":{
"disks":[
"/path/to/udbto/data/datanode/disks/disk1:10737418240",
"/path/to/udbto/data/datanode/disks/disk2:10737418240"],
"mediaType":1
}
},
"metanode":{
"hostindex":[1, 2, 3],
"config":{
"totalMem":"3680000000"
}
},
"objectnode":{
"hostindex":[1],
"config":{
"domains":["object.udbto.io"]
}
},
"monitor":{
"hostindex":[1]
},
"client":{
"hostindex":[1]
},
"blobstore":{
"hostindex":[1, 2, 3],
"region":"test-region",
"cluster_id":1,
"idc":["z0"],
"clustermgr":{
"chunk_size":167772160,
"code_mode_policies": [
{"mode_name":"EC3P3","min_size":0,"max_size":262144,"size_ratio":0.2,"enable":true},
{"mode_name":"EC12P4","min_size":262145,"max_size":5368709120,"size_ratio":0.8,"enable":true}
],
"allocatable_size":52428800
},
"blobnode":{
"disks": [
{"path": "/path/to/udbto/blobstore/data/disks/disk1", "auto_format": true, "max_chunks": 1024},
{"path": "/path/to/udbto/blobstore/data/disks/disk2", "auto_format": true, "max_chunks": 1024},
{"path": "/path/to/udbto/blobstore/data/disks/disk3", "auto_format": true, "max_chunks": 1024},
{"path": "/path/to/udbto/blobstore/data/disks/disk4", "auto_format": true, "max_chunks": 1024}
]
}
}
}
配置说明
| 参数 | 说明 |
|---|---|
| deploymentMode | 部署模式: distributed(分布式) 或 standalone(单机)。 |
| path | UDB-TO软件安装的路径。所有集群节点都安装到所在节点的这个路径。 |
| logLevel | 所有组件的日志级别,也可以在每个组件中单独指定日志级别,如果指定了,则覆盖全局的日志级别。注:纠删码组件使用"log_level",非纠删码组件使用"logLevel" |
| hostlist | 需要安装的主机列表。准备主机的IP地址、SSH协议端口、用户名和密码。index 是主机列表的序号,从1开始,并且要连续,且不能重复。后面的配置需要引用这个序号。用户名最好是root用户,需要具有响应的权限。 |
| hostindex | 主机索引,对应hostlist的index参数。表示相应的服务将安装到index对应的主机上。index必须是在hostindex中存在的,且不要重复。 |
| master | 【必须部署,至少 3 个节点】资源管理中心,负责异步处理不同类型的任务,如管理数据分片与元数据分片。 |
| clusterName | 集群名称,用于区分不同的集群。 |
| metaNodeReservedMem | 元数据节点预留内存大小,如果剩余内存小于该值,MetaNode变为只读。 |
| legacyDataMediaType | 数据节点使用的磁盘类型。1表示 SSD 盘,2表示 HDD 盘。 |
| datanode | 【必须部署,至少 3 个节点】负责管理数据分片。 |
| disks | 数据节点使用的逻辑磁盘路径及预留空间大小。UDB-TO使用操作系统格式化后的文件系统作为物理磁盘,不支持直接使用裸磁盘。格式: PATH:RETAIN,PATH: 磁盘挂载路径,RETAIN: 该路径下的最小预留空间,剩余空间小于该值即认为磁盘已满,单位:字节。 |
| mediaType | 节点使用的磁盘类型。1表示 SSD 盘,2表示 HDD 盘。 |
| metanode | 【必须部署,至少 3 个节点】负责管理元数据分片。 |
| totalMem | 元数据节点的最大可用内存,此值需高于master配置中 metaNodeReservedMem 的值。元数据节点使用内存数据库管理元数据,对内存要求比较高,越高越性能越好。最低内存要求3GB以上,否则相关服务将不能正常工作。 |
| objectnode | 【必须部署,至少 1 个节点】提供兼容 S3 的对象存储接口。 |
| domains | 对象网关使用的域名,为 S3 兼容接口配置域名以支持 DNS 风格访问资源。 |
| monitor | 【必须部署,至少 1 个节点】负责监控集群运行状态。 |
| client | 【可选部署】可通过挂载卷的方式访问数据。 |
| blobstore | 【可选部署】纠删码子系统,相较于多副本存储,纠删码存储方案以更多的计算开销为代价,降低存储空间占用。 |
| region | 纠删码系统使用的区域名。一个区域下可以有多个cluster。 |
| cluster_id | 纠删码系统使用的集群编号。 |
| idc | 纠删码系统所在机房编号。 |
| chunk_size | blobnode中每一个chunk的大小,即创建的文件的大小。 |
| code_mode_policies | mode_name:编码模式名称,具体配置参考下方的编码模式策略表;min_size:可写入最小对象的大小;max_size:可写入最大对象的大小;size_ratio:该模式占用的比例;enable:是否启用该编码模式。 |
| allocatable_size | 卷可分配的最低容量阈值, 建议该参数与集群单个最大可写文件大小一致,如果卷容量较小建议调整到更低的值。 |
| disks | path:数据存放目录;auto_format:是否自动格式化目录;max_chunks:单盘最大的chunk数量限制。 |
纠删码常用编码策略表
| 策略名称 | 数据块(N) | 校验块(M) | 本地校验(L) | AZ数量 | 写入副本数 | 最小分片大小 |
|---|---|---|---|---|---|---|
| EC3P3 | 3 | 3 | 0 | 1 | 5 | 2048 |
| EC12P4 | 12 | 4 | 0 | 1 | 15 | 2048 |
| EC6P6 | 6 | 6 | 0 | 3 | 11 | 2048 |
| EC12P9 | 12 | 9 | 0 | 3 | 20 | 2048 |
| EC15P12 | 15 | 12 | 0 | 3 | 24 | 2048 |
| EC6P10L2 | 6 | 10 | 2 | 2 | 14 | 2048 |
| EC16P20L2 | 16 | 20 | 2 | 2 | 34 | 2048 |
参数说明:
N(数据块):原始数据被拆分的块数
M(校验块):用于数据恢复的校验块数量
L(本地校验):本地修复校验块,减少跨AZ恢复开销
AZ数量:数据分布的可用区数量,支持1/2/3 AZ部署
写入副本数:成功写入所需的最小副本数,计算公式为 (N+M)/AZCount + N
最小分片大小:数据对齐的最小单元(2KB),当文件小于最小分片大小 × N时,会自动补零对齐
安装
配置完成后,执行部署命令:
$ ./setup -c distributed.conf
安装过程中,需要用户做两次确认:
接受软件安装许可
确认各个服务安装的目标主机清单
若安装过程中出现错误,请查看安装执行日志,分析错误发生的原因。日志文件位于 setup 同级目录,命名格式为 LOGyyyyMMddhhmmss.txt。在排除安装异常的问题后,执行以下命令清理已经安装的文件,然后再重新执行安装过程。
$ ./setup clean -c distributed.conf
卸载过程需要用户确认是否清空所有数据。
运行
安装完成后,进入安装目录,执行以下命令启动集群(启动时请关闭防火墙或者配置允许相应端口,否则可能raft通信失败导致服务无法启动):
$ ./bin/cluster-ctl start
若集群启动失败,请根据错误信息,查看对应主机所对应模块的日志文件,根据错误信息进行修复。修复完成后,重启集群:
$ ./bin/cluster-ctl restart
结果验证
运行成功后,执行:
$ ./bin/udbto-cli volume create testvol testuser -y
Create volume success.
该命令会尝试创建一个用户为testuser,名称为testvol的卷。