【Docker】在Linux使用Docker进行nacos集群部署

发布时间:2024年01月18日

目录

一、介绍

二、单个部署

三、多个部署

?每篇一获


一、介绍

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

Nacos的主要功能包括:

  1. 服务发现和服务健康检查:Nacos能够帮助您实现自动服务注册、发现和健康检查。

  2. 动态配置服务:Nacos能够帮助您在所有环境中管理和维护应用的配置。您可以在Nacos中集中式管理应用的配置,并动态地推送配置更新。

  3. 动态DNS服务:Nacos提供了一种基于DNS协议的服务发现机制,可以更好地支持Kubernetes和Istio等云原生环境。

  4. 服务和元数据管理: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集群部署,可以带来以下几个方面的收获:

  1. 简化部署过程:Docker可以将应用及其依赖打包在一起,形成一个标准化的单元,这使得部署过程变得非常简单。您只需要一个Docker命令,就可以在任何支持Docker的平台上部署Nacos。

  2. 提高资源利用率:Docker容器相比传统的虚拟机有更小的性能开销,可以更高效地利用系统资源。这意味着您可以在同样的硬件上运行更多的Nacos实例。

  3. 易于扩展和维护:使用Docker Swarm或Kubernetes等容器编排工具,可以轻松地对Nacos集群进行扩展和维护。当需要增加Nacos实例以应对更大的负载时,您只需要简单地调整编排配置即可。

  4. 环境一致性:Docker可以确保在不同环境中运行的Nacos实例有着一致的运行环境,这大大减少了因环境差异导致的问题。

  5. 便于故障排查和恢复:当Nacos实例出现问题时,您可以通过查看Docker容器的日志来进行故障排查。如果需要恢复到某个状态,只需要重新启动相应的Docker容器即可。

总的来说,使用Docker进行Nacos集群部署,可以使得部署和运维工作变得更加简单、高效和可靠。

文章来源:https://blog.csdn.net/SAME_LOVE/article/details/135683190
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。