大家好。
我有一个在单机(Ubuntu/Linux)上执行的很好的程序(Go 编译后的二进制文件,主要来处理数据,处理结果存入数据库,可以并行处理),现在我现在想在多台机器上同时执行这个程序,各个进程不交互,互不影响。请问有没有什么工具可以集中管理这种多台机器上的进程,监视运行状态什么的?
需求总结:管理多台机器,每台机器运行多个同样的进程 (dosomething)。
内心:不太想使用 Docker 生态系统的东西。越是原始、底层、简单、有效,越好!。
NixOS + colmena
直接将你的 binary 打包成对应 OS 的 package
@xinyifly 这两个东西我还没听说过。
NixOS 这个概念挺好的(解决了升级迁移痛点,所有东西打包在一起了),我愿意尝试一下
Nix 将所有软件包以彼此分离的方式进行存储,因此就不存在 /bin、/sbin、/lib、/usr 之类的目录;相 反,所有软件包都保存在 /nix/store 中。NixOS 的其他创新特色包括可靠升级、回滚、可重现的系统配置、二进制代码基于源文件的管理模型、多用 户包管理。
不知道该用 Nix: the package manager,还是直接用 NixOS?
我只是简单一提,日常安利 NixOS ,入 Nix 学习曲线陡陗,需要做好长期学习心理准备。
而且目前国内的生态来看,公司运维基本没机会使用 NixOS。
如果是自己的服务器,有条件换 NixOS 当然是学起来最快的。
但是你提到了 Ubuntu,想尝试再用 Nix 做包管理,也是一个办法,我没这么用过,不知道能不能和 systemd 集成。
综合看你使用 Ubuntu,又不想用 Docker 的话,最优雅的方案应该是打包 apt。
不追求那么优雅的话,为啥不试试 Ansible?
我没打包过 apt,但是熟悉了 Nix 之后,给 NixOS 打包有源码的软件简单得不要不要的。