如何用PyMLSQL操作阿里云ECS

前言

最近一段时间感受了下阿里云和华为云。双方铺的面都挺全。直观上来看, 阿里云控制台有一股浓郁的toC精致范,华为云则是企业简约朴实范,作为互联网熏陶过来的人,我显然觉得前者是更漂亮和舒适的。

华为云应该是这两三年才开始发力,有点晚,而且目前来看还在于铺面,质量还没上来,尤其是在web交互上和阿里云有一定的距离,目前包括非常基础的ECS服务都还没有SDK,只有API接口。

碎碎念了,我们来看看PyMLSQL是如何操作阿里云ECS,方便大家低成本去动态控制ECS。

什么是PyMLSQL

PyMLSQLMLSQL一个辅助项目,目前提供两个功能:

  1. 为MLSQL的Python支持提供了一个可用的库。
  2. 提供对云的操作封装,从而实现MLSQL集群的自动化云端部署。

今天我们主要是介绍他的第二个功能。

抽象方式

对于ECS操作,使用原生的API/SDK会有如下几个问题:

  1. 比如创建或者释放ECS实例的动作是异步的,你需要自己去关注对应的状态。
  2. 我们需要发送shell命令到创建好的ECS实例中,从而实现自动化配置,目前SDK是没有相关功能的。同时我们还需要检测ECS启动后对应的ssh server是不是ready等。

一般而言,我们使用ECS实例其实是四步走:

  1. 启动ECS
  2. 执行shell脚本配置环境
  3. 执行shell脚本启动服务
  4. 关闭释放ECS

这四个步骤也是顺序执行的,需要阻塞。所以PyMLSQL提供三个核心命令:

  1. start 启动ECS
  2. exec-shell 执行shell脚本
  3. stop 关闭并且释放ECS实例

同时,因为不可避免的需要有client机和ECS实例互传文件的需求,所以有

  1. copy-from-local
  2. copy-to-local

两个辅助指令。

由这五个指令,基本我们就能完成我们大部分任务了。

安装介绍

最简单方式:

pip install pymlsql

你也可以手动下载源码安装:

# please make sure the x.x.x is replaced by the correct version.
pip uninstall -y pymlsql && python setup.py sdist bdist_wheel &&
cd ./dist/ && pip install pymlsql-x.x.x-py2.py3-none-any.whl && cd -

之后你就可以使用pymlsql命令了。

使用介绍

你用pymlsql --help 可以获取帮助信息。

start 指令

pymlsql start 
--image-id m-bp13ubsorlrxdb9lmv2x 
--instance-type ${MASTER_INSTANCE_TYPE}  
--need-public-ip ${MASTER_WITH_PUBLIC_IP} 
--init-ssh-key false 
--key-pair-name mlsql-build-env-local
--security-group ${SECURITY_GROUP}

基本上如果你懂阿里云,那么概念是比较清晰的。这里最值得关注的是后面三个参数:

  1. need-public-ip 是否需要公网IP,如果你是在阿里云服务器执行指令,那这个可以设置为false,当然,如果你需要联网下载东西,那么还是需要设置为true的。
  2. init-ssh-key 如果设置为true,我们会自动为你生成一个秘钥,这样以后你就可以通过该秘钥登录任何通过该秘钥创建的服务器。--key-pair-name 设置秘钥的名字,然后改秘钥会自动生成在你的.ssh目录中。
  3. 安全组。这个你需要到阿里云控制台上先创建一个,然后指定。这个主要是为了控制ECS的端口访问的。

stop

stop指令只要填写instance_id就行。

pymlsql stop --instance-id ${instance_id}  --key-pair-name mlsql-build-env-local

exec-shell

我们先看一个示例:


SCRIPT_FILE="/tmp/k.sh"

-#把脚本写入到一个文件
cat << EOF > ${SCRIPT_FILE}
#!/usr/bin/env bash
chown -R webuser:webuser /home/webuser/start-slaves.sh
chown -R webuser:webuser /home/webuser/.ssh/${MLSQL_KEY_PARE_NAME}
chmod 600 /home/webuser/.ssh/${MLSQL_KEY_PARE_NAME}
chmod u+x /home/webuser/start-slaves.sh
EOF

#指定脚本文件到远程执行
pymlsql exec-shell --instance-id ${instance_id} \
--script-file ${SCRIPT_FILE} \
--execute-user root
--key-pair-name mlsql-build-env-local

execute-user 定义以什么用户在ECS实例中执行脚本。

案例

利用PyMLSQL,我们实现了完全由shell脚本即可在阿里云部署一套任意节点数的MLSQL集群。大家可以看看mlsql_cluster_cloud

基本思路脚本会自动申请一台ECS实例(具有公网的),然后再登录到到ECS实例中去申请slave节点。还是很库的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容