目前的主机硬件及配置方案
具体配置可以参考之前的帖子,大概的配置是 5950X+128G+若干存储,host 系统是 proxmox ,安装了若干 lxc 和 vm 。其中有一个 lxc 用作 docker host ,lxc 基本上以服务类型区分,网关、下载、文件服务等等。
遇到的痛点
配置混乱,维护困难。难以记忆。作为一台 nas ,基本上不遇到大问题,我是不会进入到 cli 来进行维护,这样造成很容易忘记一些配置容器时的参数,包括挂载路径、密码、用户等等,结果就是上新服务麻烦,维护旧服务也很麻烦;
预想的解决方案
通过 ansible 进行各种服务的安装,包括创建 lxc ,安装 /更新 lxc 环境相关组件,安装 docker 服务,创建 /启动 /更新相关容器。目前已经实现了一个 lxc+几个 docker 容器的配置,实验下来体验完好。接下来只要按部就班把需要的服务一个个写成 playbook 就好。
新方案疑难
- 服务隔离。由于使用的配置性能较强,lxc+docker 套娃容器在 CPU 、硬盘性能上没有发现明显瓶颈,内存也够用,所以性能方面的 overhead 可以不用考虑,同时隔离后,我可以根据不同服务分别写一个 playbook ,可以进一步降低未来维护的心智成本;同时,隔离后也可以较为方便的对资源、权限进行加载、设置;所以是否有必要进行服务隔离呢,或者有什么弊端么?
-
容器通信。如果 1 中的答案是 yes ,那么接下来的问题是如何让各 lxc 以及其内的 docker 容器进行通信(因为打算数据库应用集中在一个容器、以及反代的需要),目前能想到的有两个方案
- Docker Swarm 。将所有 lxc 的 docker 组成 swarm ,建立 overlay network 。不考虑 k3s 、k8s 等等,非运维人士,也不打算在这方面更进一步;
- LXC Private Network over PVE Host 。在 PVE 上建立网桥,将所有 lxc 接入,所有 docker 容器配置为使用这个 interface ,网关容器使用所有 interface 。
- 上述两个方案简单试了一下,网络性能也没有瓶颈,最慢也可以到 40G 水平,所以倒是不用考虑,配置方面因为使用 ansible ,所以也不是痛点。我能想到的是,通过第二种方式配置,lxc 之间也可以较为方便的通信,方便非 docker 方式安装的应用可以无痛使用。但是不太清楚这两种方式是否有较大的弊端?
目前有这两大方面的疑问,提前感谢各位给予的各种建议。