使用docker搭建高可用Nacos注册中心

写在前面

关于nacos1.x和nacos2.x的区别以及使用方式,参考下面一篇链接
Nacos2.0兼容性及使用

使用docker

Nacos1.x

单机方式搭建

进入docker hub,查找镜像

NaocsImage
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

按照说明启动
docker run --name nacos -p 8848:8848 -e JVM_XMS="512m" -e -JVM_XMX="512m" -e 		  JVM_MS="168m" -e JVM_MMS="168m" -e JVM_XMN="288m" -e MODE=standalone -d 	lhstack/nacos:1.4.4

在这里插入图片描述
在这里插入图片描述

通过浏览器访问

在这里插入图片描述

添加配置并使用客户端测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>nacos-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-demo</name>
    <description>nacos-demo</description>
    <properties>
        <java.version>11</java.version>
        <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

bootstrap.yml

spring:
  application:
    name: demo
  profiles:
    active: test
  cloud:
    nacos:
      server-addr: 192.168.101.170:8848
      config:
        file-extension: yml

在这里插入图片描述
在这里插入图片描述

集群方式搭建

这里使用脚本方式搭建,方便维护

搭建nacos需要的数据库环境
  • 生成sql以及使用docker启动的数据库脚本
    相关sql脚本,去官网下载,这里搭建1.4.4版本的nacos,对应sql也是1.4.4的
    Nacos1.4.4-sql
    注意,这里需要在sql内容之前添加创建数据库的sql语句,方便在mysql启动时自动加载sql创建对应表

    ## 在sql文件最前面添加以下两行即可
    CREATE DATABASE `nacos` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    USE `nacos`;
    
    ## 创建nacos目录和sql目录
    mkdir -p nacos/sql && cd nacos/sql
    ## 下载sql脚本
    wget https://gitee.com/mirrors/Nacos/raw/1.4.4/distribution/conf/nacos-mysql.sql
    ## 在最前面添加数据库创建的sql
    sed -i "1iCREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" nacos-mysql.sql
    sed -i "2iUSE nacos;" nacos-mysql.sql
    cd ..
    # 生成docker启动脚本
    cat > nacos-mysql.sh <<EOF
    #/bin/bash
    docker rm -f mysql
    docker network rm nacos
    docker network create --driver=bridge --ipam-driver=default --subnet=10.42.0.0/16 nacos
    docker run --name mysql --restart=always --network=nacos --hostname=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD="123456" -v \${PWD}/sql:/docker-entrypoint-initdb.d/ -v \${PWD}/data:/var/lib/mysql -d mysql:8.0.28
    EOF
    

    在这里插入图片描述

  • 执行启动docker-mysql的sh脚本

    sh nacos-mysql.sh
    

    在这里插入图片描述

  • 通过navicat等数据库客户端工具连接查看
    在这里插入图片描述

编写nacos集群的docker脚本并启动
  • 通过nacos镜像地址的说明,可以发现,搭建集群需要几个参数,分别是

    NACOS_SERVERS: nacos集群地址
    MYSQL_SERVICE_HOST: 数据库host
    MYSQL_SERVICE_USER: 数据库用户名
    MYSQL_SERVICE_PASSWORD: 数据库密码
    MYSQL_SERVICE_DB_NAME: 数据库名称
    SPRING_DATASOURCE_PLATFORM: 数据库类型,这里是mysql
    MYSQL_SERVICE_DB_PARAM: 数据库连接扩展参数
    
  • 编写脚本

    cat > nacos-cluster.env <<EOF
    NACOS_SERVERS=10.42.0.10 10.42.0.11
    TZ=Asia/Shanghai
    MYSQL_SERVICE_HOST=mysql
    MYSQL_SERVICE_USER=root
    MYSQL_SERVICE_PASSWORD=123456
    MYSQL_SERVICE_DB_NAME=nacos
    MYSQL_SERVICE_DB_PARAM=allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false
    SPRING_DATASOURCE_PLATFORM=mysql
    JVM_XMX=384m
    JVM_XMS=384m
    JVM_XMN=192m
    JVM_MS=128m
    JVM_MMS=128m
    EOF
    cat > nacos-cluster.sh <<EOF
    #/bin/bash
    docker rm -f nacos nacos1
    docker run --name nacos --restart=always --ip=10.42.0.10 --network=nacos --hostname=nacos -p 8848:8848 --env-file=\${PWD}/nacos-cluster.env -d lhstack/nacos:1.4.4
    docker run --name nacos1 --restart=always --ip=10.42.0.11 --network=nacos --hostname=nacos -p 8849:8848 --env-file=\${PWD}/nacos-cluster.env -d lhstack/nacos:1.4.4 
    EOF
    
  • 执行脚本,启动nacos集群

    sh nacos-cluster.sh
    

    在这里插入图片描述
    在这里插入图片描述

  • 浏览器访问并添加配置
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 使用客户端测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Nacos2.x

nacos2.x使用的grpc,采用ip偏移量的方式,比如http暴露的端口是8848,grpc暴露的端口对应就是9848

单机方式搭建

按照说明启动
# 关闭之前的nacos容器,如果没有启动,则可以不管
docker rm -f nacos
docker run --name nacos -p 8848:8848 -p 9848:9848 -e JVM_XMS="512m" -e -JVM_XMX="512m" -e 		  JVM_MS="168m" -e JVM_MMS="168m" -e JVM_XMN="288m" -e MODE=standalone -d 	lhstack/nacos:2.1.1

在这里插入图片描述

通过浏览器访问,并添加配置
  • 浏览器访问,并添加配置
    在这里插入图片描述
    在这里插入图片描述
客户端使用
  • 版本依赖
    这里由于服务端是2.x的版本,因此客户端依赖的版本从2.2.6.RELEASE修改为2.2.7.RELEASE
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.12.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>nacos-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>nacos-demo</name>
        <description>nacos-demo</description>
        <properties>
            <java.version>11</java.version>
            <spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring.cloud.alibaba.version}</version>
                    <scope>import</scope>
                    <type>pom</type>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
  • 配置
    在这里插入图片描述
  • 启动验证
    在这里插入图片描述
    在这里插入图片描述

集群方式搭建

搭建nacos需要的数据库环境
  • 生成sql以及使用docker启动的数据库脚本
    相关sql脚本,去官网下载,这里搭建2.1.1版本的nacos,对应sql也是2.1.1的
    Nacos2.1.1-sql
    注意,这里需要在sql内容之前添加创建数据库的sql语句,方便在mysql启动时自动加载sql创建对应表

    ## 在sql文件最前面添加以下两行即可
    CREATE DATABASE `nacos` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    USE `nacos`;
    
    ## 创建nacos目录和sql目录
    mkdir -p nacos/sql && cd nacos/sql
    ## 下载sql脚本
    wget https://gitee.com/mirrors/Nacos/raw/2.1.1/distribution/conf/nacos-mysql.sql
    ## 在最前面添加数据库创建的sql
    sed -i "1iCREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" nacos-mysql.sql
    sed -i "2iUSE nacos;" nacos-mysql.sql
    cd ..
    # 生成docker启动脚本
    cat > nacos-mysql.sh <<EOF
    #/bin/bash
    docker rm -f mysql
    docker network rm nacos
    docker network create --driver=bridge --ipam-driver=default --subnet=10.42.0.0/16 nacos
    docker run --name mysql --restart=always --network=nacos --hostname=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD="123456" -v \${PWD}/sql:/docker-entrypoint-initdb.d/ -v \${PWD}/data:/var/lib/mysql -d mysql:8.0.28
    EOF
    

    在这里插入图片描述

  • 执行启动docker-mysql的sh脚本

    sh nacos-mysql.sh
    

    在这里插入图片描述

  • 通过navicat等数据库客户端工具连接查看
    在这里插入图片描述

编写nacos集群的docker脚本并启动
  • 通过nacos镜像地址的说明,可以发现,搭建集群需要几个参数,分别是
    NACOS_SERVERS: nacos集群地址
    MYSQL_SERVICE_HOST: 数据库host
    MYSQL_SERVICE_USER: 数据库用户名
    MYSQL_SERVICE_PASSWORD: 数据库密码
    MYSQL_SERVICE_DB_NAME: 数据库名称
    SPRING_DATASOURCE_PLATFORM: 数据库类型,这里是mysql
    MYSQL_SERVICE_DB_PARAM: 数据库连接扩展参数
    
  • 编写脚本
    cat > nacos-cluster.env <<EOF
    NACOS_SERVERS=10.42.0.10 10.42.0.11
    TZ=Asia/Shanghai
    MYSQL_SERVICE_HOST=mysql
    MYSQL_SERVICE_USER=root
    MYSQL_SERVICE_PASSWORD=123456
    MYSQL_SERVICE_DB_NAME=nacos
    MYSQL_SERVICE_DB_PARAM=allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false
    SPRING_DATASOURCE_PLATFORM=mysql
    JVM_XMX=384m
    JVM_XMS=384m
    JVM_XMN=192m
    JVM_MS=128m
    JVM_MMS=128m
    EOF
    cat > nacos-cluster.sh <<EOF
    #/bin/bash
    docker rm -f nacos nacos1
    docker run --name nacos --restart=always --ip=10.42.0.10 --network=nacos --hostname=nacos -p 8848:8848 -p 9848:9848 --env-file=\${PWD}/nacos-cluster.env -d lhstack/nacos:2.1.1
    docker run --name nacos1 --restart=always --ip=10.42.0.11 --network=nacos --hostname=nacos -p 8849:8848 -p 9849:9848 --env-file=\${PWD}/nacos-cluster.env -d lhstack/nacos:2.1.1
    EOF
    
  • 执行脚本,启动nacos集群
    sh nacos-cluster.sh
    
    在这里插入图片描述
    在这里插入图片描述
  • 通过浏览器访问,并添加配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 使用客户端连接
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

使用docker-compose

Nacos1.x

单机方式搭建

编写docker-compose.yaml脚本
# 停掉之前的容器
docker rm -f nacos nacos1 mysql
# 生成docker-compose脚本
cat > docker-compose.yaml <<EOF
version: '3'
services:
  nacos:
    image: lhstack/nacos:1.4.4
    container_name: nacos
    restart: always
    ports:
    - '8848:8848'
    environment:
      MODE: standalone
      JVM_XMX: 512m
      JVM_MS: 168m
      JVM_MMS: 168m
      JVM_XMN: 288m
    healthcheck:
      test: ["CMD-SHELL","wget --no-cache --spider 'http://localhost:8848/nacos/actuator/health' || exit 1"]
      timeout: 2s
      interval: 10s
      retries: 5
      start_period: 15s
    logging:
      options:
        max-file: '1'
        max-size: '32k'
    deploy:
      resources:
        limits:
          cpus: '20m'
          memory: '512M'
EOF
  • 运行上面的脚本
    在这里插入图片描述
执行docker-compose脚本
docker-compose up -d

在这里插入图片描述

使用浏览器访问

在这里插入图片描述

添加配置并使用客户端测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集群方式搭建

注意,所有操作都在demo目录下面,请确认清楚
在这里插入图片描述

生成nacos集群需要的sql文件

相关sql脚本,去官网下载,这里搭建1.4.4版本的nacos,对应sql也是1.4.4的
Nacos1.4.4-sql
注意,这里需要在sql内容之前添加创建数据库的sql语句,方便在mysql启动时自动加载sql创建对应表

## 删除之前的数据库生成的数据和sql文件
rm -rf data sql
## 创建nacos目录和sql目录
mkdir -p nacos/sql && cd nacos/sql
## 下载sql脚本
wget https://gitee.com/mirrors/Nacos/raw/1.4.4/distribution/conf/nacos-mysql.sql
## 在最前面添加数据库创建的sql
sed -i "1iCREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" nacos-mysql.sql
sed -i "2iUSE nacos;" nacos-mysql.sql
cd ..
生成docker-compose.yaml文件
  • 删除为使用的网卡

    docker network prune
    

    在这里插入图片描述

  • 生成docker-compose.yaml文件

    cat > docker-compose.yaml <<EOF
    version: '3'
    services:
      mysql:
        container_name: mysql
        image: mysql:8.0.28
        restart: always
        ports:
          - '3306:3306'
        environment:
          MYSQL_ROOT_PASSWORD: "123456"
          TZ: Asia/Shanghai
        volumes:
          - ./data:/var/lib/mysql
          - ./sql:/docker-entrypoint-initdb.d/
        networks:
        - nacos
        deploy:
          resources:
            limits:
              cpus: '0.5'
              memory: '512M'
        healthcheck:
          test: ["CMD","mysqladmin","-uroot","-p123456","ping","-h","localhost"]
          timeout: 20s
          retries: 10
      nacos:
        container_name: nacos
        image: lhstack/nacos:1.4.4
        restart: always
        ports:
          - '8848:8848'
        environment:
          MYSQL_SERVICE_DB_PARAM: "allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false"
          NACOS_SERVERS: "10.42.0.10 10.42.0.11"
          TZ: Asia/Shanghai
          MYSQL_SERVICE_HOST: 'mysql'
          MYSQL_SERVICE_USER: 'root'
          MYSQL_SERVICE_PASSWORD: '123456'
          MYSQL_SERVICE_DB_NAME: 'nacos'
          SPRING_DATASOURCE_PLATFORM: 'mysql'
          JVM_XMX: '384m'
          JVM_XMS: '384m'
          JVM_XMN: '192m'
          JVM_MS: '128m'
          JVM_MMS: '128m'
        logging:
          options:
            max-file: '1'
            max-size: '16k'
        depends_on:
          mysql:
            condition: service_healthy
        networks:
          nacos:
            ipv4_address: 10.42.0.10
        deploy:
          resources:
            limits:
              cpus: '1'
              memory: 384M
      nacos1:
        container_name: nacos1
        image: lhstack/nacos:1.4.4
        restart: always
        ports:
          - '8849:8848'
        environment:
          MYSQL_SERVICE_DB_PARAM: "allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false"
          TZ: Asia/Shanghai
          NACOS_SERVERS: "10.42.0.10 10.42.0.11"
          MYSQL_SERVICE_HOST: 'mysql'
          MYSQL_SERVICE_USER: 'root'
          MYSQL_SERVICE_PASSWORD: '123456'
          MYSQL_SERVICE_DB_NAME: 'nacos'
          SPRING_DATASOURCE_PLATFORM: 'mysql'
          JVM_XMX: '384m'
          JVM_XMS: '384m'
          JVM_XMN: '192m'
          JVM_MS: '128m'
          JVM_MMS: '128m'
        logging:
          options:
            max-file: '1'
            max-size: '16k'
        depends_on:
          mysql:
            condition: service_healthy
        networks:
          nacos:
            ipv4_address: 10.42.0.11
        deploy:
          resources:
            limits:
              cpus: '1'
              memory: 384M
    networks:
      nacos:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 10.42.0.0/16    
    EOF
    
启动并使用浏览器访问

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加配置,并使用客户端连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Nacos2.x

单机方式搭建

编写docker-compose.yaml脚本
# 停掉之前的容器
docker rm -f nacos nacos1 mysql
# 生成docker-compose脚本
cat > docker-compose.yaml <<EOF
version: '3'
services:
  nacos:
    image: lhstack/nacos:2.1.1
    container_name: nacos
    restart: always
    ports:
    - '8848:8848'
    - '9848:9848'
    environment:
      MODE: standalone
      JVM_XMX: 512m
      JVM_MS: 168m
      JVM_MMS: 168m
      JVM_XMN: 288m
    healthcheck:
      test: ["CMD-SHELL","wget --no-cache --spider 'http://localhost:8848/nacos/actuator/health' || exit 1"]
      timeout: 2s
      interval: 10s
      retries: 5
      start_period: 15s
    logging:
      options:
        max-file: '1'
        max-size: '32k'
    deploy:
      resources:
        limits:
          cpus: '20m'
          memory: '512M'
EOF
启动并使用浏览器访问
docker-compose up -d

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加配置并使用客户端测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集群方式搭建

注意,所有操作都在demo目录下面,请确认清楚
在这里插入图片描述

生成nacos集群需要的sql文件

相关sql脚本,去官网下载,这里搭建2.1.1版本的nacos,对应sql也是2.1.1的
Nacos2.1.1-sql
注意,这里需要在sql内容之前添加创建数据库的sql语句,方便在mysql启动时自动加载sql创建对应表

## 删除之前的数据库生成的数据和sql文件
rm -rf data sql
## 创建nacos目录和sql目录
mkdir -p nacos/sql && cd nacos/sql
## 下载sql脚本
wget https://gitee.com/mirrors/Nacos/raw/2.1.1/distribution/conf/nacos-mysql.sql
## 在最前面添加数据库创建的sql
sed -i "1iCREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" nacos-mysql.sql
sed -i "2iUSE nacos;" nacos-mysql.sql
cd ..
生成docker-compose.yaml文件
  • 清除之前的痕迹

    docker rm -f nacos nacos1 mysql
    #删除为使用的网卡
    docker network prune
    

    在这里插入图片描述

  • 生成docker-compose.yaml文件

    cat > docker-compose.yaml <<EOF
    version: '3'
    services:
      mysql:
        container_name: mysql
        image: mysql:8.0.28
        restart: always
        ports:
          - '3306:3306'
        environment:
          MYSQL_ROOT_PASSWORD: "123456"
          TZ: Asia/Shanghai
        volumes:
          - ./data:/var/lib/mysql
          - ./sql:/docker-entrypoint-initdb.d/
        networks:
        - nacos
        deploy:
          resources:
            limits:
              cpus: '0.5'
              memory: '512M'
        healthcheck:
          test: ["CMD","mysqladmin","-uroot","-p123456","ping","-h","localhost"]
          timeout: 20s
          retries: 10
      nacos:
        container_name: nacos
        image: lhstack/nacos:2.1.1
        restart: always
        ports:
          - '8848:8848'
          - '9848:9848'
        environment:
          MYSQL_SERVICE_DB_PARAM: "allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false"
          NACOS_SERVERS: "10.42.0.10 10.42.0.11"
          TZ: Asia/Shanghai
          MYSQL_SERVICE_HOST: 'mysql'
          MYSQL_SERVICE_USER: 'root'
          MYSQL_SERVICE_PASSWORD: '123456'
          MYSQL_SERVICE_DB_NAME: 'nacos'
          SPRING_DATASOURCE_PLATFORM: 'mysql'
          JVM_XMX: '384m'
          JVM_XMS: '384m'
          JVM_XMN: '192m'
          JVM_MS: '128m'
          JVM_MMS: '128m'
        logging:
          options:
            max-file: '1'
            max-size: '16k'
        depends_on:
          mysql:
            condition: service_healthy
        networks:
          nacos:
            ipv4_address: 10.42.0.10
        deploy:
          resources:
            limits:
              cpus: '1'
              memory: 384M
      nacos1:
        container_name: nacos1
        image: lhstack/nacos:2.1.1
        restart: always
        ports:
          - '8849:8848'
          - '9849:9848'
        environment:
          MYSQL_SERVICE_DB_PARAM: "allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=UTC&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false"
          TZ: Asia/Shanghai
          NACOS_SERVERS: "10.42.0.10 10.42.0.11"
          MYSQL_SERVICE_HOST: 'mysql'
          MYSQL_SERVICE_USER: 'root'
          MYSQL_SERVICE_PASSWORD: '123456'
          MYSQL_SERVICE_DB_NAME: 'nacos'
          SPRING_DATASOURCE_PLATFORM: 'mysql'
          JVM_XMX: '384m'
          JVM_XMS: '384m'
          JVM_XMN: '192m'
          JVM_MS: '128m'
          JVM_MMS: '128m'
        logging:
          options:
            max-file: '1'
            max-size: '16k'
        depends_on:
          mysql:
            condition: service_healthy
        networks:
          nacos:
            ipv4_address: 10.42.0.11
        deploy:
          resources:
            limits:
              cpus: '1'
              memory: 384M
    networks:
      nacos:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 10.42.0.0/16    
    EOF
    
启动并使用浏览器访问
docker-compose up -d 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加配置并使用客户端测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Docker集群Nacos是指使用Docker容器技术来部署和管理Nacos服务注册和发现中心的集群架构。Nacos是一个开源的服务发现、配置中心和动态DNS解析器,能够让我们更方便地管理和维护分布式系统中的服务。 使用Docker部署Nacos集群可以带来许多好处。首先,Docker的容器化技术可以实现快速部署和扩展。只需创建一个Nacos镜像,并在集群中运行多个容器,就可以快速搭建一个高可用Nacos集群。同时,Docker的容器可以根据需求动态扩展和缩减,极大地提高了系统的可伸缩性和弹性。 其次,Docker的容器可以隔离和保护各个Nacos节点。每个Nacos节点都运行在独立的容器中,彼此之间互不干扰。即使某个节点出现故障或崩溃,也不会影响整个集群的正常工作。这种隔离性能够大大提高系统的稳定性和可靠性。 另外,Docker集群Nacos还可以简化系统的管理和维护。通过定义和使用Docker容器,我们可以实现自动化的部署和监控。同时,Docker还提供了丰富的工具和接口,方便我们管理和调度Nacos集群的各个节点。这样,我们就可以更有效地进行系统监控、故障处理和性能优化。 总结来说,Docker集群Nacos是一种基于Docker容器技术的Nacos集群架构。它可以通过快速部署、扩展、隔离和管理,提高系统的可伸缩性、弹性、稳定性和可靠性。使用Docker集群Nacos,我们可以更方便地构建和管理分布式系统中的服务注册和发现功能。 ### 回答2: Docker集群Nacos是一种使用Docker容器技术的分布式服务发现和配置管理平台。Nacos(Naming and Configuration Service)是阿里巴巴开源的一款用于服务发现、动态配置和服务元数据的系统,可以帮助我们实现研发、测试和运维团队的快速迭代和快速启动。 Docker集群是一种使用Docker技术的分布式系统,通过将应用程序打包为可移植的容器,可以方便地在不同的计算环境中进行部署和运行。在Docker集群中使用Nacos可以实现服务发现和配置管理的功能。 在Docker集群中部署Nacos,首先需要创建一个NacosDocker镜像。可以使用Dockerfile定义Nacos的镜像构建过程,然后使用Docker命令来构建镜像。构建完成后,可以通过Docker命令在集群中部署多个Nacos容器。 在Nacos容器中,可以通过配置文件来配置服务发现和配置管理的功能。可以指定Nacos容器的IP地址和端口,并配置集群的地址信息。可以将Nacos容器连接到数据库来存储服务元数据和配置信息。还可以配置包括注册中心、服务发现、配置管理等一系列功能。 使用Docker集群部署Nacos可以提供高可用性和可扩展性。通过运行多个Nacos容器,可以实现高可用性,当一个容器故障时其他容器可以继续提供服务。同时,可以根据需要动态地增加或删除Nacos容器,实现系统的横向扩展。 总之,Docker集群Nacos是一种方便快捷地部署和管理分布式服务和配置的解决方案,可以帮助我们简化开发、测试和运维的流程,提高系统的可靠性和可扩展性。 ### 回答3: Docker集群nacos是一种基于Docker容器技术的轻量级微服务注册中心和配置中心。通过使用Docker容器技术,可以实现nacos高可用性和弹性伸缩性。 首先,我们可以使用Docker容器将nacos部署为一个集群。通过在多个主机上启动多个nacos容器节点,并使用容器编排工具(如Docker Compose或Kubernetes)进行管理和协调,我们可以实现nacos高可用性。当一个节点发生故障时,其他节点可以接管其工作,从而确保服务的连续性和稳定性。 其次,Docker集群nacos可以轻松实现弹性伸缩。当需要处理大量的微服务实例时,我们可以通过在Docker集群中部署多个nacos容器实例来提高性能和容量。这样,我们可以根据负载情况动态添加或删除nacos容器节点,以满足实时的需求变化。 另外,使用Docker集群还可以简化nacos部署和管理。通过将nacos的配置、依赖和环境打包到Docker镜像中,我们可以很容易地部署和迁移整个nacos集群。同时,Docker集群的管理工具可以提供自动化的容器管理、监控和自愈功能,进一步简化了nacos的运维工作。 总结来说,Docker集群nacos通过利用Docker容器技术,实现了nacos高可用性、弹性伸缩性和易用性。它为微服务架构提供了一个可靠的注册中心和配置中心,帮助开发团队更好地管理和调度微服务应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值