首页 > 解决方案 > 多主机 docker-compose 与数据库的静态内部 IP

问题描述

我正在与这个斗争超过 3 周。我尝试了许多教程,但没有一个对我有用。

基本上我有超过 10 台运行 Ubuntu + docker 的服务器。

其中一些可通过内部 IP 访问,有些可通过公共 IP 访问。

我已经使用 VPN 连接了所有位置。

他们都可以通过 10.0.0.0/8 互相联系

现在我尝试在每台服务器上创建 MySQL 数据库(请不要问为什么,因为这是需求的一部分,不会改变)。

其中一些是主人,一些是奴隶。

服务器 A 可以托管 4 个 Master DB 和 3 个 Slave(都是互连的)。

基本上我想创建一个具有静态内部 IP 的 MySQL 服务器(通过虚拟 IP 公开端口已经完成,但静态内部 IP 是要求的一部分,无论如何都不会改变)。

不幸的是,我试图在每台服务器上创建虚拟接口(每台服务器只有 1 个带有暴露端口的 ip)10.0.4.1 10.0.4.2

然后我创建了一个网络
sqlnet docker network create --subnet=10.0.4.0/16 sqlnet

不幸的是,由于某种原因,具有内部 IP 的服务器在此之后只是与网络断开连接(我可以使用 10.0.5.0 或类似的东西),我必须使用 ILO 来删除网络。

老实说,我好像做错了什么。大多数教程都是无用的,因为它们都需要额外的知识(我唯一的知识是使用 dotnet build 并将其部署在 linux 上,由于 MS SQL 的成本,我们必须检查 MySQL 是否是可靠的选项)。

基本上我想创建 docker-compose (试图使用堆栈,但由于网络或接口超出范围等而遇到很多不同的问题),它将部署 MySQL 并将其公开以复制给其他同一 VPN 网络中的服务器。

有谁知道怎么做????对于某些人来说,内部 IP 简直是人间地狱(使用 -p IP:port 对其他 Web 应用程序/Web api 效果很好,但那些不需要静态内部 IP)。

标签: mysqldocker

解决方案


所以通过在 Docker 主机上创建新接口解决了这个问题

IE

10.0.4.1,

然后在 Docker-compose 端口中: - '10.0.4.1:4000:3306'

通过使用这个接口 10.0.4.1 可以通过整个子网 10.0.0.0/8 访问,并且所有设备都可以看到 docker 容器,因为它将是单独的服务器。


推荐阅读