服务隔离的必要性疑问、以及不同 Docker Host 之间通信的方案

讨论 未结 3 78
sidkang
sidkang 会员 2022年8月14日 02:26 发表
<h3>目前的主机硬件及配置方案</h3> <p>具体配置可以参考之前的<a href="https://www.v2ex.com/t/861011" rel="nofollow">帖子</a>,大概的配置是 5950X+128G+若干存储,host 系统是 proxmox ,安装了若干 lxc 和 vm 。其中有一个 lxc 用作 docker host ,lxc 基本上以服务类型区分,网关、下载、文件服务等等。</p> <h3>遇到的痛点</h3> <p><strong>配置混乱,维护困难</strong>。难以记忆。作为一台 nas ,基本上不遇到大问题,我是不会进入到 cli 来进行维护,这样造成很容易忘记一些配置容器时的参数,包括挂载路径、密码、用户等等,结果就是上新服务麻烦,维护旧服务也很麻烦;</p> <h3>预想的解决方案</h3> <p>通过 ansible 进行各种服务的安装,包括创建 lxc ,安装 /更新 lxc 环境相关组件,安装 docker 服务,创建 /启动 /更新相关容器。目前已经实现了一个 lxc+几个 docker 容器的配置,实验下来体验完好。接下来只要按部就班把需要的服务一个个写成 playbook 就好。</p> <h3>新方案疑难</h3> <ol> <li><strong>服务隔离</strong>。由于使用的配置性能较强,lxc+docker 套娃容器在 CPU 、硬盘性能上没有发现明显瓶颈,内存也够用,所以性能方面的 overhead 可以不用考虑,同时隔离后,我可以根据不同服务分别写一个 playbook ,可以进一步降低未来维护的心智成本;同时,隔离后也可以较为方便的对资源、权限进行加载、设置;<strong>所以是否有必要进行服务隔离呢,或者有什么弊端么?</strong></li> <li> <strong>容器通信</strong>。如果 1 中的答案是 yes ,那么接下来的问题是如何让各 lxc 以及其内的 docker 容器进行通信(因为打算数据库应用集中在一个容器、以及反代的需要),目前能想到的有两个方案 <ul> <li>Docker Swarm 。将所有 lxc 的 docker 组成 swarm ,建立 overlay network 。不考虑 k3s 、k8s 等等,非运维人士,也不打算在这方面更进一步;</li> <li>LXC Private Network over PVE Host 。在 PVE 上建立网桥,将所有 lxc 接入,所有 docker 容器配置为使用这个 interface ,网关容器使用所有 interface 。</li> <li>上述两个方案简单试了一下,网络性能也没有瓶颈,最慢也可以到 40G 水平,所以倒是不用考虑,配置方面因为使用 ansible ,所以也不是痛点。我能想到的是,通过第二种方式配置,lxc 之间也可以较为方便的通信,方便非 docker 方式安装的应用可以无痛使用。但是不太清楚这两种方式是否有较大的弊端?</li> </ul> </li> </ol> <p>目前有这两大方面的疑问,提前感谢各位给予的各种建议。</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
3个回复
  • ltkun
    2022年8月14日 02:58
    我就是这么干的 不过也越来越臃肿了 pve 非特权 lxc 里面开 docker 关于互访 我暂时没有考虑 docker 网络配置比较灵活 哪怕不是同一网络都可以通过主机不同端口通信 container 甚至都能得到家里网络的实际 ip
    0 0
  • sidkang
    2022年8月14日 02:58
    确实可以,我之所以想搞网络隔离还是希望能够通过白名单的方式来给其他人 /家里人用相关的服务,安全到还是其次,网络简单用的话还是因为这个有点不放心。
    0 0
  • ltkun
    2022年8月14日 03:27
    pve 隔离也很方便 因为它自带 VLAN 对于外网用户也可以用各种方式进行隔离 比如我用 openvpn 的不同配置来访问不同子网
    0 0