Docker 之 部署 Nacos
前言
本小节我们学习一下使用Docker部署Nacos(Local standalone)。
虽说是单机部署,但使用Docker部署Nacos的单机版策略是:在单机上部署M-S Mysql机制以实现 Nacos持久化以及高可用,具体体现我会在后续的部署步骤中着重说明的。
在根目录下创建/workspace/nacos目录
[root@iZwz92qakfc7zvdr9h0gipZ nacos]# pwd
/workspace/nacos
[root@iZwz92qakfc7zvdr9h0gipZ nacos]#
进入nacos目录运行:
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
docker-compose -f example/standalone-mysql.yaml up
nacos-docker github
//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服务
[root@iZwz92qakfc7zvdr9h0gipZ example]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45821359d711 prom/prometheus:latest "/bin/prometheus -..." About an hour ago Up 29 minutes 0.0.0.0:9090->9090/tcp prometheus
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
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
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
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-mysql-master,我使用navicat UI来连接 nacos-mysql-master
nacos 数据持久化主从数据库机制与配置说明:
- nacos-docker实现的部署方式将优先试图用M-S机制,如若M-S mysql无法部署成功(非自动部署),nacos依旧可以依赖其他三个镜像运行,只是此时将无法做持久化处理,同时也不能获取持久化数据。
在example/standalon-mysql.yaml配置文件中,有nacos的主从数据库配置信息:
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_MASTER_SERVICE_HOST=mysql-master --主数据库镜像
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_devtest --主从数据库名称
- MYSQL_MASTER_SERVICE_PORT=3306 --主数据库与端口
- MYSQL_SLAVE_SERVICE_HOST=mysql-slave --从数据库
- MYSQL_SLAVE_SERVICE_PORT=3305 --从数据库端口
- MYSQL_MASTER_SERVICE_USER=nacos --主数据库用户名,若未对从数据库做特殊声明,从数据库用户名和主数据库的一致
- MYSQL_MASTER_SERVICE_PASSWORD=nacos --主数据库链接密码,若未对从数据库做特殊声明,从数据库链接密码和主数据库的一致
在测试主从数据库是请先在你的ECS上开启相应的安全组规则,及开放3306/3305端口
小结
- Docker部署 Nacos单机版仍旧使用了M-S机制以确保nacos高可用,这是官方推荐的部署策略(个人觉得有点略重的样子,毕竟依赖了较多的镜像),你也可以选择其他方式部署,比如不用官方推荐的方式,只部署纯净的nacos并作持久化机制(这种方式请自己寻找学习资料)。
启动naocs
[root@iZwz92qakfc7zvdr9h0gipZ example]# docker-compose -f standalone-mysql.yaml start
Starting mysql-master ... done
Starting grafana ... done
Starting mysql-slave ... done
Starting nacos ... done
Starting prometheus ... done
停止nacos
[root@iZwz92qakfc7zvdr9h0gipZ example]# docker-compose -f standalone-mysql.yaml stop
Stopping prometheus ... done
Stopping nacos-standalone-mysql ... done
Stopping mysql-slave ... done
Stopping mysql-master ... done
Stopping grafana ... done
还没有评论,来说两句吧...