为什么要使用阿里云的命令行工具
是不是吃饱了撑了,非要用命令行,明明人家啥操作都已经封装好了界面,直接用不就完事了嘛。就以我司为例,使用了阿里云的负载均衡。每次发布都是这个流程,先到阿里云官网把服务器A从负载中切掉,然后A发布代码,把A再丢到负载里,把B从负载中切掉,B发布代码,再把B丢到负载里,这种人工操作首先很麻烦,其次,搞不好还会出错。但是如果使用命令行工具,把切换负载的命令写到shell脚本里面,只要执行脚本,就啥问题都没了,不用登陆什么阿里云官网搞来搞去的。
写在前面
阿里云服务器命令行是基于python脚本的,其实centos是自带了python环境的,但是很坑爹的是自带的python环境是2.6.6,阿里云命令行却需要2.7.8才能带的动。阿里云命令行教程在官网上非常简明易懂,反而升级python版本比较麻烦,所以本教程大部分内容是教怎么升级python版本。
准备工作
以root身份进入系统,因为要装不少东西,所以必须是以root身份
yum install openssl-devel -y
yum install zlib*
这两行命令行在最先执行,因为一旦升级了python版本,yum就不能用了,这个非常坑爹,我之前就是先升级了python版本,执行这两行报错 ,以为系统没有yum,就花了大量的时间装了yum,其实先执行这两行就没那么多事了,所以以后如果还想用yum的话,切回老版本python,yum还是可以继续用的
查看python版本:python -V
升级python版本
mkdir /tmp/python
cd /tmp/python/
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
下载这个还是比较慢的,如果有快的网址的话,欢迎更新
tar -zxvf Python-2.7.8.tgz
我比较倾向于把这个移到别的地方,放在/tmp下怪怪的,所以
mkdir /usr/python
mv /tmp/python/Python-2.7.8 /usr/python/
cd /usr/python/Python-2.7.8
./configure
编译python前修改一个文件
vim Modules/Setup
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
这五行前的注释去掉
然后可以编译了
make
make install
编译完了之后 执行 python -V 看一下python版本
有些机器上编译完了之后 python版本就成了2.7.8 ,有些还是2.6.6
如果编译python顺利成了2.7.8就别管了
如果还是2.6.6
执行下面
mv /usr/bin/python /usr/bin/python.old
ln -s /usr/python/Python-2.7.8/python /usr/bin/python
再看一下版本,不出意外应该就是2.7.8 了
安装阿里云命令行工具
cd /tmp/
curl "https://bootstrap.pypa.io/get-pip.py" -o "pip-install.py"
python pip-install.py
pip是python常用的依赖导入工具,类似maven
pip install aliyuncli
pip install aliyun-python-sdk-slb
用pip导入阿里云命令行的两个sdk,下面那个是负载的sdk,因为我们主要是用来切负载,所以安装这个,阿里云官网上还有别的sdk,几乎所有在阿里云官网上能做的操作,命令行都涵盖了。
执行阿里云命令行
这时候 exit 退出root
用自己账号登录服务器
aliyuncli configure
分别输入Access Key ID,Access Key Secret,Region Id,output format
前三个必须得填写,不然执行不了脚本,最后一个默认就是json,直接回车就好了
然后可以执行 切换负载的脚本试一下
aliyuncli slb RemoveBackendServers --LoadBalancerId xx --BackendServers "['yy']"
aliyuncli slb AddBackendServers --LoadBalancerId xx --BackendServers "[{'ServerId':'yy'}]"
上面那个是移除负载的脚本 ,下面那个是 添加负载的脚本
以后写执行脚本 ,就可以写成这样
aliyuncli slb RemoveBackendServers --LoadBalancerId xx --BackendServers "['yy']"
sh deploy.sh
sleep 60
aliyuncli slb AddBackendServers --LoadBalancerId xx --BackendServers "[{'ServerId':'yy'}]"
先执行移除负载,然后启动项目,睡眠60秒,最后添加负载
网友评论