分布式版本部署

安装包文件清单

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

安装过程中,需要用户做两次确认:

  1. 接受软件安装许可

  2. 确认各个服务安装的目标主机清单

若安装过程中出现错误,请查看安装执行日志,分析错误发生的原因。日志文件位于 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的卷。