Docker implementa Nacos (máquina única/clúster)


Nota: La versión de nacos en este artículo es 2.2.0

documento oficial nacos:

https://nacos.io/zh-cn/docs/quick-start-docker.html

1. Implementación independiente

1.1 Instalar el entorno docker ce

1.2 Descargar imagen nacos

	docker pull nacos/nacos-server

1.3 Iniciar nacos en modo autónomo

docker run --name nacos \
-e MODE=standalone \
-v /home/nacos/application.properties:/home/nacos/conf/application.properties \
-v /root/nacos/logs:/home/nacos/logs \
-p 8848:8848 -d \
-p 9848:9848 \
--restart always nacos/nacos-server:latest 

Análisis de comandos :

Orden significado
-v Cuando se inicia el contenedor Docker, si desea montar un directorio del host, puede usar el parámetro -v para especificar
-pag El puerto interno del contenedor se asigna al puerto externo del contenedor, y solo se puede acceder a los puertos internos y externos si están asignados. Puerto de host: puerto interno del contenedor

En el comando anterior, -v especifica el archivo de configuración que usamos cuando iniciamos nacos, -p asigna el puerto predeterminado 8848 de nacos iniciado en el contenedor al puerto de host 8848 para
uso

1.4 Ver el contenedor nacos iniciado

docker ps 

Como resultado de la ejecución, puede ver el servicio de nacos (el autor ha habilitado el clúster de nacos aquí, por lo que nacos está desactivado en este momento)
inserte la descripción de la imagen aquí

2. Despliegue de clúster (un servidor)

2.1 Inicio sobre la base del modo autónomo

Iniciar servicio nacos 1

docker run --name nacos01 \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.31.177:18848 192.168.31.177:28848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-v /home/nacos/application.properties:/home/nacos/conf/application.properties \
-v /root/nacos/logs/nacos01:/home/nacos/logs \
-p 8848:8848 \
-d \
-p 9848:9848 \
-p 9849:9849 \
--restart always nacos/nacos-server:latest

Iniciar servicio nacos 2

docker run --name nacos02 \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.31.177:8848 192.168.31.177:28848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-v /home/nacos/application.properties:/home/nacos/conf/application.properties \
-v /root/nacos/logs/nacos01:/home/nacos/logs \
-p 18848:8848 \
-d \
-p 19848:9848 \
-p 19849:9849 \
--restart always nacos/nacos-server:latest

Iniciar servicio nacos 3

docker run --name nacos03 \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.31.177:18848 192.168.31.177:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-v /home/nacos/application.properties:/home/nacos/conf/application.properties \
-v /root/nacos/logs/nacos01:/home/nacos/logs \
-p 28848:8848 \
-d \
-p 29848:9848 \
-p 29849:9849 \
--restart always nacos/nacos-server:latest

2.2 Ver el contenedor que inicia nacos

Ejecutar una orden

docker ps

Puede ver los siguientes resultados
inserte la descripción de la imagen aquí
Ingrese al directorio de registro, verifique el registro y descubra que nacos se ha iniciado normalmente

cd /root/nacos/logs/nacos01
tail -f nacos.log

inserte la descripción de la imagen aquí
Ingrese al sistema nacos, puede ver que los nodos del clúster están en línea
inserte la descripción de la imagen aquí

3. Preguntas frecuentes:

1. El puerto no está abierto

# 开放端口 8848 18848 28848 ,这里是集群部署,所以是多个端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=18848/tcp --permanent
firewall-cmd --zone=public --add-port=28848/tcp --permanent
# 防火墙重启
firewall-cmd --reload
# 查看开放的端口
firewall-cmd --list-ports

2. No se ha establecido ninguna fuente de datos. Hay un problema con la configuración de la base de datos.

Puede consultar application.properties en el ejemplo oficial de docker de nacos

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
db.user.0=root
db.password.0=123456

El foco está en la plataforma para la inicialización de sql, que debe pasarse o codificarse de forma rígida al inicio

spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}

3.异常: recibir una solicitud de redirección no válida de un compañero

La solicitud es reenviada por un nodo no responsable, consulte nacos-issues-6149
para obtener una solución

### Specify local server's IP:
nacos.inetutils.ip-address=服务器ip

4. application.properties en el ejemplo oficial de docker de nacos

#
# Copyright 1999-2021 Alibaba Group Holding Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port:
server.port=8848
#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:
# nacos.inetutils.ip-address=
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
# nacos.plugin.datasource.log.enabled=true
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
db.user.0=root
db.password.0=123456
### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
#*************** Naming Module Related Configurations ***************#
### Data dispatch task execution period in milliseconds:
### If enable data warmup. If set to false, the server would accept request without local data preparation:
# nacos.naming.data.warmup=true
### If enable the instance auto expiration, kind like of health check of instance:
# nacos.naming.expireInstance=true
### will be removed and replaced by `nacos.naming.clean` properties
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
### Add in 2.0.0
### The interval to clean empty service, unit: milliseconds.
# nacos.naming.clean.empty-service.interval=60000
### The expired time to clean empty service, unit: milliseconds.
# nacos.naming.clean.empty-service.expired-time=60000
### The interval to clean expired metadata, unit: milliseconds.
# nacos.naming.clean.expired-metadata.interval=5000
### The expired time to clean metadata, unit: milliseconds.
# nacos.naming.clean.expired-metadata.expired-time=60000
### The delay time before push task to execute from service changed, unit: milliseconds.
# nacos.naming.push.pushTaskDelay=500
### The timeout for push task execute, unit: milliseconds.
# nacos.naming.push.pushTaskTimeout=5000
### The delay time for retrying failed push task, unit: milliseconds.
# nacos.naming.push.pushTaskRetryDelay=1000
### Since 2.0.3
### The expired time for inactive client, unit: milliseconds.
# nacos.naming.client.expired.time=180000
#*************** CMDB Module Related Configurations ***************#
### The interval to dump external CMDB in seconds:
# nacos.cmdb.dumpTaskInterval=3600
### The interval of polling data change event in seconds:
# nacos.cmdb.eventTaskInterval=10
### The interval of loading labels in seconds:
# nacos.cmdb.labelTaskInterval=300
### If turn on data loading task:
# nacos.cmdb.loadDataAtStart=false
#*************** Metrics Related Configurations ***************#
### Metrics for prometheus
#management.endpoints.web.exposure.include=*
### Metrics for elastic search
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200
### Metrics for 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
#*************** Access Log Related Configurations ***************#
### If turn on the access log:
server.tomcat.accesslog.enabled=true
### accesslog automatic cleaning time
server.tomcat.accesslog.max-days=30
### The access log pattern:
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{
    
    User-Agent}i %{
    
    Request-Source}i
### The directory of access log:
server.tomcat.basedir=file:.
#*************** Access Control Related Configurations ***************#
### If enable spring security, this option is deprecated in 1.2.0:
#spring.security.enabled=false
### The ignore urls of auth, is deprecated in 1.2.0:
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=nacos
### If turn on auth system:
nacos.core.auth.enabled=false
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=true
### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false
### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token (Base64 string):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
### worked when nacos.core.auth.system.type=ldap?{0} is Placeholder,replace login username
#nacos.core.auth.ldap.url=ldap://localhost:389
#nacos.core.auth.ldap.basedc=dc=example,dc=org
#nacos.core.auth.ldap.userDn=cn=admin,${nacos.core.auth.ldap.basedc}
#nacos.core.auth.ldap.password=admin
#nacos.core.auth.ldap.userdn=cn={0},dc=example,dc=org
#nacos.core.auth.ldap.filter.prefix=uid
#nacos.core.auth.ldap.case.sensitive=true
#*************** Istio Related Configurations ***************#
### If turn on the MCP server:
nacos.istio.mcp.server.enabled=false
###*************** Add from 1.3.0 ***************###
#*************** Core Related Configurations ***************#
### set the WorkerID manually
# nacos.core.snowflake.worker-id=
### Member-MetaData
# nacos.core.member.meta.site=
# nacos.core.member.meta.adweight=
# nacos.core.member.meta.weight=
### MemberLookup
### Addressing pattern category, If set, the priority is highest
# nacos.core.member.lookup.type=[file,address-server]
## Set the cluster list with a configuration file or command-line argument
# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
## for AddressServerMemberLookup
# Maximum number of retries to query the address server upon initialization
# nacos.core.address-server.retry=5
## Server domain name address of [address-server] mode
# address.server.domain=jmenv.tbsite.net
## Server port of [address-server] mode
# address.server.port=8080
## Request address of [address-server] mode
# address.server.url=/nacos/serverlist
#*************** JRaft Related Configurations ***************#
### Sets the Raft cluster election timeout, default value is 5 second
# nacos.core.protocol.raft.data.election_timeout_ms=5000
### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute
# nacos.core.protocol.raft.data.snapshot_interval_secs=30
### raft internal worker threads
# nacos.core.protocol.raft.data.core_thread_num=8
### Number of threads required for raft business request processing
# nacos.core.protocol.raft.data.cli_service_thread_num=4
### raft linear read strategy. Safe linear reads are used by default, that is, the Leader tenure is confirmed by heartbeat
# nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
### rpc request timeout, default 5 seconds
# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000
#*************** Distro Related Configurations ***************#
### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
# nacos.core.protocol.distro.data.sync.delayMs=1000
### Distro data sync timeout for one sync data, default 3 seconds.
# nacos.core.protocol.distro.data.sync.timeoutMs=3000
### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
# nacos.core.protocol.distro.data.sync.retryDelayMs=3000
### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
# nacos.core.protocol.distro.data.verify.intervalMs=5000
### Distro data verify timeout for one verify, default 3 seconds.
# nacos.core.protocol.distro.data.verify.timeoutMs=3000
### Distro data load retry delay when load snapshot data failed, default 30 seconds.
# nacos.core.protocol.distro.data.load.retryDelayMs=30000
### enable to support prometheus service discovery
#nacos.prometheus.metrics.enabled=true

Supongo que te gusta

Origin blog.csdn.net/u012924999/article/details/129583714
Recomendado
Clasificación