我为此进行了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。)
答案 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容器,因为它将是单独的服务器。