CurveAdm Playbook 介绍
curveadm playbook的用法。
例一:使用 CurveAdm Playbook 执行脚本
hosts.yaml文件中:
global:user: curvessh_port: 22private_key_file: /home/curve/.ssh/id_rsahosts:- host: server-host1hostname: 10.0.1.1- host: server-host2hostname: 10.0.1.2- host: server-host3hostname: 10.0.1.3
curveadm hosts commit hosts.yaml
curveadm playbook test.sh------TOTAL: 3 hosts--- server-host1 [SUCCESS]server-host1--- server-host2 [SUCCESS]server-host2--- client-curve3 [SUCCESS]server-host3
test.sh的内容如下:
hostname
hosts.yaml文件中:
global:user: curvessh_port: 22private_key_file: /home/curve/.ssh/id_rsahosts:- host: server-host1hostname: 10.0.1.1- host: server-host2labels:- clienthostname: 10.0.1.2- host: server-host3hostname: 10.0.1.3
curveadm hosts commit hosts.yaml
test.sh的内容如下:
ls $1
test.sh,使用参数
-l client可以指定在 label 为 client 的机器上执行。
curveadm playbook -l client test.sh test------TOTAL: 1 hosts--- server-host2 [SUCCESS]test
例三:使用 CurveAdm Playbook 部署 memcached 集群
memcached为例,介绍
curveadm playbook的使用方法,下面所使用到的所有文件可以从 memcached 中获取。
hosts.yaml文件中:
global:user: curvessh_port: 22private_key_file: home/curve/.ssh/id_rsahosts:- host: server-host1hostname: 10.0.1.1labels:- memcachedenvs:- IMAGE=memcached:1.6.17- LISTEN=10.0.1.1- PORT=11211- USER=root- MEMORY_LIMIT=32768 # item memory in megabytes- MAX_ITEM_SIZE=8m # adjusts max item size (default: 1m, min: 1k, max: 1024m)- EXT_PATH=/mnt/memcachefile/cachefile:1024G- EXT_WBUF_SIZE=8 # size in megabytes of page write buffers.- EXT_ITEM_AGE=1 # store items idle at least this long (seconds, default: no age limit)- host: server-host2hostname: 10.0.1.2labels:- memcachedenvs:- IMAGE=memcached:1.6.17- LISTEN=10.0.1.2- PORT=11211- USER=root- MEMORY_LIMIT=32768 # item memory in megabytes- MAX_ITEM_SIZE=8m # adjusts max item size (default: 1m, min: 1k, max: 1024m)- EXT_PATH=/mnt/memcachefile/cachefile:1024G- EXT_WBUF_SIZE=8 # size in megabytes of page write buffers.- EXT_ITEM_AGE=1 # store items idle at least this long (seconds, default: no age limit)- host: server-host3hostname: 10.0.1.3labels:- memcachedenvs:- IMAGE=memcached:1.6.17- LISTEN=10.0.1.3- PORT=11211- USER=root- MEMORY_LIMIT=32768 # item memory in megabytes- MAX_ITEM_SIZE=8m # adjusts max item size (default: 1m, min: 1k, max: 1024m)- EXT_PATH=/mnt/memcachefile/cachefile:1024G- EXT_WBUF_SIZE=8 # size in megabytes of page write buffers.- EXT_ITEM_AGE=1 # store items idle at least this long (seconds, default: no age limit)
curveadm hosts commit hosts.yaml
hosts.yaml中各个部分的作用。
global部分记录
ssh使用的端口、用户、私钥等信息。
hosts记录了要部署服务的机器的信息:
- host: server-host1hostname: 10.0.1.1labels:- memcachedenvs:- IMAGE=memcached:1.6.17- LISTEN=10.0.1.1- PORT=11211- USER=root- MEMORY_LIMIT=32768 # item memory in megabytes- MAX_ITEM_SIZE=8m # adjusts max item size (default: 1m, min: 1k, max: 1024m)- EXT_PATH=/mnt/memcachefile/cachefile:1024G- EXT_WBUF_SIZE=8 # size in megabytes of page write buffers.- EXT_ITEM_AGE=1 # store items idle at least this long (seconds, default: no age limit)
hostname记录要部署机器的
ip,使用
host作为机器的别名,一个
host表示一台机器,是
curveadm playbook执行的基本单位。如果想在一台机器上部署多个服务,可以保持
hostname一致,然后使用不同的
host来区别。以下方式表示在机器
10.0.1.1上同时部署两个服务:
- host: server-host1hostname: 10.0.1.1...- host: server-host2hostname: 10.0.1.1
labels表示机器的标签,允许有多个,拥有同一个
label的机器表示归属于同一个组,
curveadm playbook管理的基本单位。
curveadm playbook执行时使用
-l或者
--label指定标签来识别要执行命令的机器。如以下命令就表示在所有拥有 label
memcached机器上执行
xxx.sh脚本。
curveadm playbook --label memcached xxx.sh
env里设置一些环境变量供后续脚本执行时使用,大部分为
memcached的启动参数,这部分内容可以参考部署脚本
deploy.sh中的
init的内容。在创建镜像时指定启动的参数,在
init中根据需求配置对应的启动参数。如需要添加新的参数请自行修改
hosts.yaml中的
env和
deploy.sh中的
init()内容。
...init() {${g_docker_cmd} pull ${IMAGE} >& dev/nullif [ "${LISTEN}" ]; theng_start_args="${g_start_args} --listen=${LISTEN}"fi...if [ "${EXT_PATH}" ]; theng_start_args="${g_start_args} --extended ext_path=/memcached/data${EXT_PATH}"volume_path=(${EXT_PATH//:/ })g_volume_bind="--volume ${volume_path}:/memcached/data${volume_path}"fi...}...
hosts.yaml为例,部署一个
memcached集群。假设已经成功导入主机,执行一下命令部署
memcached集群:
curveadm playbook -l memcached deploy.sh
TOTAL: 3 hosts--- server-host1 [SUCCESS][✔] create container [memcached-11211][✔] start container [memcached-11211][✔] wait 3 seconds, check container status...CONTAINER ID NAMES STATUS2836176cdfe8 memcached-11211 Up 3 seconds--- server-host2 [SUCCESS][✔] create container [memcached-11211][✔] start container [memcached-11211][✔] wait 3 seconds, check container status...CONTAINER ID NAMES STATUS65308cc2f676 memcached-11211 Up 3 seconds--- server-host3 [SUCCESS][✔] create container [memcached-11211][✔] start container [memcached-11211][✔] wait 3 seconds, check container status...CONTAINER ID NAMES STATUS9f5045852974 memcached-11211 Up 3 seconds
deploy.sh脚本还会检查容器名称
memcached-${PORT}和端口号是否占用。容器名称已占用认为已经创建会跳过创建返回仍是成功。端口号通过
lsof -i:${port}检查是否占用,如已占用则返回失败。
memcached的状态:
curveadm playbook -l memcached status.sh
TOTAL: 3 hosts--- server-host1 [SUCCESS]CONTAINER ID NAMES STATUS2836176cdfe8 memcached-11212 Up 2 minutesmemcached addr: 10.0.1.1:11211--- server-host2 [SUCCESS]CONTAINER ID NAMES STATUS65308cc2f676 memcached-11211 Up 2 minutesmemcached addr: 10.0.1.2:11211--- server-host3 [SUCCESS]CONTAINER ID NAMES STATUS9f5045852974 memcached-11211 Up 2 minutesmemcached addr: 10.0.1.3:11211
memcached集群:
curveadm playbook -l memcached stop.sh
TOTAL: 3 hosts--- server-host1 [SUCCESS][✔] stop container[memcached-11211]--- server-host2 [SUCCESS][✔] stop container[memcached-11211]--- server-host3 [SUCCESS][✔] stop container[memcached-11211]
memcached集群:
curveadm playbook -l memcached clean.sh
TOTAL: 3 hosts--- server-host1 [SUCCESS][✔] rm container[memcached-11211]--- server-host2 [SUCCESS][✔] rm container[memcached-11211]--- server-host3 [SUCCESS][✔] rm container[memcached-11211]
支持指定除 label 方式外的机器列表
curveadm playbook --host 'host1:host2:host3' command.sh
host.yaml 中支持全局 env 的配置
IMAGE等多个主机共用的环境变量目前需要在各个主机中重复定义。此类变量可以放在全局中定义,可以精简配置文件。
添加 CurveAdm 管理集群的环境变量
__curveadm_kind__、
__curveadm_mds_addr__、
__curveadm_etcd_addr__等相关环境变量供用户使用。
CurveAdm Playbook pull
curveadm playbook pull来获取指定项目的可执行的脚本和 host.yaml 模板。使用下命令就是下载 memcached 项目:
curveadm playbook pull memcached
AI 场景中的 IO 行为浅析


关于 Curve
Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。
文章转载自OpenCurve,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




