Docker implementa versiones independientes y de clúster de nacos

Docker implementa versiones independientes y de clúster de nacos

 

Tabla de contenido

1. Sin mysql externo, método de implementación del paquete de software

2. Sin mysql externo, método de implementación de docker

3. mysql externo, método de implementación de docker

Cuatro, docker-compose+nginx+mysql versión de clúster de alta disponibilidad

Cinco, versión de clúster de alta disponibilidad docker+mysql+nginx

notas de la versión de nacos 2.0

Entre ellos, los puertos 7848, 8848, 9848 y 9849 son puertos que deben abrirse, 8848 es el puerto de página web, 7848 es la interfaz de sincronización de datos del clúster y 9848 y 9849 son puertos que deben desarrollarse para versiones de nacos superiores a 2.0. 0.

En comparación con Nacos 1.X, Nacos 2.0 ha agregado el método de comunicación gRPC, por lo que es necesario agregar 2 puertos. El puerto recién agregado se genera automáticamente con un cierto desplazamiento sobre la base del puerto principal configurado (servidor.puerto).

El cliente tiene la misma lógica de cálculo, el usuario configura el puerto principal (por defecto 8848) como en 1.X, y calcula el puerto gRPC correspondiente (por defecto 9848) a través del mismo offset. Por lo tanto, si hay un reenvío de puertos o un cortafuegos entre el cliente y el servidor, debe ajustar la configuración del reenvío de puertos y del cortafuegos en consecuencia.

1. Sin mysql externo, método de implementación del paquete de software
Dirección de descarga de la última versión estable: https://github.com/alibaba/nacos/releases

Después de la descarga, descomprima el directorio de la siguiente manera, en bin está el script de inicio

Comando de inicio (autónomo representa el funcionamiento en modo autónomo, modo sin clúster):

sh startup.sh -m independiente

El puerto predeterminado del servicio nacos es 8848. Entrada del navegador http://ip:8848/nacos

La cuenta de inicio de sesión y la contraseña son nacos

2. Sin conexión externa a mysql, método de implementación de docker
docker run -d -p 8848:8848 --env MODE=standalone --name nacos nacos-server:2.0.4
3. Conexión externa a mysql, método de implementación de docker
Instalar mysql

Cree una base de datos nacos_config, inserte el sql relacionado con la configuración de nacos

docker run -d \
-e MODE=independiente \
-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=siempre \
--name nacos_saasoperationsegundo \
nacos-server:2.0.4
四、docker-compose+nginx+mysql高可用集群版本
 

1. Instalar mysql

Cree una base de datos nacos_config, inserte el sql relacionado con la configuración 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

versión: "3"
servicios:
  nacos:
    nombre de host:
    imagen de nacos: nacos/nacos-server:2.0.3
    container_name: bdyh-nacos
    privilegiado:
    redes verdaderas: -     volúmenes
      de pknet :       - ./cluster-logs:/home/nacos/logs       - ./init.d/custom.properties:/home/nacos/init.d/custom.properties     puertos:       - "7848:7848"       - "8848:8848"       - "9848:9848"       - "9555:9555"       - "9849:9849"     env_file:       - ./env/nacos-ip.env     restart: redes en caso de falla:   pknet:     externo:verdadero vim nacos-ip.env















#nacos dev env
#Si se admite el nombre de host, puede usar hostname; de ​​lo contrario, use ip, y el valor predeterminado es ip
PREFER_HOST_MODE=ip
MODE=cluster
#En el caso de varias tarjetas de red, especifique ip o tarjeta de red
NACOS_SERVER_IP=192.168. 10.128
#Otros nodos en el clúster [ip1:puerto ip2:puerto ip3:puerto]
NACOS_SERVERS=192.168.10.128:8848 192.168.10.129:8848 192.168.10.130:8848
#puerto web nacos, si no está escrito, el valor predeterminado es 8848
NACOS_APPLICATION_PORT = 8848
#plataforma de origen de datos solo admite mysql o no guarda vacío
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
#Parámetro de ajuste de 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étricas para Prometheus
management.endpoints.web.exposure.include=*
 
# métricas para búsqueda elástica
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost :9200
 
# métricas para la afluencia
#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

Acceso al navegador: se puede acceder a ip+8848, ip+8849, ip+8850

Cinco, docker+mysql+nginx
descripción del entorno de versión de clúster de alta disponibilidad

Implementación de ip de host

192.168.216.56 mysql nacos1

192.168.216.49 nacos2

192.168.216.35 nacos3

192.168.216.49 nginx para equilibrio de carga

1. Instalar mysql

2. Cree la base de datos nacos_config e inserte el sql relacionado con la configuración de nacos

3. cúmulo de nacos

Todos los hosts de implementación crean sus propios directorios, como registros /root/nacos/config para la asignación de rutas.

Agregue un archivo custom.properties en 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étricas para Prometheus
management.endpoints.web.exposure.include=*
 
# métricas para búsqueda elástica
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost :9200
 
# métricas para la afluencia
#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
#Otros están comentados, incluyendo algunos monitoreos, etc., necesita modificar la configuración usted mismo en el futuro.
Otros están comentados, incluyendo algo de Monitoreo, etc., usted mismo puede modificar la configuración en el futuro

Cada host usa docker para iniciar nacos:

nacos al 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 =nombre de host -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 /raíz/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 =hostname -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 /raíz /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 =hostname -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 /raíz /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。配置负载均衡

stream {     upstream nacos {         servidor 192.168.216.56:8848;         servidor 192.168.216.49:8848;         servidor 192.168.216.35:8848;     }     servidor {         escuchar 18848;         proxy_pass nacos;     } } 5.访问:192.168.216.49:18848/nacos










Siempre me he encontrado con varios problemas al usar nacos. El resultado final es que el proyecto springcloud no se puede registrar en el servidor nacos. A veces, springcloud se puede registrar en el servidor nacos, pero el registro del proyecto aún muestra un error, que puede ser el siguiente individuo:

09:25:28.782 [com.alibaba.nacos.client.Worker.longPolling.fixed-10.1.6.102_8848] ERROR com.alibaba.nacos.client.config.http.ServerHttpAgent - [Excepción NACOS httpPost] currentServerAddr: http:/ /10.1.6.102:8848 java.net.NoRouteToHostException: No hay ruta al host (Host inaccesible)

erviceName":"DEFAULT_GROUP@@hgc-gateway","stopped":false,"weight":1.0} java.lang.IllegalStateException: error al solicitar API:/nacos/v1/ns/instance/beat después de todos los servidores ([ 10.1.6.102:8848]) intentado: no se pudo solicitar API: 10.1.6.102:8848/nacos/v1/ns/instance/beat.code:500 msg: java.net.SocketTimeoutException: se agotó el tiempo de conexión

11:26:10.281 [com.alibaba.nacos.client.Worker.longPolling.fixed-nacos-headless_8848] ERROR com.alibaba.nacos.client.config.impl.ClientWorker - [fixed-nacos-headless_8848] [comprobar actualización ] cambiar la excepción de ID de datos java.net.UnknownHostException: nacos-headless

Algunos de los anteriores se pueden registrar en el servidor de nacos, y algunos de ellos no se pueden registrar. Como resultado, cuando el desarrollo está solucionando problemas, siempre dice que hay un problema con el entorno, lo que me molesta mucho. Obviamente, el el entorno es el mismo que cuando se acaba de implementar ¿Cómo puede haber problemas cuando se actualiza el entorno de desarrollo?

Resume las trampas de este nacos:

1. Si usa el archivo de arreglo oficial para implementar nacos en k8s, a veces no hay problema para usar el modo de clúster y, a veces, tiene que usar el modo independiente. Por ejemplo, uso el clúster en Huawei Cloud, no hay problema, pero soy autoconstruido Al principio, k8s también usó el modo de clúster, y no hubo ningún problema. Más tarde, la versión fue desarrollada y actualizada. No sé qué componentes se actualizaron. Hay problemas al usar el modo de clúster. Algunos proyectos se pueden registrar y algunos proyectos no se pueden registrar, por lo que solo se pueden cambiar al modo independiente.

2. Usando el modo de clúster en el entorno k8s, habrá nodos anormales en la lista de nodos de la interfaz de usuario de nacos, y habrá múltiples puntos detrás de los nodos, lo que resultará en ráfagas de tarjetas al actualizar

nacos-0.nacos-sin cabeza.wehgc-test.svc.cluster.local.:8848

3. Los nacos instalados en el entorno Linux también encontrarán el problema de que se pueden registrar, pero el proyecto indicará que la conexión es anormal. En este momento, mientras se pueda registrar, estará bien.

4. Nacos parece afectar la versión de mysql-community o mariadb. Mysql5.7 y mysql8.0 serán diferentes. El principal problema es el conector mysql. Debe verificar mysql-connector-java-8.0.16 en el paquete tarro

5. Las versiones de los componentes nacos y springcloud también tienen dependencias, como los componentes redisson lo sé, no cambies la versión casualmente, de lo contrario serás miserable

Reponer:

Para el primer punto, después de cambiar al modo independiente, habrá un problema de que los datos no se pueden almacenar en mysql.Más tarde, cambié al modo de clúster y usé el segundo punto para resolver el problema de la tarjeta.

La solución aquí para el punto 2 es

Estas son dos soluciones causadas por su nombre de dominio raíz de kubernetes. Primero, Baidu puede usar el atributo dns cluster.domain de kubernetes, y existe esta solución. La segunda modificación es implementar la variable de entorno NACOS_SERVERS en Yaml y agregar un punto después de cada nodo local configurado, como este nacos-0.nacos-headless.default.svc.cluster.local.:8848

<!-- dependencia nacos -->

<dependencia>

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

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

<versión>2.1.0.LIBERAR</versión>

</dependencia>

<dependencia>

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

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

<versión>3.1.0</versión>

</dependencia>

Reducir la dependencia de la versión de nacos:

<!-- dependencia nacos -->

<dependencia>

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

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

<versión>1.5.0.LIBERAR</versión>

</dependencia>

<dependencia>

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

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

<versión>3.1.0</versión>

</dependencia>

Supongo que te gusta

Origin blog.csdn.net/zxl2016/article/details/124427099
Recomendado
Clasificación