一切福田,不離方寸,從心而覓,感無不通。

使用 docker-compose 部署 nacos(单机和集群)

之前已经编写过有关 nacos 的单机部署和集群部署,是直接在 CentOS7 上直接部署的,之前的博客链接如下:

单机版 nacos 部署:https://www.cnblogs.com/studyjobs/p/17380184.html

集群版 nacos 部署:https://www.cnblogs.com/studyjobs/p/17383397.html

为了进一步简化部署,本篇博客介绍如何采用 docker-compose 进行部署,与之前博客重复的细节,这里就不再赘述。

我的 CentOS7 虚拟机 ip 地址是 192.168.136.128,已经安装好了 docker 和 docker-compose

 

一、单机版部署

nacos 默认使用自带的 derby 数据库(类似于 sqlite 的文件型数据库),在开发环境部署单机版 nacos ,可以直接使用。

在虚拟机上创建 /app/nacos-single1 目录,里面放置一个 logs 目录和 docker-compose.yml

编写 docker-compose.yml 文件内容如下:

然后运行 docker-compose up -d 命令启动服务,访问 http://192.168.136.128:8848/nacos 即可

下面列出使用 mysql 数据库的 docker-compose.yml 内容,我的虚拟机上已经安装过了 mysql。首先需要在 mysql 中随便创建一个数据库(比如数据库名叫做 nacos),然后运行 nacos 提供的 sql 脚本初始化数据库,具体细节可参考上面贴出来的之前博客内容。

在虚拟机上创建 /app/nacos-single2 目录,里面放置一个 logs 目录和 docker-compose.yml

编写 docker-compose.yml 文件内容如下:

然后运行 docker-compose up -d 命令启动服务,访问 http://192.168.136.128:8848/nacos 即可

 

二、集群版部署

集群版部署主要满足以下几个条件即可:(注意:nacos 集群至少需要 3 个节点)

  • 必须使用 mysql 数据库,每个节点需要连接同一个 mysql 数据库
  • 每个节点都需要把所有节点的访问 ip 和端口配置上
  • 如果启用了用户名和密码验证,则必须每个节点的安全配置内容一致

在虚拟机上创建 /app/nacos-cluster 目录,里面放置 3 个 logs 目录、nginx.conf、docker-compose.yml

编写 docker-compose.yml 文件内容如下:

下面列出 nginx 的配置文件内容,由于 nginx 跟 3 个 nacos 节点在相同的网络 nacos_net,因此可以直接通过服务名称访问 3 个 nacos 节点,并直接对 3 个容器内部的 8848 和 9848 端口进行转发,其中 8848 采用 http 转发,9848 采用 tcp 转发,nginx 在 1.19 版本开始支持 tcp 的转发。

然后运行 docker-compose up -d 命令启动服务,由于我们既把每个节点的端口都映射出来,也采用 nginx 对容器内部的端口进行了转发,因此以下 4 个地址都可以访问 nacos 网站:

  • nginx 转发统一后的地址:http://192.168.136.128/nacos
  • nacos1 的访问地址:http://192.168.136.128:8841/nacos
  • nacos2 的访问地址:http://192.168.136.128:8842/nacos
  • nacos3 的访问地址:http://192.168.136.128:8843/nacos

 

三、启用账号密码访问

默认情况下,nacos 不需要用户名和密码验证,以上部署后的成果,直接访问就会进入 nacos 配置界面中。

对于 nacos 来说,一般情况下都是在内网使用,所以可以不启用账号密码验证。

如果想要启动账号密码访问,只需要在上面的 docker-compose.yml 中的 environment 下面增加以下环境变量配置即可:

对于 nacos 集群来说,以上环境变量的配置内容必须保持一致。

OK,以上就是采用 docker-compose 部署单机 nacos 和 集群 nacos 的全部内容,有关 java 的连接操作,可以参考我之前发布的博客。

 

from:https://www.cnblogs.com/studyjobs/p/18014237