mysql - 多主机 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)。
解决方案
所以通过在 Docker 主机上创建新接口解决了这个问题
IE
10.0.4.1,
然后在 Docker-compose 端口中: - '10.0.4.1:4000:3306'
通过使用这个接口 10.0.4.1 可以通过整个子网 10.0.0.0/8 访问,并且所有设备都可以看到 docker 容器,因为它将是单独的服务器。
推荐阅读
- c++ - 如何在保持 UNIX 格式的同时将“ros::Time”转换为字符串?
- javascript - 在 AJAX 调用中获取图像而不是 url
- memory - 数据总线和内存单元寻址混乱
- python - 未找到 windows 10 python 串行模块,但 pip install pyserial 已通过
- c# - 如何在一行中验证类中的所有属性
- heroku - 'tesseract:加载共享库时出错:libarchive.so.13:python
- html - 使用 CSS 按下时更改检查按钮标签
- javascript - Algolia - 获取所有唯一标签及其总数
- python - 检测输入中的关键字
- c++ - SetConsoleDisplayMode() 函数无法将我的窗口设置为全屏