Docker 单机/集群 部署 Nacos2.2.0

这篇具有很好参考价值的文章主要介绍了Docker 单机/集群 部署 Nacos2.2.0。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单机部署

1- 拉取镜像

docker pull nacos/nacos-server:v2.2.0

2- 创建数据库
数据库初始化脚本:https://github.com/alibaba/nacos/blob/2.2.0/config/src/main/resources/META-INF/nacos-db.sql

3- 准备挂载的配置文件目录和日志目录

  • 日志目录(空目录):./nacos/logs
  • 配置文件:./nacos/conf/application.properties
    • 拷贝:https://github.com/nacos-group/nacos-docker/blob/v2.2.0/example/init.d/application.properties 配置文件中的内容到 linux主机目录:./nacos/conf/application.properties
    • 编辑 application.properties 配置文件中的数据库信息
      #*************** Config Module Related Configurations ***************#
      ### If use MySQL as datasource:
      spring.datasource.platform=mysql
      
      ### Count of DB:
      db.num=1
      
      ### Connect URL of DB:
      db.url.0=jdbc:mysql://192.168.157.142:3306/nacos-220?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
      db.user.0=root
      db.password.0=1234
      

4- 运行容器

docker run --name nacos-server \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v ./nacos/logs:/home/nacos/logs \
-v ./nacos/conf/application.properties:/home/nacos/conf/application.properties \
-d nacos/nacos-server:v2.2.0

集群部署

1- 准备三台主机,ip分别为

  • 192.168.3.211
  • 192.168.3.212
  • 192.168.3.213

2- 关闭防火墙(三台)

systemctl stop firewalld
systemctl disable firewalld

3- 禁用selinux(三台)

vim /etc/selinux/config
# 将 SELNINUX=enforcing 改为 disable
SELINUX=disable

方式一:Docker compose

编写docker-compose脚本文件

节点1(nacos-1)

目录结构

.
├── nacos-cluster
│   ├── logs
│   └── nacos-cluster-1.yml
└── nacos-mysql
    ├── data
    └── Dockerfile

1- Dockerfile

FROM mysql:8.0.28
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
EXPOSE 3306

2- nacos-cluster-1.yml

version: "3.8"
services:
    nacos-1:
        container_name: nacos-1
        image: nacos/nacos-server:v2.2.0
        volumes:
            - ./logs:/home/nacos/logs
        ports:
            - "8848:8848"
            - "9848:9848"
            - "9849:9849"
        environment:
            MODE: cluster
            #NACOS_SERVER_IP: 192.168.3.211
            NACOS_SERVERS: 192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848
            SPRING_DATASOURCE_PLATFORM: mysql
            MYSQL_SERVICE_HOST: 192.168.3.211
            MYSQL_SERVICE_PORT: 3306
            MYSQL_SERVICE_DB_NAME: nacos-220
            MYSQL_SERVICE_USER: root
            MYSQL_SERVICE_PASSWORD: 1234
            MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
            JVM_XMS: 256m
            JVM_XMX: 512m
            JVM_XMN: 256m
        depends_on:
            mysql:
                condition: service_healthy

    mysql:
        container_name: mysql
        build:
            context: ../nacos-mysql
            dockerfile: Dockerfile
        image: mysql:8.0.28
        privileged: true
        environment:
            MYSQL_ROOT_PASSWORD: 1234
            MYSQL_DATABASE: nacos-220
            #MYSQL_USER: baiye
            #MYSQL_PASSWORD: by1234
        volumes:
            - ../nacos-mysql/data:/var/lib/mysql
        ports:
            - "3306:3306"
        healthcheck:
            test: [ "CMD", "mysqladmin" ,"ping", "-h", "192.168.3.211" ]
            interval: 5s
            timeout: 10s
            retries: 10

3- 运行

docker-compose -f nacos-cluster-1.yml up -d

节点2(nacos-2)

目录结构

.
└── nacos-cluster
    ├── logs
    └── nacos-cluster-2.yml

1- nacos-cluster-2.yml

version: "3.8"
services:
    nacos-2:
        image: nacos/nacos-server:v2.2.0
        container_name: nacos-2
        volumes:
            - ./logs:/home/nacos/logs
        ports:
            - "8848:8848"
            - "9848:9848"
            - "9849:9849"
        environment:
            MODE: cluster
            #ACOS_SERVER_IP: 192.168.3.212
            NACOS_SERVERS: 192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848
            SPRING_DATASOURCE_PLATFORM: mysql
            MYSQL_SERVICE_HOST: 192.168.3.211
            MYSQL_SERVICE_PORT: 3306
            MYSQL_SERVICE_DB_NAME: nacos-220
            MYSQL_SERVICE_USER: root
            MYSQL_SERVICE_PASSWORD: 1234
            MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
            JVM_XMS: 256m
            JVM_XMX: 512m
            JVM_XMN: 256m

节点3(nacos-3)

目录结构

.
└── nacos-cluster
    ├── logs
    └── nacos-cluster-3.yml

1- nacos-cluster-3.yml

version: "3.8"
services:
    nacos-3:
        image: nacos/nacos-server:v2.2.0
        container_name: nacos-3
        volumes:
            - ./logs:/home/nacos/logs
        ports:
            - "8848:8848"
            - "9848:9848"
            - "9849:9849"
        environment:
            MODE: cluster
            #NACOS_SERVER_IP: 192.168.3.213
            NACOS_SERVERS: 192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848
            SPRING_DATASOURCE_PLATFORM: mysql
            MYSQL_SERVICE_HOST: 192.168.3.211
            MYSQL_SERVICE_PORT: 3306
            MYSQL_SERVICE_DB_NAME: nacos-220
            MYSQL_SERVICE_USER: root
            MYSQL_SERVICE_PASSWORD: 1234
            MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
            JVM_XMS: 256m
            JVM_XMX: 512m
            JVM_XMN: 256m

方式二:Docker run

将下面的命令**分别在三台主机上面运行(可修改 --name 的值便于区分不同节点)**即可到达和 docker compose 相同的效果,但是运行前需要先安装 mysql

docker run -it -d \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.3.211 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos-220 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=1234 \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
-e JVM_XMS=256m \
-e JVM_XMX=512m \
-e JVM_XMN=256m \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--name nacos-1 \
--restart=always \
nacos/nacos-server:v2.2.0

Nginx 配置

1- 拉取镜像

docker pull nginx

2- 准备需要挂载的文件

# 运行一个 nginx 镜像
docker run -it -d --name=temp -p 8080:80  nginx
# 拷贝文件到主机,用于后面的挂载
docker cp temp:/usr/share/nginx/html ./
docker cp temp:/etc/nginx ./

3- 编辑配置文件

vim ./nginx/nginx.conf

在 http 中添加 nacos 配置,具体位置参考图片

#下面是 Naocs 集群的配置
upstream nacoscluster {
    server 192.168.3.211:8848;
    server 192.168.3.212:8848;
    server 192.168.3.213:8848;
}
server {
    listen 8848; # 此处的 8848 可自定义
    server_name 192.168.3.208;
    location /nacos/ { 
        proxy_pass http://nacoscluster/nacos/;
    }
}

Docker 单机/集群 部署 Nacos2.2.0,运维专栏,docker,容器,运维,springcloud

在 http 上一行 添加 nacosGrpc 配置(Naocs 2.x 版本之前无需添加下面的配置),具体位置参考图片

# 下面是 Nacos 的集群的配置
stream {
    upstream nacosGrpc {
        server 192.168.3.211:9848;
        server 192.168.3.212:9848;
        server 192.168.3.213:9848;
    }
    server {
        listen 9848; # 此处的 9848 在自定义基础上加1000,即 8848 + 1000
        proxy_pass nacosGrpc;
    }
}

Docker 单机/集群 部署 Nacos2.2.0,运维专栏,docker,容器,运维,springcloud

4- 运行镜像

注意:此处一定要将 nacos 的访问端口暴露出去,我的访问端口是配置文件中自定义的 8848

docker run -it -d --name=nacos-nginx --restart=always -p 18008:80 -p 8848:8848 -p 9848:9848 -v ./content:/usr/share/nginx/html -v  ./nginx:/etc/nginx nginx

注意:这个位置一定要暴露nacosGrpc 配置的端口号9848,否则nacos不能注册服务

成功访问

访问地址:http://192.168.3.208:8848/nacos/

Docker 单机/集群 部署 Nacos2.2.0,运维专栏,docker,容器,运维,springcloud

Nacos 报错总结

docker 启动 nacos 报错

报错信息:Error creating bean with name ‘memoryMonitor’ defined in URL [jar:file:/home/nacos/target/nacos-server

报错信息:ErrMsg:Nacos Server did not start because dumpservice bean construction failure :No DataSource set

Docker 单机/集群 部署 Nacos2.2.0,运维专栏,docker,容器,运维,springcloud

两种解决办法:

  1. nacos 启动失败,是因为 mysql 没有被唤醒,我们可以尝试用数据库连接工具连接 mysql ,从而唤醒mysql,最后重启 nacos 即可解决问题。

  2. 指定加载的先后顺序,只有当 mysql 健康后才开始运行 nacos,需要我们在 mysql 中添加下面的脚本,全部配置参考节点1(nacos-1)的脚本

    healthcheck:
        test:  curl --fail http://192.168.3.220:18848/nacos/actuator/health || exit 1
        interval: 10s
        timeout: 5s
        retries: 3
    

推荐使用第二种解决办法,为 MySQL 进行检查,Nacos 只有在 MySQL 健康检查通过后才开始启动文章来源地址https://www.toymoban.com/news/detail-609539.html

到了这里,关于Docker 单机/集群 部署 Nacos2.2.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker启动nacos(单机模式、集群模式)

    docker pull nacos/nacos-server:v2.1.2 2.1.先以单机模式运行nacos docker run -d --name nacos -p 8848:8848 -e MODE=standalone nacos/nacos-server:v2.1.2 查看运行过程:docker logs -f nacos ps:如果启动失败可能是服务器内存过小,如果要限制nacos 占用的内存大小,使用以下语句 docker run --name nacos -e JVM_XMS=256m -

    2023年04月17日
    浏览(31)
  • docker-compose部署nacos2.3.0+mysql5.7

    docker-compose-nacos.yml my.cnf 启动docker 数据库启动成功之后执行nacos脚本创建表 如果需要迁移老版本数据 导入csv格式好使

    2024年02月19日
    浏览(29)
  • Nacos2.2.0-开启鉴权配置、权限认证

    1、application.properties文件 修改之前 修改之后 2、增加项目中nacos注册服务的验证信息 增加用户及密码:

    2024年02月13日
    浏览(32)
  • Nacos2.2.0多数据源适配oracle12C-修改Nacos源码

    从2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件.本文档详细介绍一个多数据源插件如何实现以及如何使其生效。 Nacos整体介绍可看N

    2023年04月08日
    浏览(38)
  • nacos - centos7.x环境单机与集群快速部署

    参考官网:https://nacos.io/zh-cn/docs/what-is-nacos.html 官方集群部署手册:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 【单机部署】 1.下载 解压到安装目录 下载:wget -c https://github.com/alibaba/nacos/releases/download/2.1.2/nacos-server-2.1.2.tar.gz 解压:tar -zxvf nacos-server-2.1.2.tar.gz -C /opt/app/ 2.初始

    2024年02月09日
    浏览(30)
  • Nacos2.2.1 集群搭建

    Nacos默认端口是8848,2.0版本后另外还占用9848,9849两个端口,这两个是gRPC端口,用于服务端与客户端通讯,所以在单机上配置集群节点,节点要配置的端口不能连续,否则在启动时报端口占用的错误。 端口 与主端口(8848)偏移量 作用 9848 1000 客户端gRPC请求服务端口,用户客

    2024年02月12日
    浏览(25)
  • Docker高级——Docker部署RabbitMQ(单机,集群,仲裁队列)

    我们在Centos7虚拟机中使用Docker来安装。 方式一:在线拉取 方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜像即可: 执行下面的命令来运行MQ容器: 接下来,我们看看如何安装RabbitMQ的集群。 在RabbitMQ的官方文档中,讲述了两种集群

    2024年02月16日
    浏览(29)
  • nacos2.0集群(8848,7848,9848,9849 4个端口)

    home home https://nacos.io/zh-cn/ tar -zxvf nacos-server-2.0.0.tar.gz 1)防火墙放开8848端口 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent 2)启动 sh startup.sh -m standalone -p embedded 参数 -m 启动方式(单机:standalone 集群:cluster) 参数 -p 持久化方式,单机可在application.properties文件中修改 1)

    2024年02月04日
    浏览(25)
  • docker容器单机部署zookeeper+kafka集群

    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 其中zookeeper会转化成zookeeper的ip kafka1: 10.21.214.66 其中10.21.214.66 填写宿主机ip

    2024年02月19日
    浏览(31)
  • docker部署单机ES集群7.2.0

    初始化es配置文件 调高JVM线程数限制数量 服务部署 es集群部署 确认集群配置 上面是同一台主机建立的,没设置内网ip,所以显示的是docker网络ip,如果是三台内网主机建立集群,建立集群成功后如图所示: 部署elasticsearch-head 便于管理es数据  确认效果 汉化:kibana 7.* 设置中

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包