当前位置:   article > 正文

【Docker】Nacos的单机部署及集群部署_nacos docker

nacos docker

一、Nacos的介绍

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  1. 动态服务发现:Nacos支持DNS与RPC服务发现,提供原生SDK、OpenAPI等多种服务注册方式和DNS、HTTP与API等多种服务发现方式。
  2. 服务健康监测:Nacos提供对服务的实时健康检查,阻止向不健康的主机或服务实例发送请求。
  3. 动态配置服务:Nacos提供配置统一管理功能,能够以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
  4. 动态DNS服务:Nacos支持动态DNS服务权重路由,能够实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
  5. 服务及其元数据管理:Nacos支持从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics统计数据。

二、单机部署

1、准备

开启docker

systemctl start docker

创建目录

mkdir -p mysql/{conf,data,script}

my.cnf配置文件从主机拖到conf文件夹中

my.cnf

  1. [client]
  2. default-character-set=utf8
  3. [mysql]
  4. default-character-set=utf8
  5. [mysqld]
  6. # Remove leading # and set to the amount of RAM for the most important data
  7. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  8. # innodb_buffer_pool_size = 128M
  9. #
  10. # Remove leading # to turn on a very important data integrity option: logging
  11. # changes to the binary log between backups.
  12. # log_bin
  13. #
  14. # Remove leading # to set options mainly useful for reporting servers.
  15. # The server defaults are faster for transactions and fast SELECTs.
  16. # Adjust sizes as needed, experiment to find the optimal values.
  17. # join_buffer_size = 128M
  18. # sort_buffer_size = 2M
  19. # read_rnd_buffer_size = 2M
  20. skip-host-cache
  21. skip-name-resolve
  22. datadir=/var/lib/mysql
  23. socket=/var/lib/mysql/mysql.sock
  24. secure-file-priv=/var/lib/mysql-files
  25. user=mysql
  26. # Disabling symbolic-links is recommended to prevent assorted security risks
  27. symbolic-links=0
  28. log-error=/var/log/mysqld.log
  29. pid-file=/var/run/mysqld/mysqld.pid
  30. init_connect='SET collation_connection = utf8_unicode_ci'
  31. init_connect='SET NAMES utf8'
  32. character-set-server=utf8
  33. collation-server=utf8_unicode_ci
  34. skip-character-set-client-handshake
  35. # default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  36. # modeified:
  37. sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  38. max_allowed_packet=10M
  39. default-time_zone='+8:00'
  40. default_authentication_plugin=mysql_native_password

创建一个mysql容器:m1,自动连接了默认网络中的网桥(Bridge)

  1. docker run \
  2. --name m1 \
  3. -v /root/mode/mysql/conf/my.cnf:/etc/my.cnf \
  4. -v /root/mode/mysql/data:/var/lib/mysql \
  5. -v /root/mode/mysql/script:/script \
  6. --privileged=true \
  7. -e MYSQL_ROOT_PASSWORD=123456 \
  8. -d mysql/mysql-server:5.7

2、数据准备

登录MySQL容器

进入:

docker exec -it m1 bash

登入mysql:

mysql -uroot -p

输入设置好的密码:123456

创建一个数据库存放数据:

create database nacos;

使用数据库:

use nacos;

对应目录放入我们的数据脚本

执行指定路径中sql的脚本:

source  /script/nacos-mysql.sql;  

之后查看数据表:

show tables; 

进行用户的授权及密码设置:

grant all on *.* to root@'%' identified by '123456'; 

重启mysql :

docker restart m1

3、下载Nacos镜像

下载Nacos镜像

docker pull nacos/nacos-server

查看m1容器信息:

docker inspect m1

找到对应的IP,后面需要

4、开发访问端口

查看防火墙列表的端口:
 

firewall-cmd --zone=public --list-ports

开放端口8848:
 

firewall-cmd --zone=public --add-port=8848/tcp --permanent

更新防火墙端口:
 

firewall-cmd --reload

5、配置

创建并且运行nacos,及配置MySQL中的用户密码及m1的IP和端口映射

  1. docker run -itd \
  2. -e PREFER_HOST_MODE=ip \
  3. -e MODE=standalone \
  4. -e SPRING_DATASOURCE_PLATFORM=mysql \
  5. -e MYSQL_SERVICE_HOST=172.17.0.2 \
  6. -e MYSQL_SERVICE_PORT=3306 \
  7. -e MYSQL_SERVICE_DB_NAME=nacos \
  8. -e MYSQL_SERVICE_USER=root \
  9. -e MYSQL_SERVICE_PASSWORD=123456 \
  10. -p 8848:8848 \
  11. --name nacos \
  12. nacos/nacos-server

可以使用命令查看该容器是否运行成功:

docker logs nacos

然后就可以进行访问了

三、集群部署

1、创建容器

创建自定义网络

docker network create --subnet 172.18.0.0/16  mode

将自定义网络和网桥连接

docker network connect mode m1

查看m1容器

docker inspect m1

2、配置

创建并且运行nacos01并进行配置

  1. docker run -itd \
  2. -e PREFER_HOST_MODE=ip \
  3. -e MODE=cluster \
  4. -e NACOS_SERVERS="172.18.0.102:8848 172.18.0.103:8848" \
  5. -e SPRING_DATASOURCE_PLATFORM=mysql \
  6. -e MYSQL_SERVICE_HOST=m1 \
  7. -e MYSQL_SERVICE_PORT=3306 \
  8. -e MYSQL_SERVICE_DB_NAME=nacos \
  9. -e MYSQL_SERVICE_USER=root \
  10. -e MYSQL_SERVICE_PASSWORD=123456 \
  11. -p 8848:8848 \
  12. --name nacos01 \
  13. --net mode \
  14. --ip 172.18.0.101 \
  15. --restart=always \
  16. nacos/nacos-server

创建多个并进行配置

nacos02 

  1. docker run -itd \
  2. -e PREFER_HOST_MODE=ip \
  3. -e MODE=cluster \
  4. -e NACOS_SERVERS="172.18.0.101:8848 172.18.0.103:8848" \
  5. -e SPRING_DATASOURCE_PLATFORM=mysql \
  6. -e MYSQL_SERVICE_HOST=m1 \
  7. -e MYSQL_SERVICE_PORT=3306 \
  8. -e MYSQL_SERVICE_DB_NAME=nacos \
  9. -e MYSQL_SERVICE_USER=root \
  10. -e MYSQL_SERVICE_PASSWORD=123456 \
  11. --name nacos02 \
  12. --net mode \
  13. --ip 172.18.0.102 \
  14. --restart=always \
  15. nacos/nacos-server

nacos03

  1. docker run -itd \
  2. -e PREFER_HOST_MODE=ip \
  3. -e MODE=cluster \
  4. -e NACOS_SERVERS="172.18.0.101:8848 172.18.0.102:8848" \
  5. -e SPRING_DATASOURCE_PLATFORM=mysql \
  6. -e MYSQL_SERVICE_HOST=m1 \
  7. -e MYSQL_SERVICE_PORT=3306 \
  8. -e MYSQL_SERVICE_DB_NAME=nacos \
  9. -e MYSQL_SERVICE_USER=root \
  10. -e MYSQL_SERVICE_PASSWORD=123456 \
  11. --name nacos03 \
  12. --net mode \
  13. --ip 172.18.0.103 \
  14. --restart=always \
  15. nacos/nacos-server

可查看节点

3、负载均衡

在mode目录中创建目录:

mkdir -p nginx/conf.d

在conf.d目录中创建并且编辑配置文件default.conf

编辑

vim default.conf

集群nacos01,nacos02,nacos03的容器IP

  1. #服务器的集群
  2. upstream nacosList {
  3. server nacos01:8848 weight=1;
  4. server nacos02:8848 weight=1;
  5. server nacos03:8848 weight=1;
  6. }
  7. server {
  8. listen 80;
  9. server_name www.wfzldr.com;
  10. location / {
  11. root /etc/nginx/html/;
  12. index index.html index.htm;
  13. }
  14. error_page 500 502 503 504 /50x.html;
  15. location = /50x.html {
  16. root /usr/share/nginx/html;
  17. }
  18. location /nacos {
  19. proxy_pass http://nacosList;
  20. }
  21. }

创建并且运行负载均衡的容器

  1. docker run -itd \
  2. --name nginx \
  3. -v /root/mode/nginx/conf.d:/etc/nginx/conf.d \
  4. -p 80:80 \
  5. --net mode \
  6. nginx

ip地址/nacos即可访问实现负载均衡

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/919923
推荐阅读
相关标签
  

闽ICP备14008679号