多主机docker-compose与数据库的静态内部IP

时间:2018-11-20 21:45:13

标签: mysql docker

我为此进行了3个多星期的战斗。 我已经尝试了许多教程,但没有一个对我有用。

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

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

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

他们都可以通过10.0.0.0/8

互相联系

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

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

服务器A可以托管4个主数据库和3个从属服务器(都在互连)。

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

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

然后我创建了一个网络sqlnet
 码头工人网络创建--subnet = 10.0.4.0 / 16 sqlnet

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

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

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

任何人都知道该怎么做吗???对于某些人来说,内部IP真是个地狱(使用-p IP:port对于其他Web应用程序/ Web api来说可以正常工作,但是那些不需要静态内部IP。)

1 个答案:

答案 0 :(得分:0)

因此,通过在Docker主机上创建新接口解决了该问题

10.0.4.1,

然后在Docker-compose中 端口:   -'10 .0.4.1:4000:3306'

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