如何在云盘环境下,自动启用运行keydb集群

2020-05-13 18:05:46 浏览数 (1)

如何在云盘环境下,自动启用运行keydb集群

背景

keydb号称可以重复利用磁盘来节省内存的成本, 如果要启用flash功能的话, 必须使用btrfs或者zfs, 本文介绍基于一种zfs的方案。

大约这样的,制作一个带有keydb的镜像, 然后镜像启动的时候挂载云盘, 初始化zfs, 挂载到keydb的数据目录, 启动keydb进程, 然后再运行集群初始化命令, 一气呵成。

解决方案

首先制作镜像

通过packer先把安装有keydb功能的服务制作好镜像

其次挂载云盘

通过terraform绑定实例和云盘的关系

最后是集群初始化脚本(本文关键步骤)

初始化脚本是通过cloud-init的userdata来进行的, terraform有专门的模块暂不细表.

脚本有个关键的初始化zfs, 如下

代码语言:txt复制
zpool create -f keydb raidz ${device_list}

zfs create keydb/data

zfs set mountpoint=/data keydb/data

但是这个device_list在脚本执行的时候, 还没挂载成功, 就会导致脚本失败, keydb没有启用flash特性

解决的思路是加一个检测步骤, 等待块设备ready了, 再执行

代码语言:txt复制
while [ ! -b ${device_name} ]; do

    sleep 3

    echo "wait ${device_name} ready"

done

完整代码如下

代码语言:txt复制
while [ ! -b ${device_name} ]; do

    sleep 3

    echo "wait ${device_name} ready"

done

zpool create -f keydb raidz ${device_list}

zfs create keydb/data

zfs set mountpoint=/data keydb/data

参考

https://unix.stackexchange.com/a/313233

原文链接

https://www.wxhmf.com/posts/how-to-auto-run-keydb-cluster-with-zfs-enabled/

0 人点赞