CoreOS Torus分布式存储系统入门指南
前言
CoreOS Torus是一个开源的分布式存储系统,专为容器化环境设计。它提供了块存储服务,支持数据复制和一致性校验,能够满足现代云原生应用对持久化存储的需求。本文将详细介绍如何搭建和运行一个基础的Torus集群。
环境准备
1. 获取Torus二进制文件
Torus提供了两种获取方式:
- 直接下载预编译版本:官方会定期发布稳定版本的二进制文件包
- 从源码编译:
- 需要安装Go语言环境并正确配置GOPATH
- 使用make命令编译后会生成三个关键二进制文件:
torusd
:存储守护进程torusctl
:集群管理工具torusblk
:客户端守护进程,负责挂载卷
编译过程会自动处理依赖关系,首次编译时会安装glide依赖管理工具。
2. 部署etcd集群
Torus依赖etcd作为其元数据存储后端,要求etcd版本必须为v3.0或更高。部署方式包括:
单节点本地部署
etcd --data-dir /tmp/etcd
使用rkt容器运行
rkt fetch coreos.com/etcd:v3.0.0-beta.0
mkdir /tmp/etcd
rkt run coreos.com/etcd:v3.0.0-beta.0 \
--volume=data-dir,kind=host,source=/tmp/etcd,readOnly=false \
-- \
-advertise-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
-listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
-listen-peer-urls http://0.0.0.0:2380
生产环境建议部署高可用的etcd集群,这需要额外的配置工作。
初始化Torus集群
3. 集群初始化
初始化命令相当于"格式化"整个存储集群:
./bin/torusctl init
如果etcd不在默认位置,可以通过-C
参数指定:
./bin/torusctl -C $ETCD_IP:2379 init
初始化过程会设置集群的全局配置参数,大多数情况下使用默认值即可满足需求。
部署存储节点
4. 启动存储节点
Torus支持多种部署方式:
手动运行
./bin/torusd --etcd 127.0.0.1:2379 --peer-address http://127.0.0.1:40000 --data-dir /tmp/torus1 --size 20GiB
可以启动多个节点,只需确保端口和数据目录不冲突。
使用rkt容器
rkt fetch quay.io/coreos/torus
mkdir -p /tmp/torus/{1,2,3}
rkt run --volume=volume-data,kind=host,source=/tmp/torus/1 \
--set-env LISTEN_HOST=0.0.0.0 \
--set-env PEER_ADDRESS=http://0.0.0.0:40000 \
--set-env ETCD_HOST="${ETCD_IP}" quay.io/coreos/torus
使用Docker
docker run \
--net=host \
-v /path/to/data1:/data \
-e STORAGE_SIZE=20GiB \
-e LISTEN_HTTP_PORT=4321 \
-e PEER_ADDRESS=http://127.0.0.1:40000 \
-e ETCD_HOST=127.0.0.1 \
quay.io/coreos/torus
集群管理
5. 查看节点状态
./bin/torusctl list-peers
输出示例:
ADDRESS UUID SIZE USED MEMBER UPDATED REB/REP DATA
http://127.0.0.1:40000 b2a2cbe6-38b7-11e6-ab37-5ce0c5527cf4 5.0 GiB 0 B Avail 1 second ago 0 B/sec
6. 激活存储节点
./bin/torusctl peer add --all-peers
激活后节点状态会从"Avail"变为"OK",表示它们已开始存储数据。
7. 查看集群拓扑
./bin/torusctl ring get
创建和使用存储卷
8. 创建块存储卷
./bin/torusctl volume create-block myVolume 10GiB
这会创建一个10GB的虚拟块设备,默认配置下会自动进行数据复制和CRC校验。
9. 通过NBD挂载卷
sudo modprobe nbd
sudo ./bin/torusblk --etcd 127.0.0.1:2379 nbd myVolume /dev/nbd0
成功挂载后会看到类似"Attached to XXX. Server loop begins ..."的消息。
10. 格式化并挂载
sudo mkfs.ext4 /dev/nbd0
sudo mkdir -p /mnt/torus
sudo mount /dev/nbd0 -o discard,noatime /mnt/torus
discard
选项启用了TRIM命令支持,有助于SSD设备的垃圾回收。
高级管理
节点维护
-
移除节点:
./bin/torusctl peer remove $PEER_ADDRESS
节点移除后数据会自动重新复制到其他节点。
-
硬移除:当节点永久失效时直接移除,但要注意不要超过复制因子限制,否则可能导致数据丢失。
结语
通过以上步骤,我们完成了Torus存储集群的基本部署和使用。Torus的设计非常适合容器化环境,提供了可靠的分布式块存储服务。对于生产环境,建议进一步配置监控告警系统,并考虑部署高可用的etcd集群作为后端存储。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考