多服务器代码部署
假如我现在有5台服务器做负载,当我要对这5台服务器上代码做更新的时候,应该怎么做呢? 先传一份代码到其中一台服务器,然后通过脚本分别拷到其他4台服务器,拷贝完了在分别启动?拷贝的话,可以用scp实现,问题是启动怎么实现呢?目前用的时候PM2来管理node进程,难道我要分别登陆到每一台服务器上,然后启动吗? 刚接触这一块,各位有没有好的解决方案啦,谢谢了! 服务器系统是linux
28 回复
先把待发布的文件(不带node_modules)提交到一个git仓库,在每台机器上,第一次都clone这个仓库; 更新时,通过ansible,批量执行 git pull npm i pm2 restart all 回滚时,类似的流程
其实,你只需要一个通过 ssh 协议来执行命令的工具,工具有:
- Python :Ansible,Fabric
- JavaScript:Flightplan
如何选?
- Ansible 很强,但有自己的配置语言。
- Fabric 也很强,但得懂点 Python。
- Flightplan 一般般,但做你说的这些,是够了。
#! /bin/bash
tar czf deploy.tar.gz *
scp deploy.tar.gz user@host1
ssh user@host1 'tar xzf deploy.tar.gz deploy'
scp deploy.tar.gz user@host2
ssh user@host2 'tar xzf deploy.tar.gz deploy'
scp deploy.tar.gz user@host3
ssh user@host3 'tar xzf deploy.tar.gz deploy'
scp deploy.tar.gz user@host4
ssh user@host4 'tar xzf deploy.tar.gz deploy'