MinIO 基础设施选型与优化
· ☕ 3 分钟
1. 硬件 1.1 CPU 支持 AVX/AVX-512,用于纠删码计算、SIMD 操作 支持 AES-NI,用于加密对象 单机存储总量 推荐的 vCPU 数 最多 1 TB 8 最多 10 TB 16 最多 100 TB 32 最多 1 PB 64 大于 1 PB 128 1.2 内存 尽可能大一点能提高并发,增加 Page Cache 命中率。 磁盘数量 32 GiB 64 GiB 内存 128 GiB 内

容器部署 ClickHouse
· ☕ 1 分钟
1. ClickHouse 单节点 配置环境变量 1 2 3 4 5 6 7 8 export CONTAINER_CLI=nerdctl export IMAGE=clickhouse/clickhouse-server:24 export CLICKHOUSE_INSTANCE_NAME=clickhouse export CH_DATA=/data/ops/clickhouse/$CLICKHOUSE_INSTANCE_NAME mkdir -p $CH_DATA/data $CH_DATA/log export CLICKHOUSE_PORT=9000 export CLICKHOUSE_USER=default export CLICKHOUSE_PASSWORD=xxxxxx 启动服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $CONTAINER_CLI run -d \ --name $CLICKHOUSE_INSTANCE_NAME \ --restart always \ --network host \ --ulimit memlock=-1 \ --ulimit stack=67108864 \ --ulimit nofile=1048576:1048576 \ --memory-swappiness=0 \ --cap-add=SYS_NICE \ --cap-add=SYS_RESOURCE \ -v $CH_DATA/data:/var/lib/clickhouse \ -v $CH_DATA/log:/var/log/clickhouse-server \ -e CLICKHOUSE_USER=$CLICKHOUSE_USER \ -e CLICKHOUSE_PASSWORD=$CLICKHOUSE_PASSWORD \ -e CLICKHOUSE_PORT=$CLICKHOUSE_PORT \ $IMAGE 测试连接 1 $CONTAINER_CLI exec -it $CLICKHOUSE_INSTANCE_NAME clickhouse-client --host 127.0.0.1 --port $CLICKHOUSE_PORT 打印交付结

容器化部署 Redis
· ☕ 1 分钟
1. Redis 主从模式 配置环境变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 export CONTAINER_CLI=nerdctl export IMAGE=redis:7 export REDIS_INSTANCE_NAME=redis-instance export REDIS_MASTER_INSTANCE_NAME="${REDIS_INSTANCE_NAME}-master" export REDIS_REPLICA_INSTANCE_NAME="${REDIS_INSTANCE_NAME}-replica" export REDIS_PASSWORD=xxxxxx export REDIS_MASTER_PORT=6379 export REDIS_MASTER_IP=10.0.0.1 export REDIS_REPLICA_PORT=6380 export REDIS_DATA=/data/ops/redis/$REDIS_INSTANCE_NAME mkdir -p $REDIS_DATA/data $REDIS_DATA/log 启动主节点 1 2 3 4 5 6 7 8 9 10 11 $CONTAINER_CLI run -d \ --name $REDIS_MASTER_INSTANCE_NAME \ --restart always \ --network host \ --ulimit memlock=-1 \ --ulimit stack=67108864 \ --ulimit nofile=1048576:1048576 \ --memory-swappiness=0 \ -v $REDIS_DATA/data:/data \ -v $REDIS_DATA/log:/var/log/redis \ $IMAGE redis-server --port $REDIS_MASTER_PORT --requirepass $REDIS_PASSWORD 应该可以这样的日志: 1 Ready to accept connections tcp 启动

容器化部署多节点 FoundationDB 及运维
· ☕ 3 分钟
1. 生成集群ID 1 cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1 下面以 CLUSTER_ID=fKbIga9RHP79OIx1 为例 2. 第一个节点上 清理旧数据 1 2 3 $CONTAINER_CLI rm -f $FDB_INSTANCE_NAME mv $FDB_DIR $FDB_DIR.$(date +%Y%m%d%H%M%S).bak mkdir -p $FDB_DIR 配置环境变量 1 2 3 4 5 6 7 8 9 export CONTAINER_CLI=nerdctl export IMAGE=foundationdb/foundationdb:7.1.26 export CLUSTER_ID=fKbIga9RHP79OIx1 export FDB_INSTANCE_NAME=fdb_server export FDB_CLUSTER_FIRST_IP=$(hostname -I | awk '{print $1}') export FDB_PORT=4500 export FDB_DIR=/data/ops/fdb/$FDB_INSTANCE_NAME 创建 cluster 文件 1 2 3 mkdir -p $FDB_DIR echo "${FDB_INSTANCE_NAME}:${CLUSTER_ID}@${FDB_CLUSTER_FIRST_IP}:4500" > $FDB_DIR/fdb.cluster cat $FDB_DIR/fdb.cluster 启动服务器节点 1 2 3 4 5 6 7 8

多机多盘 minio 集群不同纠删码配置在 IPoIB 下的性能测试
· ☕ 7 分钟
前面测试的发现瓶颈在网卡,本篇在 IPoIB 下进行补充测试。 1. minio 集群环境 1.1 创建 minio 集群 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 export CONTAINER_CLI=nerdctl export IMAGE=minio/minio:RELEASE.2025-04-22T22-12-26Z export ROOT_USER=minioadmin export ROOT_PASSWORD=minioadmin export MINIO_ERASURE_SET_DRIVE_COUNT=16 export MINIO_STORAGE_CLASS_STANDARD=EC:4 export POOL_0="http://minioib{1...4}/mnt/data{0...3}" $CONTAINER_CLI run -d \ --net host \ --ulimit memlock=-1 \ --ulimit stack=67108864 \ --ulimit nofile=1048576:1048576 \ --memory-swappiness=0 \ --name minio \ -v /mnt/data0:/mnt/data0 \ -v /mnt/data1:/mnt/data1 \ -v /mnt/data2:/mnt/data2 \ -v /mnt/data3:/mnt/data3 \ -e "MINIO_ROOT_USER=$ROOT_USER" \ -e "MINIO_ROOT_PASSWORD=$ROOT_PASSWORD" \ -e "MINIO_ERASURE_SET_DRIVE_COUNT=$MINIO_ERASURE_SET_DRIVE_COUNT" \