Maison > Questions et réponses > le corps du texte
微服务启动的时候,会自动向服务注册中心报告自己的ip和端口。但是服务是在docker容器内运行的,注册的ip就成了172开头的docker内部ip, 这个地址是无法被其它机器访问的。
这种情况是不是必须手动将服务注册的地址改成宿主机的地址和端口呢,有其它好方案没
----- update -----
docker 1.12版本以后engine有了swarm模式,经测试使用swarm的overlay网络可解决跨主机通讯问题,这种方案是否合适呢
高洛峰2017-04-27 09:05:14
Le réseau superposé fourni par Docker Swarm peut fournir une communication réseau intra-conteneur entre les hôtes. Le conteneur local peut spécifier un réseau au démarrage pour former un réseau interne. Ensuite, nginx peut être déployé en mode hôte sur l'hôte Swarm, en utilisant etcd. et consul Attendez l'enregistrement dynamique des services et la mise à jour de la configuration du proxy inverse de nginx pour atteindre l'objectif de découverte dynamique des services.
Cependant, la superposition présente actuellement la perte de performances la plus importante parmi toutes les méthodes de communication entre hôtes, atteignant 60 %. Quelqu'un a fait un test sur Internet, vous pouvez le vérifier. Par conséquent, pour l'instant, l'environnement de production doit encore prendre en compte kubernetes ou mesos
高洛峰2017-04-27 09:05:14
Je ne connais pas grand chose en réseau. Veuillez rechercher la communication entre hôtes sur Google Docker pour trouver des solutions.
PHP中文网2017-04-27 09:05:14
Il existe plusieurs idées :
1. Le périphérique hôte signale l'IP au démarrage du service
2. Injectez les informations IP de l'hôte dans la variable d'environnement du conteneur lors du démarrage du service
3. le reçoit Lors de l'enregistrement d'une demande, obtenez l'adresse IP de la couche réseau
曾经蜡笔没有小新2017-04-27 09:05:14
Les conteneurs étant dynamiques, les adresses IP sont généralement attribuées de manière aléatoire. Après avoir utilisé le système de planification des conteneurs pour démarrer automatiquement certains conteneurs, les adresses d'accès de ces conteneurs peuvent être enregistrées dans le centre d'enregistrement des services via l'enregistrement du service. De cette manière, lorsque des services externes souhaitent accéder à ces conteneurs, ils peuvent accéder à ces conteneurs via la découverte de services
世界只因有你2017-04-27 09:05:14
Solutions de communication réseau Docker multi-hôtes très simples et variées.
Kubernetes utilise de la flanelle.
巴扎黑2017-04-27 09:05:14
Vous pouvez envisager d'autres moyens
1. Utiliser des outils d'orchestration de services tels que Kubernetes (modifications importantes du docker)
2. Utiliser des centres d'enregistrement tels que consul (modifications importantes du code du centre d'enregistrement)
Si le microservice utilise Spring Cloud, la deuxième option est plus recommandée, ce qui peut parfaitement résoudre ce problème