目录
一、介绍
二、单个部署
三、多个部署
每篇一获
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos的主要功能包括:
服务发现和服务健康检查:Nacos能够帮助您实现自动服务注册、发现和健康检查。
动态配置服务:Nacos能够帮助您在所有环境中管理和维护应用的配置。您可以在Nacos中集中式管理应用的配置,并动态地推送配置更新。
动态DNS服务:Nacos提供了一种基于DNS协议的服务发现机制,可以更好地支持Kubernetes和Istio等云原生环境。
服务和元数据管理:Nacos能够帮助您管理微服务和元数据,包括流量管理、负载均衡、路由和鉴权等。
Nacos的目标是帮助您更快、更容易地构建、交付和管理微服务平台,从而使您能够更好地支持云原生应用的开发和运维。
docker访问没有开启先执行以下命令开启docker的服务:
systemctl start docker
在linux中创建一个工作目录
命令:
mkdir -p mysql/{conf,data,script}
mysql中有conf存放配置文件,mysql中有data存放数据的,script中是存放sql脚本
在将配置文件从主机拖到conf文件中:
创建一个mysql容器名称为m1,自动连接了默认网络中的网桥(Bridge)
docker run \
--name m1 \
-v /root/mode/mysql/conf/my.cnf:/etc/my.cnf \
-v /root/mode/mysql/data:/var/lib/mysql \
-v /root/mode/mysql/script:/script \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7
进入我们创建的mysql容器进行登录
进入:
docker exec -it m1 bash
登入mysql:
mysql -uroot -p
输入我们在创建是设置的密码即可登入,也就是123456,输入时是看不见输入的密码的
在创建一个数据库来存放数据:
create database nacos;
使用创建的数据库:
use nacos;
在我们创建数据的script目录中存放sql脚本,将使用目录挂载后容器也会有这个脚本,在主机中将脚本拖入即可
之后执行命令,将脚本在MySQL中执行,容器与虚拟机对应的目录,进行了目录挂载
执行指定路径中sql的脚本:
source /script/nacos-mysql.sql;
之后查看数据表:
show tables;
在进行用户的授权及密码设置:
grant all on *.* to root@'%' identified by '123456';
其中root为用户名称,123456为用户的密码。
之后退出:
之后重启mysql :
docker restart m1
下载nacos的镜像:
docker pull nacos/nacos-server
查看m1容器的信息:
docker inspect m1
需要知道这个容器的IP。
开放需要访问的端口,如果已经开放可以省略:
查看防火墙列表的端口:
firewall-cmd --zone=public --list-ports
开放端口8848:
firewall-cmd --zone=public --add-port=8848/tcp --permanent
更新防火墙端口:
firewall-cmd --reload
之后创建并且运行nacos,及配置MySQL中的用户密码及m1的IP和端口映射
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 8848:8848 \
--name nacos \
nacos/nacos-server
可以使用命令查看该容器是否运行成功:
docker logs nacos
nacos为容器名称》
如图说明运行成功。。
成功后在主机中访问nacos:
在进入m1容器,登入后进行配置列表的查询:
select * from config_info;
在nacos中查看我们部署的节点(只有一个):
创建一个自定义网络:
docker network create --subnet 172.18.0.0/16 mode
自定义网络和网桥的IP地址是不一样的,然后需要将这两个网连接起来:
docker network connect mode m1
m1连接mode网络。。
在查看m1容器:
docker inspect m1
创建并且运行nacos01,及配置MySQL中的用户密码及m1的IP和端口映射,还配置自定义网络的IP:
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster \ -e NACOS_SERVERS="172.18.0.102:8848 172.18.0.103:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=m1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -p 8848:8848 \ --name nacos01 \ --net mode \ --ip 172.18.0.101 \ --restart=always \ nacos/nacos-server
在查看nacos中的节点列表:
之后再将另外两个创建出来,给与相应的配置,名称nacos02,nacos03:
命令:docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster \ -e NACOS_SERVERS="172.18.0.101:8848 172.18.0.103:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=m1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ --name nacos02 \ --net mode \ --ip 172.18.0.102 \ --restart=always \ nacos/nacos-server
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster \ -e NACOS_SERVERS="172.18.0.101:8848 172.18.0.102:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=m1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ --name nacos03 \ --net mode \ --ip 172.18.0.103 \ --restart=always \ nacos/nacos-server
再查看节点状态:
接下来进行负载均衡
在mode目录中创建目录:
mkdir -p nginx/conf.d
在conf.d目录中创建并且编辑配置文件default.conf
创建编辑:
vim default.conf
编辑以下内容:
#服务器的集群 upstream nacosList { server nacos01:8848 weight=1; server nacos02:8848 weight=1; server nacos03:8848 weight=1; } server { listen 80; server_name www.zkingedu.com; location / { root /etc/nginx/html/; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location /nacos { proxy_pass http://nacosList; } }
集群nacos01,nacos02,nacos03的容器IP
按 i 进行编辑,按Esc退出编辑,并且输入:wq 保存编辑并且退出;
创建并且运行负载均衡的容器
命令:
docker run -itd \ --name nginx \ -v /root/mode/nginx/conf.d:/etc/nginx/conf.d \ -p 80:80 \ --net mode \ nginx
之后用虚拟机IP加上路径/nacos即可访问,并且负载均衡已实现:
在Linux上使用Docker进行Nacos集群部署,可以带来以下几个方面的收获:
简化部署过程:Docker可以将应用及其依赖打包在一起,形成一个标准化的单元,这使得部署过程变得非常简单。您只需要一个Docker命令,就可以在任何支持Docker的平台上部署Nacos。
提高资源利用率:Docker容器相比传统的虚拟机有更小的性能开销,可以更高效地利用系统资源。这意味着您可以在同样的硬件上运行更多的Nacos实例。
易于扩展和维护:使用Docker Swarm或Kubernetes等容器编排工具,可以轻松地对Nacos集群进行扩展和维护。当需要增加Nacos实例以应对更大的负载时,您只需要简单地调整编排配置即可。
环境一致性:Docker可以确保在不同环境中运行的Nacos实例有着一致的运行环境,这大大减少了因环境差异导致的问题。
便于故障排查和恢复:当Nacos实例出现问题时,您可以通过查看Docker容器的日志来进行故障排查。如果需要恢复到某个状态,只需要重新启动相应的Docker容器即可。
总的来说,使用Docker进行Nacos集群部署,可以使得部署和运维工作变得更加简单、高效和可靠。