Docker 之 部署 Nacos

素颜马尾好姑娘i 2024-04-18 15:03 183阅读 0赞

前言

本小节我们学习一下使用Docker部署Nacos(Local standalone)。
虽说是单机部署,但使用Docker部署Nacos的单机版策略是:在单机上部署M-S Mysql机制以实现 Nacos持久化以及高可用,具体体现我会在后续的部署步骤中着重说明的。

  • 在根目录下创建/workspace/nacos目录

    1. [root@iZwz92qakfc7zvdr9h0gipZ nacos]# pwd
    2. /workspace/nacos
    3. [root@iZwz92qakfc7zvdr9h0gipZ nacos]#
  • 进入nacos目录运行:

    1. git clone https://github.com/nacos-group/nacos-docker.git
    2. cd nacos-docker
    3. docker-compose -f example/standalone-mysql.yaml up

    nacos-docker github:https://github.com/nacos-group/nacos-docker

此过程为nacos Docker-compose 拉去各个镜像并执行的过程,可能会比较久。如果你的服务器上运行了Mysql服务(或者docker形式部署的Mysql)并占用了3306端口,请先停止该服务,否则nacos的Master-Slave mysql镜像会部署失败!!!

  • 访问http://公网IP:8848/nacos即可:

    在这里插入图片描述

    登录的口令为:nacos/nacos

  • 验证nacose本地部署使用了M-S机制

    • 验证nacos standalon 所有的docke服务

      1. [root@iZwz92qakfc7zvdr9h0gipZ example]# docker ps -a
      2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      3. 45821359d711 prom/prometheus:latest "/bin/prometheus -..." About an hour ago Up 29 minutes 0.0.0.0:9090->9090/tcp prometheus
      4. aad63837847f nacos/nacos-server:latest "bin/docker-startu..." About an hour ago Up 12 minutes 0.0.0.0:8848->8848/tcp, 0.0.0.0:9555->9555/tcp nacos-standalone-mysql
      5. 897a63d0bb0d nacos/nacos-mysql-slave:latest "docker-entrypoint..." About an hour ago Up 29 minutes 33060/tcp, 0.0.0.0:3305->3306/tcp mysql-slave
      6. 0f0532a7f788 nacos/nacos-mysql-master:latest "docker-entrypoint..." About an hour ago Up 29 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-master
      7. 0d794b61b0b0 grafana/grafana:latest "/run.sh" About an hour ago Up 29 minutes 0.0.0.0:3000->3000/tcp grafana

      nacos standalon 依赖了:
      prometheus(普罗米修斯)
      nacos-server:nacos服务核心镜像
      nacos-mysql-slave:nacos 持久化策略主数据库,默认3306端口
      nacos-mysql-master:nacos 持久化策略从数据库,默认3305端口
      grafana:

  • 测试持久化数据库

    • 测试主数据库:nacos-mysql-master,我使用navicat UI来连接 nacos-mysql-master
      在这里插入图片描述在这里插入图片描述
    • 测试主数据库:nacos-mysql-slave
      在这里插入图片描述在这里插入图片描述
  • nacos 数据持久化主从数据库机制与配置说明:

    • nacos-docker实现的部署方式将优先试图用M-S机制,如若M-S mysql无法部署成功(非自动部署),nacos依旧可以依赖其他三个镜像运行,只是此时将无法做持久化处理,同时也不能获取持久化数据。
    • 在example/standalon-mysql.yaml配置文件中,有nacos的主从数据库配置信息:

      1. environment:
      2. - PREFER_HOST_MODE=hostname
      3. - MODE=standalone
      4. - SPRING_DATASOURCE_PLATFORM=mysql
      5. - MYSQL_MASTER_SERVICE_HOST=mysql-master --主数据库镜像
      6. - MYSQL_MASTER_SERVICE_DB_NAME=nacos_devtest --主从数据库名称
      7. - MYSQL_MASTER_SERVICE_PORT=3306 --主数据库与端口
      8. - MYSQL_SLAVE_SERVICE_HOST=mysql-slave --从数据库
      9. - MYSQL_SLAVE_SERVICE_PORT=3305 --从数据库端口
      10. - MYSQL_MASTER_SERVICE_USER=nacos --主数据库用户名,若未对从数据库做特殊声明,从数据库用户名和主数据库的一致
      11. - MYSQL_MASTER_SERVICE_PASSWORD=nacos --主数据库链接密码,若未对从数据库做特殊声明,从数据库链接密码和主数据库的一致

    在测试主从数据库是请先在你的ECS上开启相应的安全组规则,及开放3306/3305端口

小结

  • Docker部署 Nacos单机版仍旧使用了M-S机制以确保nacos高可用,这是官方推荐的部署策略(个人觉得有点略重的样子,毕竟依赖了较多的镜像),你也可以选择其他方式部署,比如不用官方推荐的方式,只部署纯净的nacos并作持久化机制(这种方式请自己寻找学习资料)。
  • 启动naocs

    1. [root@iZwz92qakfc7zvdr9h0gipZ example]# docker-compose -f standalone-mysql.yaml start
    2. Starting mysql-master ... done
    3. Starting grafana ... done
    4. Starting mysql-slave ... done
    5. Starting nacos ... done
    6. Starting prometheus ... done
  • 停止nacos

    1. [root@iZwz92qakfc7zvdr9h0gipZ example]# docker-compose -f standalone-mysql.yaml stop
    2. Stopping prometheus ... done
    3. Stopping nacos-standalone-mysql ... done
    4. Stopping mysql-slave ... done
    5. Stopping mysql-master ... done
    6. Stopping grafana ... done

发表评论

表情:
评论列表 (有 0 条评论,183人围观)

还没有评论,来说两句吧...

相关阅读