这里讲述了,我如何在多节点服务器上开启和关闭 tomoon 量化程序。
由于,各种原因,所以,多节点部署肯定会不断的升级,这里我将同时讲述采用该方案的背景已经可以实现的效果。
由于预算很小,所以,没有采用 jenkins
等自动化部署方式,而是通过 shell
进行连接远程服务器部署。
由于,跑程序的服务器「目前是一核一G」部署在香港、东京、新加坡等,所以,国内连接的时候不是很通畅,即便是科学之后也是如此。
所以,购买了一个一核0.5G
的香港机器作为跳板机。
首先,跳板机必须和远程服务机进行 ssh
无密码登陆,本地也要和跳板机进行无密码登陆,因为,只有无密码登陆才能执行远程服务器指令。
整个过程是,我本地对跳板机发送指令,然后,跳板机对远程服务器发送指令。
指令主要有
- 上传程序 「
tar
包」 - 解压程序包
- 开始程序
- 停止程序
上传程序
文件 release_all.sh
内容如下
这里讲一下
ssh root@跳板机IP "cd /root/ ; sh release.sh"
这句话是连接跳板机,并在跳板机中执行
cd /root/ sh release.sh
文件 release.sh
这样就将程序上传到了远程服务器上。
解压程序包
在上面上传这一章节我们还遗留了一个问题
- 如何证明你的新程序已经上传到了服务器上,而不会因为网络原因导致失败?
这就是,解压程序包所要解决的事情。
文件 ready_all.sh
执行跳板机上的 ready.sh
文件 ready.sh
首先,跳板机会执行远程服务器上的 ready.sh
文件,内容如下
然后,输出
ssh root@服务器IP "cat /root/quantify/update.txt"
我每次上传都会更新 update.txt
里面的内容,如何,我正常上传,并且正常解压后,我本地展示的远程内容,应该是我更新后的内容。
这样,比照,就会发现是否成功执行。
开始程序
文件 start_all.sh
文件 start.sh
文件 quantify.sh
本地和跳板机都没啥好说的,这里说一下远程服务器上的指令。
首先,我的程序是有 log
输出的,所以,我并不希望输入到 nohup.out
所以,在后面加了
>/dev/null 2
如果不加这个,必须要按一下 ctrl + c
这个是非常不友好的,说的比较抽象,可以在本地试一下。
另外,关于是否成功开始,我使用的是钉钉通知。
停止程序
这里我们必须解决,本地执行脚本的时候,检测服务器是否真的停止了程序。
文件 stop_all.sh
文件 stop.sh
文件 stop.sh
上面主要说一下跳板机的内容。
首先运行服务器上的 stop.sh
然后,输出服务器上的相关程序的状态。如果没有停止,则会输出相关的程序。
原文链接:https://benpaodewoniu.github.io/2021/11/07/tomoon6/
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6022