Docker déploie des versions autonomes et en cluster de nacos

Docker déploie des versions autonomes et en cluster de nacos

 

Table des matières

1. Pas de mysql externe, méthode de déploiement de package logiciel

2. Pas de mysql externe, méthode de déploiement docker

3. MySQL externe, méthode de déploiement docker

Quatre, version de cluster haute disponibilité docker-compose + nginx + mysql

Cinq, version de cluster haute disponibilité docker + mysql + nginx

notes de version nacos 2.0

Parmi eux, les ports 7848, 8848, 9848 et 9849 sont des ports qui doivent être ouverts, 8848 est le port de la page Web, 7848 est l'interface de synchronisation des données du cluster et 9848 et 9849 sont des ports qui doivent être développés pour les versions nacos supérieures à 2.0. 0.

Par rapport à Nacos 1.X, Nacos 2.0 a ajouté la méthode de communication gRPC, donc 2 ports doivent être ajoutés. Le port nouvellement ajouté est automatiquement généré avec un certain décalage sur la base du port principal configuré (server.port).

Le client a la même logique de calcul. L'utilisateur configure le port principal (par défaut 8848) comme dans 1.X, et calcule le port gRPC correspondant (par défaut 9848) via le même décalage. Par conséquent, s'il existe une redirection de port ou un pare-feu entre le client et le serveur, vous devez ajuster la configuration de la redirection de port et la configuration du pare-feu en conséquence.

1. Pas de mysql externe, méthode de déploiement du package logiciel
Adresse de téléchargement de la dernière version stable : https://github.com/alibaba/nacos/releases

Après le téléchargement, décompressez le répertoire comme suit, dans bin se trouve le script de démarrage

Commande de démarrage (standalone représente le fonctionnement en mode autonome, le mode non cluster) :

sh startup.sh -m autonome

Le port par défaut du service nacos est 8848. Entrée du navigateur http://ip:8848/nacos

Le compte de connexion et le mot de passe sont tous deux nacos

2. Pas de connexion externe à mysql, méthode de déploiement
docker run -d -p 8848:8848 --env MODE=standalone --name nacos nacos-server:2.0.4
3. Connexion externe à mysql, méthode de déploiement docker
Installer mysql

Créez une base de données nacos_config, insérez le sql lié à la configuration de nacos

docker run -d \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.16.0.124 \
-e MYSQL_SERVICE_PORT=31190 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD='xxxx' \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--restart=always \
--name nacos_saasoperationsecond \
nacos-server:2.0.4
四、docker-compose+nginx+mysql高可用集群版本
 

1. Installez mysql

Créez une base de données nacos_config, insérez le sql lié à la configuration de nacos

sudo docker network create --driver bridge --subnet 10.139.0.0/16 --gateway 10.139.0.1 pknet
3.vim docker-compose-nacos.yaml

version : "3"
services :
  nacos : nom d'hôte :     image
    nacos : nacos/nacos-server:2.0.3     nom_conteneur : bdyh-nacos     privilégié : vrai     réseaux : -     volumes       pknet :       - ./cluster-logs:/home/nacos/logs       -     Ports ./init.d/custom.properties:/home/nacos/init.d/custom.properties :       - "7848:7848"       - "8848:8848"       - "9848:9848"       - "9555:9555"       - "9849:9849"     env_file :       - ./env/nacos-ip.env     restart : réseaux en cas d'échec :   pknet :     externe :vrai vim nacos-ip.env




















#nacos dev env
#Si le nom d'hôte est pris en charge, vous pouvez utiliser hostname, sinon utiliser ip, et la valeur par défaut est ip
PREFER_HOST_MODE=ip
MODE=cluster
#Dans le cas de plusieurs cartes réseau, spécifiez ip ou carte réseau
NACOS_SERVER_IP=192.168. 10.128
#Autres nœuds du cluster [ip1:port ip2:port ip3:port]
NACOS_SERVERS=192.168.10.128:8848 192.168.10.129:8848 192.168.10.130:8848
#nacos web port, s'il n'est pas écrit, la valeur par défaut est 8848
NACOS_APPLICATION_PORT= 8848
#la plate-forme de source de données ne prend en charge que mysql ou n'enregistre pas vide
SPRING_DATASOURCE_PLATFORM =mysql
MYSQL_SERVICE_HOST=192.168.10.131
MYSQL_SERVICE_DB_NAME=caseRetrieval-config
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=bdyh@2020
MYSQL_ DATABASE_NUM=1 #
Paramètre de réglage JVM
J VM_XMS=2g
JVM_XMX= 2g
JVM_XMN=2g
JVM_MS=128m
JVM_MMS=320m
vim custom.properties

#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost :9200
# métriques pour prometheus
management.endpoints.web.exposure.include=*
 
# métriques pour la recherche élastique
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost :9200
 
# métriques pour l'influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management .metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
启动:docker-compose -f docker-compose-nacos.yaml up -d

Accès au navigateur : ip+8848, ip+8849, ip+8850 sont tous accessibles


Cinq, description de l'environnement de version de cluster haute disponibilité docker + mysql + nginx

Déploiement de l'IP de l'hôte

192.168.216.56 mysql nacos1

192.168.216.49 nacos2

192.168.216.35 nacos3

192.168.216.49 nginx pour l'équilibrage de charge

1. Installez mysql

2. Créez la base de données nacos_config, et insérez le sql lié à la configuration de nacos

3. cluster nacos

Tous les hôtes de déploiement créent leurs propres répertoires tels que /root/nacos/config logs pour le mappage de chemin

Ajoutez un fichier custom.properties sous mkdir -p /root/nacos/config
mkdir -p /root/nacos/logs
mkdir -p /data/nacos/config
/root/nacos/config

vi /root/nacos/config/custom.properties

#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost :9200
# métriques pour prometheus
management.endpoints.web.exposure.include=*
 
# métriques pour la recherche élastique
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost :9200
 
# métriques pour l'influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management .metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
#D'autres sont commentés, y compris certaines surveillances, etc., vous devrez modifier la configuration par vous-même à l'avenir
. sont commentés, y compris certains Monitoring, etc., vous pouvez modifier la configuration par vous-même à l'avenir

Chaque hôte utilise docker pour démarrer nacos :

nacos au 192.168.216.56 :

docker run -d --name nacos1 --hostname nacos1 --net=host --add-host nacos1:192.168.216.56 --add-host nacos2:192.168.216.35 --add-host nacos3:192.168.216.49 -e PREFER_HOST_MODE =nom d'hôte -e MYSQL_SERVICE_HOST=192.168.216.56 -e MYSQL_SERVICE_DB_NAME=nacos_config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=xxxx -e MYSQL_SERVICE_PORT=3306 -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848 " -v /racine/nacos /config/custom.properties:/home/nacos/init.d/custom.properties -v /root/nacos/logs:/home/nacos/logs nacos/nacos-server:1.4.2
192.168.216.49的nacos :

docker run -d --name nacos2 --hostname nacos2 --net=host --add-host nacos1:192.168.216.56 --add-host nacos2:192.168.216.35 --add-host nacos3:192.168.216.49 -e PREFER_HOST_MODE =nom d'hôte -e MYSQL_SERVICE_HOST=192.168.216.56 -e MYSQL_SERVICE_DB_NAME=nacos_config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD='xxxx' -e MYSQL_SERVICE_PORT=3306 -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:88 48" -v /racine /nacos/config/custom.properties:/home/nacos/init.d/custom.properties -v /root/nacos/logs:/home/nacos/logs nacos/nacos-server:1.4.1
192.168.214.35的nacos :

docker run -d --name nacos3 --hostname nacos3 --net=host --add-host nacos1:192.168.216.56 --add-host nacos2:192.168.216.35 --add-host nacos3:192.168.216.49 -e PREFER_HOST_MODE =nom d'hôte -e MYSQL_SERVICE_HOST=192.168.216.56 -e MYSQL_SERVICE_DB_NAME=nacos_config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD='xxxx' -e MYSQL_SERVICE_PORT=3306 -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:88 48" -v /racine /nacos/config/custom.properties:/home/nacos/init.d/custom.properties -v /root/nacos/logs:/home/nacos/logs nacos/nacos-server:1.4.1
4.安装nginx。配置负载均衡

flux {     nacos en amont {         serveur 192.168.216.56:8848 ;         serveur 192.168.216.49:8848 ;         serveur 192.168.216.35:8848 ;     }     serveur {         écouter 18848 ;         proxy_pass nacos ;     } } 5.访问:192.168.216.49:18848/nacos










J'ai toujours rencontré divers problèmes lors de l'utilisation de nacos.Le résultat final est que le projet springcloud ne peut pas être enregistré sur le serveur nacos.Parfois, springcloud peut être enregistré sur le serveur nacos, mais le journal du projet signale toujours une erreur, qui peut être la suivante individuel :

09:25:28.782 [com.alibaba.nacos.client.Worker.longPolling.fixed-10.1.6.102_8848] ERREUR com.alibaba.nacos.client.config.http.ServerHttpAgent - [NACOS Exception httpPost] currentServerAddr : http:/ /10.1.6.102:8848 java.net.NoRouteToHostException : aucune route vers l'hôte (hôte inaccessible)

erviceName":"DEFAULT_GROUP@@hgc-gateway","stopped":false,"weight":1.0} java.lang.IllegalStateException : échec de la demande d'API :/nacos/v1/ns/instance/beat après tous les serveurs ([ 10.1.6.102:8848]) essayé : échec de la requête API : 10.1.6.102:8848/nacos/v1/ns/instance/beat. code : 500 msg : java.net.SocketTimeoutException : la connexion a expiré

11:26:10.281 [com.alibaba.nacos.client.Worker.longPolling.fixed-nacos-headless_8848] ERREUR com.alibaba.nacos.client.config.impl.ClientWorker - [fixed-nacos-headless_8848] [vérification-mise à jour ] obtenir l'exception dataId modifiée java.net.UnknownHostException : nacos-headless

Certains des éléments ci-dessus peuvent être enregistrés sur le serveur nacos, et certains d'entre eux ne peuvent pas être enregistrés. Par conséquent, lorsque le développement est en dépannage, il indique toujours qu'il y a un problème avec l'environnement, ce qui me rend très ennuyé. Évidemment, le est le même qu'au moment du déploiement. Comment peut-il y avoir des problèmes lors de la mise à jour de l'environnement de développement ?

Résumez les pièges de ce nacos :

1. Si vous utilisez le fichier d'arrangement officiel pour déployer des nacos dans k8s, il n'y a parfois aucun problème à utiliser le mode cluster, et parfois vous devez utiliser le mode autonome.Par exemple, j'utilise le cluster dans Huawei Cloud, pas de problème, mais je suis auto-construit Au début, les k8 utilisaient également le mode cluster, et il n'y avait pas de problème. Plus tard, la version a été développée et mise à jour. Je ne sais pas quels composants ont été mis à jour. Il y a des problèmes lors de l'utilisation du mode cluster Certains projets peuvent être enregistrés et certains projets ne peuvent pas être enregistrés, ils ne peuvent donc être modifiés qu'en mode autonome.

2. En utilisant le mode cluster dans l'environnement k8s, il y aura des nœuds anormaux dans la liste des nœuds de l'interface nacos ui, et il y aura plusieurs points derrière les nœuds, ce qui entraînera des rafales de cartes lors de l'actualisation

nacos-0.nacos-headless.wehgc-test.svc.cluster.local.:8848

3. Le nacos installé dans l'environnement Linux rencontrera également le problème qu'il peut être enregistré, mais le projet indiquera que la connexion est anormale.À ce stade, tant qu'il peut être enregistré, tout ira bien.

4. Nacos semble affecter la version de mysql-community ou de mariadb. Mysql5.7 et mysql8.0 seront différents. Le principal problème est le connecteur mysql. Vous devez vérifier mysql-connector-java-8.0.16 dans le paquet pot

5. Les versions des composants nacos et springcloud ont également des dépendances, comme les composants redisson que je connais, ne changez pas la version par hasard, sinon vous serez misérable

Remplir:

Pour le premier point, après être passé en mode autonome, il y aura un problème que les données ne peuvent pas être stockées dans mysql.Plus tard, je suis passé au mode cluster et j'ai utilisé le deuxième point pour résoudre le problème de la carte.

La solution ici pour le point 2 est

Ce sont deux solutions causées par votre nom de domaine racine kubernetes.Tout d'abord, l'attribut dns cluster.domain de kubernetes peut être utilisé par Baidu, et il existe cette solution. La deuxième modification consiste à déployer la variable d'environnement NACOS_SERVERS dans le Yaml et à ajouter un point après chaque nœud local configuré, comme ceci nacos-0.nacos-headless.default.svc.cluster.local.:8848

<!-- dépendance nacos -->

<dépendance>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

<version>2.1.0.VERSION</version>

</dépendance>

<dépendance>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-bootstrap</artifactId>

<version>3.1.0</version>

</dépendance>

Réduisez la dépendance à la version nacos :

<!-- dépendance nacos -->

<dépendance>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

<version>1.5.0.RELEASE</version>

</dépendance>

<dépendance>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-bootstrap</artifactId>

<version>3.1.0</version>

</dépendance>

Je suppose que tu aimes

Origine blog.csdn.net/zxl2016/article/details/124427099
conseillé
Classement