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
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
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
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
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