从一开始,NewsmanApp就被设计为水平扩展。这意味着分布式数据库(Cassandra)、负载均衡器、大量服务器、大量配置(许多重复的)。直到最近,输入系统的每个新服务器设置都是手动完成的。也就是说,我们已经在内部 WIKI 中记录了该过程,任何有访问权限的人都可以按照 SETUP 的步骤进行操作。复制命令,粘贴,运行,检查配置,重新启动服务(postfix、munin、monit 等)。
这项工作一开始还算有效,但渐渐地就变成了一份没有吸引力的常规工作。当您需要在 60 多台服务器上更新到最新版本的应用程序时,您该怎么做?
选项 1) 手动。 ssh远程主机。从存储库复制新文件,重新启动服务。它在 阿塞拜疆 WhatsApp 号码数据库 几台服务器上运行,但从 20 台开始就出现问题了。此外,进行更新的人必须高度值得信赖(在公司拥有丰富的经验、值得信赖)。 SSH 密钥并不适合所有人。
选项 2)织物。我们热爱 Python。布料是自然的选择。好的,通过ssh制作部署脚本,运行脚本并等待。远程连接也是通过 SSH 完成的。通过 ssh 部署很慢,并且安全问题(高度信任的人)仍然存在。
选项 3) Debian 存储库和 saltstack。我们开始寻找替代解决方案,例如:Chef或Puppet。 Chef 是 Ruby(这里不喜欢 Ruby)。 Puppet 太企业化了。相反,我遇到了saltstack。 Python、YAML 配置和Zero MQ。结果如何?惊人的速度。 60多台服务器同时部署只需不到1分钟。安装新服务器简化为:安装 salt-minion(saltstack 从属)并运行命令(salt-call state.sls install)。通过将所有内容迁移到 saltstack,我们解决了速度和安全问题。公司中在新服务器上进行设置的人员不应有权访问 ssh 密钥或主服务器。
分类帖子:我很高兴完成了自动化流程,可以去度假了。