docker部署nacos集群

单节点集群

一般测试功能时使用

nacos的配置文件

# application.properties


# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** 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.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=${MYSQL_SERVICE_USER}
db.password.0=${MYSQL_SERVICE_PASSWORD}
## DB connection pool settings
db.pool.config.connectionTimeout=${DB_POOL_CONNECTION_TIMEOUT:30000}
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
nacos.core.auth.plugin.nacos.token.cache.enable=true
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:}
### 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=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.endpoints.web.exposure.include=prometheus,health
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.console.ui.enabled=true
nacos.core.param.check.enabled=true

promethues的配置文件

# prometheus.yaml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'nacos'
    metrics_path: '/nacos/actuator/prometheus'
    static_configs:
      - targets: ['nacos1:8848','nacos2:8848','nacos3:8848']

资源清单文件

networks:
  nacos_net:
services:
  nacos1:
    image: nacos/nacos-server:v2.5.1
    container_name: nacos1
    environment:
      - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
      - PREFER_HOST_MODE=hostname
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=nacos
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      # 开启认证部分
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000 #单位秒
      - NACOS_AUTH_CACHE_ENABLE=true
    volumes:
      - ./logs/:/home/nacos/logs
      - ./application.properties:/home/nacos/conf/application.properties
    ports:
      - "7848:7848"
      - "8848:8848"
      - "9868:9848"
      - "9850:9849"
    depends_on:
      mysql:
        condition: service_healthy
    restart: always
    networks:
      - nacos_net
  nacos2:
    image: nacos/nacos-server:v2.5.1
    container_name: nacos2
    environment:
      - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
      - PREFER_HOST_MODE=hostname
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=nacos
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      # 开启认证部分
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000 #单位秒
      - NACOS_AUTH_CACHE_ENABLE=true
    volumes:
      - ./logs/:/home/nacos/logs
      - ./application.properties:/home/nacos/conf/application.properties
    ports:
      - "7849:7848"
      - "8849:8848"
      - "9869:9848"
      - "9851:9849"
    depends_on:
      mysql:
        condition: service_healthy
    restart: always
    networks:
      - nacos_net
  nacos3:
    image: nacos/nacos-server:v2.5.1
    container_name: nacos3
    environment:
      - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
      - PREFER_HOST_MODE=hostname
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=nacos
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      # 开启认证部分
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000 #单位秒
      - NACOS_AUTH_CACHE_ENABLE=true
    volumes:
      - ./logs/:/home/nacos/logs
      - ./application.properties:/home/nacos/conf/application.properties
    ports:
      - "7850:7848"
      - "8850:8848"
      - "9870:9848"
      - "9852:9849"
    depends_on:
      mysql:
        condition: service_healthy
    restart: always
    networks:
      - nacos_net
  mysql:
    container_name: mysql
    image: hexug.top:10000/nacos/mysql:8.0.30
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=nacos
      - MYSQL_USER=nacos
      - MYSQL_PASSWORD=nacos
      - LANG=C.UTF-8
    volumes:
      - ./mysql:/var/lib/mysql
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      interval: 5s
      timeout: 10s
      retries: 10
    networks:
      - nacos_net
  prometheus:
    container_name: prometheus
    image: prom/prometheus:v3.2.1
    volumes:
      - ./prometheus.yaml:/etc/prometheus/prometheus.yml
    ports:
      - "29090:9090"
    depends_on:
      - nacos1
      - nacos2
      - nacos3
    restart: always
    networks:
      - nacos_net
  grafana:
    container_name: grafana
    image: grafana/grafana:11.6.0
    user: "0"
    volumes:
      - ./grafana:/var/lib/grafana
    ports:
      - 3000:3000
    restart: always 
    networks:
      - nacos_net

启服务

docker compose up -d

访问

http://10.1.0.153:8848/nacos
http://10.1.0.153:8849/nacos
http://10.1.0.153:8850/nacos

多节点集群

环境

主机 docker docker compose nacos-server mysql prometheus grafana
10.1.0.108 28.0.1 v2.33.1 v2.5.1 8.0.30 v3.2.1 11.6.0
10.1.0.109 28.0.1 v2.33.1 v2.5.1
10.1.0.112 28.0.1 v2.33.1 v2.5.1

10.1.0.108

数据库服务

还是需要手动构建镜像 然后需要先单独起来准备好

# docker-compose.yaml
services:
  mysql:
    image: hexug.top:10000/nacos/mysql:8.0.30
    container_name: mysql
    ports:
      - 3306:3306
    restart: always
    user: '0'
    volumes:
      - ./db:/var/lib/mysql
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    environment:
      MYSQL_ROOT_PASSWORD: 111111
      #允许空密码
      MYSQL_ALLOW_EMPTY_PASSWORD: no
      #新建数据库
      MYSQL_DATABASE: nacos
      #新建用户
      MYSQL_USER: admin
      #设置用户密码
      MYSQL_PASSWORD: 111111

部署

$ docker compose up -d

$ docker compose ps 
NAME      IMAGE                                COMMAND                   SERVICE   CREATED          STATUS          PORTS
mysql     hexug.top:10000/nacos/mysql:8.0.30   "docker-entrypoint.s…"   mysql     51 minutes ago   Up 51 minutes   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp

prometheus配置文件

# prometheus.yaml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'nacos'
    metrics_path: '/nacos/actuator/prometheus'
    static_configs:
      - targets: ['10.1.0.108:8848','10.1.0.109:8848','10.1.0.112:8848']

nacos的配置文件

# application.properties

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** 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.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=${MYSQL_SERVICE_USER}
db.password.0=${MYSQL_SERVICE_PASSWORD}
## DB connection pool settings
db.pool.config.connectionTimeout=${DB_POOL_CONNECTION_TIMEOUT:30000}
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
nacos.core.auth.plugin.nacos.token.cache.enable=true
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:}
### 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=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.endpoints.web.exposure.include=prometheus,health
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.console.ui.enabled=true
nacos.core.param.check.enabled=true

部署nacos、prometheus、grafana

# docker-compose.yaml

networks:
  nacos_net:
services:
  nacos:
    image: nacos/nacos-server:v2.5.1
    container_name: nacos
    environment:
      - NACOS_SERVERS=10.1.0.108:8848 10.1.0.109:8848 10.1.0.112:8848
      # 这里需要用hostname模式
      - PREFER_HOST_MODE=hostname
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=10.1.0.108
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=admin
      - MYSQL_SERVICE_PASSWORD=111111
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      # 开启认证部分
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000 #单位秒
      - NACOS_AUTH_CACHE_ENABLE=true
    volumes:
      - ./logs/:/home/nacos/logs
      - ./application.properties:/home/nacos/conf/application.properties
    ports:
      # 需要暴露这四个端口
      - "9848:9848" # client-rpc
      - "8848:8848" # 服务端口
      - "9849:9849" # 选举端口
      - "7848:7848" # 旧选举端口
    restart: always
    networks:
      - nacos_net
  prometheus:
    container_name: prometheus
    image: prom/prometheus:v3.2.1
    volumes:
      - ./prometheus.yaml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    depends_on:
      - nacos
    restart: always
    networks:
      - nacos_net
  grafana:
    container_name: grafana
    image: grafana/grafana:11.6.0
    user: "0"
    volumes:
      - ./grafana:/var/lib/grafana
    ports:
      - 3000:3000
    restart: always 
    networks:
      - nacos_net

启服务

$ docker compose up -d

$ docker compose ps
NAME         IMAGE                                       COMMAND                   SERVICE      CREATED          STATUS          PORTS
grafana      hexug.top:10000/grafana/grafana:11.6.0      "/run.sh"                 grafana      54 minutes ago   Up 54 minutes   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp
nacos        hexug.top:10000/nacos/nacos-server:v2.5.1   "sh bin/docker-start…"   nacos        54 minutes ago   Up 54 minutes   0.0.0.0:7848->7848/tcp, [::]:7848->7848/tcp, 0.0.0.0:8848->8848/tcp, [::]:8848->8848/tcp, 0.0.0.0:9848-9849->9848-9849/tcp, [::]:9848-9849->9848-9849/tcp
prometheus   hexug.top:10000/prom/prometheus:v3.2.1      "/bin/prometheus --c…"   prometheus   54 minutes ago   Up 54 minutes   0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp

10.1.0.109、10.1.0.112

nacos的配置文件

# application.properties

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** 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.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=${MYSQL_SERVICE_USER}
db.password.0=${MYSQL_SERVICE_PASSWORD}
## DB connection pool settings
db.pool.config.connectionTimeout=${DB_POOL_CONNECTION_TIMEOUT:30000}
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
nacos.core.auth.plugin.nacos.token.cache.enable=true
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:}
### 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=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.endpoints.web.exposure.include=prometheus,health
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.console.ui.enabled=true
nacos.core.param.check.enabled=true

部署nacos

# docker-compose.yaml
services:
  nacos:
    image: hexug.top:10000/nacos/nacos-server:v2.5.1
    container_name: nacos
    environment:
      - NACOS_SERVERS=10.1.0.108:8848 10.1.0.109:8848 10.1.0.112:8848
      - PREFER_HOST_MODE=hostname
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=10.1.0.108
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=admin
      - MYSQL_SERVICE_PASSWORD=111111
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      # 开启认证部分
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000 #单位秒
      - NACOS_AUTH_CACHE_ENABLE=true
    volumes:
      - ./logs/:/home/nacos/logs
      - ./application.properties:/home/nacos/conf/application.properties
    ports:
      - "9848:9848"
      - "8848:8848"
      - "9849:9849"
      - "7848:7848"
    restart: always

部署

$ docker compose up -d

$ docker compose ps
NAME      IMAGE                                       COMMAND                   SERVICE   CREATED          STATUS          PORTS
nacos     hexug.top:10000/nacos/nacos-server:v2.5.1   "sh bin/docker-start…"   nacos     55 minutes ago   Up 55 minutes   0.0.0.0:7848->7848/tcp, [::]:7848->7848/tcp, 0.0.0.0:8848->8848/tcp, [::]:8848->8848/tcp, 0.0.0.0:9848-9849->9848-9849/tcp, [::]:9848-9849->9848-9849/tcp

然后访问任意节点的8848端口,都可以访问到集群

posted @ 2025-04-22 09:35  厚礼蝎  阅读(214)  评论(0)    收藏  举报