Docker容器内微服务向注册中心注册ip地址的问题
给我你的怀抱
给我你的怀抱 2017-04-27 09:03:14
0
7
1284

微服务启动的时候,会自动向服务注册中心报告自己的ip和端口。但是服务是在docker容器内运行的,注册的ip就成了172开头的docker内部ip, 这个地址是无法被其它机器访问的。

这种情况是不是必须手动将服务注册的地址改成宿主机的地址和端口呢,有其它好方案没

----- update -----
docker 1.12版本以后engine有了swarm模式,经测试使用swarm的overlay网络可解决跨主机通讯问题,这种方案是否合适呢

给我你的怀抱
给我你的怀抱

répondre à tous(7)
小葫芦

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

小葫芦

Je ne connais pas grand chose en réseau. Veuillez rechercher la communication entre hôtes sur Google Docker pour trouver des solutions.

我想大声告诉你

Utiliser l'hôte pour ajouter un DNS interne

Ty80

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

曾经蜡笔没有小新

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

世界只因有你

Solutions de communication réseau Docker multi-hôtes très simples et variées.

Kubernetes utilise de la flanelle.

巴扎黑

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal