当前位置: 首页 > news >正文

docker-compose集群(单机多节点)环境搭建与使用

此方案已经经过生产环境验证,可放心大胆使用如果喜欢,欢迎点赞👍+收藏❤️+评论噢~
略去 Docker 和 Docker Compose 安装部分,如果有需要的同学,可以评论,创建 docker-compose.yml 文件并配置 Nacos 集群和 MySQL 的完整步骤:

1. 创建 docker-compose.yml 文件

在工作目录 /usr/local/application 创建 docker-compose.yml 文件,内容如下:

version: '3'
services:# 第一个 Nacos 实例的配置nacos1:# 使用 Nacos 官方镜像版本 2.2.3image: cluster/nacos-server-one:v2.2.3# 容器名称为 nacos1,方便识别和管理container_name: nacos1# 确保容器的主机名为 nacos1(不可省略)hostname: nacos1environment:# 集群模式,Nacos 运行在集群模式下- MODE=cluster# 使用主机名进行节点间通信(不可省略)- PREFER_HOST_MODE=hostname# 定义集群中的 Nacos 节点地址,使用主机名- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848#- NACOS_SERVER_IP=nacos1# 数据源平台为 MySQL- SPRING_DATASOURCE_PLATFORM=mysql# 指定 MySQL 服务主机名- MYSQL_SERVICE_HOST=mysql# Nacos 使用的 MySQL 数据库名称- MYSQL_SERVICE_DB_NAME=nacos# MySQL 数据库端口- MYSQL_SERVICE_PORT=3306# 连接 MySQL 数据库的用户名- MYSQL_SERVICE_USER=nacos# 连接 MySQL 数据库的密码- MYSQL_SERVICE_PASSWORD=nacos123# 设置 JVM 参数以最小化内存使用- JAVA_OPTS=-Xms256m -Xmx256m -Xmn128mvolumes:# 将宿主机上的 application.properties 文件挂载到 Nacos 容器中- ./nacos/config/application.properties:/home/nacos/conf/application.properties# 集群配置- ./nacos/config/cluster.conf:/home/nacos/conf/cluster.conf# 将 Nacos 日志目录持久化到宿主机,确保日志不会因容器重启而丢失- ./nacos/logs/nacos1:/home/nacos/logs# 将 Nacos 数据目录持久化到宿主机,防止配置和服务注册信息丢失- ./nacos/data/nacos1:/home/nacos/data# 映射 Nacos 容器的 8848 端口到宿主机,允许外部访问ports:- "8848:8848"- "7848:7848"- "9848:9848"- "9849:9849"networks:- nacos_net# 第二个 Nacos 实例的配置nacos2:image: cluster/nacos-server-two:v2.2.3container_name: nacos2hostname: nacos2environment:- MODE=cluster- PREFER_HOST_MODE=hostname- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_DB_NAME=nacos- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=nacos- MYSQL_SERVICE_PASSWORD=nacos123- JAVA_OPTS=-Xms256m -Xmx256m -Xmn128mvolumes:- ./nacos/config/application.properties:/home/nacos/conf/application.properties- ./nacos/config/cluster.conf:/home/nacos/conf/cluster.conf- ./nacos/logs/nacos2:/home/nacos/logs- ./nacos/data/nacos2:/home/nacos/dataports:- "8849:8848"networks:- nacos_net# 第三个 Nacos 实例的配置nacos3:image: cluster/nacos-server-thr:v2.2.3container_name: nacos3hostname: nacos3environment:- MODE=cluster- PREFER_HOST_MODE=hostname- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_DB_NAME=nacos- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=nacos- MYSQL_SERVICE_PASSWORD=nacos123- JAVA_OPTS=-Xms256m -Xmx256m -Xmn128mvolumes:- ./nacos/config/application.properties:/home/nacos/conf/application.properties- ./nacos/config/cluster.conf:/home/nacos/conf/cluster.conf- ./nacos/logs/nacos3:/home/nacos/logs- ./nacos/data/nacos3:/home/nacos/dataports:- "8850:8848"networks:- nacos_net# MySQL 数据库服务的配置,Nacos 集群依赖 MySQL 数据库存储配置信息mysql:image: custom/mysql:5.7container_name: mysqlenvironment:# MySQL root 用户的密码- MYSQL_ROOT_PASSWORD=root# 创建 Nacos 所需的数据库- MYSQL_DATABASE=nacos# 创建数据库用户,用于连接 Nacos- MYSQL_USER=nacos# 连接数据库用户的密码- MYSQL_PASSWORD=nacos123volumes:# 持久化 MySQL 数据到宿主机,防止数据丢失- ./mysql:/var/lib/mysql# 自动加载 MySQL 初始化 SQL 脚本,用于创建 Nacos 数据表- ./mysql-init:/docker-entrypoint-initdb.dports:# 映射 MySQL 容器的 3306 端口到宿主机,允许外部访问- "3306:3306"networks:- nacos_netnetworks:nacos_net:driver: bridge

2. 创建宿主机文件用于挂载

执行以下命令创建目录,确保日志和数据可以持久化:

mkdir -p ./nacos/logs/nacos1 ./nacos/logs/nacos2 ./nacos/logs/nacos3
mkdir -p ./nacos/data/nacos1 ./nacos/data/nacos2 ./nacos/data/nacos3
mkdir -p ./nacos/config ./mysql ./mysql-init

3. 配置 Nacos 的 application.propertiescluster.conf

application.properties 文件内容:
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.port=${NACOS_APPLICATION_PORT:8848}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT}/${MYSQL_SERVICE_DB_NAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user.0=${MYSQL_SERVICE_USER}
db.password.0=${MYSQL_SERVICE_PASSWORD}
nacos.core.auth.enabled=true
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN}
cluster.conf 文件内容:
nacos1:8848
nacos2:8848
nacos3:8848

4. 初始化 MySQL 数据库

从 Nacos 官方 MySQL 初始化 SQL 文件 下载初始化 SQL 文件,将其放入 ./mysql-init/ 目录中。

5. 启动 docker-compose

在工作目录 /usr/local/application 中运行以下命令来启动服务:

docker-compose up -d

6. 验证服务是否正常启动

通过以下命令查看容器状态:

docker-compose ps

查看 Nacos 页面,访问 http://<server-ip>:8848/nacos,查看是否能访问到三个 Nacos 实例。如果能看到三个节点,则说明集群启动成功。

7. Spring Boot 整合 Nacos 集群

添加依赖

pom.xml 中添加以下依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.1.RELEASE</version>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.1.RELEASE</version>
</dependency>
bootstrap.yml 配置
spring:application:name: link-nacoscloud:nacos:config:server-addr: 122.51.12.83:8848,122.51.12.83:8849,122.51.12.83:8850namespace: publicgroup: DEFAULT_GROUPfile-extension: ymlusername: nacospassword: nacosdiscovery:server-addr: 122.51.12.83:8848,122.51.12.83:8849,122.51.12.83:8850namespace: publicgroup: DEFAULT_GROUPusername: nacospassword: nacoslogging:level:com.alibaba.nacos: debug

8. 启动 Spring Boot 项目

启动 Spring Boot 项目后,检查日志,确认应用是否成功连接到 Nacos 并注册到集群。如果 Spring Boot 应用成功启动并连接到 Nacos 集群,则集群配置完成。

这样你就完成了 Nacos 集群和 Spring Boot 的整合。

成功之路和失败之路几乎是相同的。

相关文章:

docker-compose集群(单机多节点)环境搭建与使用

此方案已经经过生产环境验证&#xff0c;可放心大胆使用如果喜欢&#xff0c;欢迎点赞&#x1f44d;收藏❤️评论噢&#xff5e; 略去 Docker 和 Docker Compose 安装部分,如果有需要的同学&#xff0c;可以评论&#xff0c;创建 docker-compose.yml 文件并配置 Nacos 集群和 M…...

从静态多态、动态多态到虚函数表、虚函数指针

多态&#xff08;Polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;它允许不同类的对象对同一消息做出不同的响应。多态性使得可以使用统一的接口来操作不同类的对象&#xff0c;从而提高了代码的灵活性和可扩展性。 一、多态的表现形式 1. 静态多态&…...

用 Pygame 实现一个乒乓球游戏

用 Pygame 实现一个乒乓球游戏 伸手需要一瞬间&#xff0c;牵手却要很多年&#xff0c;无论你遇见谁&#xff0c;他都是你生命该出现的人&#xff0c;绝非偶然。若无相欠&#xff0c;怎会相见。 引言 在这篇文章中&#xff0c;我将带领大家使用 Pygame 库开发一个简单的乒乓球…...

基于大数据可视化的化妆品推荐及数据分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化时…...

数学基础 -- 微积分最优化之一个最简单的例子

微积分中的一个最简单的最优化例子 问题描述 假设你有一条长度为 10 米的栅栏&#xff0c;你需要围成一个矩形的鸡舍&#xff0c;使得围成的面积最大。求这个矩形的长和宽应是多少&#xff0c;以使得面积最大。 步骤 设定变量&#xff1a; 设矩形的长为 x x x 米&#xff0…...

kubernetes K8S 结合 Istio 实现流量治理

目录 1.Istio介绍&#xff1f; 1.1 Istio是什么&#xff1f; 1.2 Istio流量管理 1.2.1 熔断 1.2.2 超时 1.2.3 重试 2.Istio架构 3.istio组件详解 3.1 Pilot 3.2 Envoy 3.3 Citadel 3.4 Galley 3.5 Ingressgateway 3.5 egressgateway 扩展、k8s1.23及1.23以下版…...

Selenium with Python学习笔记整理(网课+网站持续更新)

本篇是根据学习网站和网课结合自己做的学习笔记&#xff0c;后续会一边学习一边补齐和整理笔记 非常推荐白月黑羽的学习网站&#xff1a; 白月黑羽 (byhy.net) https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱…...

1.随机事件与概率

第一章 随机时间与概率 1. 随机事件及其运算 1.1 随机现象 ​ 确定性现象&#xff1a;只有一个结果的现象 ​ 确定性现象&#xff1a;结果不止一个&#xff0c;且哪一个结果出现&#xff0c;人们事先并不知道 1.2 样本空间 ​ 样本空间&#xff1a;随机现象的一切可能基本…...

Redis结合Caffeine实现二级缓存:提高应用程序性能

本文将详细介绍如何使用CacheFrontend和Caffeine来实现二级缓存。 1. 简介 CacheFrontend: 是一种用于缓存的前端组件或服务。通俗的讲&#xff1a;该接口可以实现本地缓存与redis自动同步&#xff0c;如果本地缓存&#xff08;JVM级&#xff09;有数据&#xff0c;则直接从本…...

【LLM】Ollama:本地大模型 WebAPI 调用

Ollama 快速部署 安装 Docker&#xff1a;从 Docker 官网 下载并安装。 部署 Ollama&#xff1a; 使用以下命令进行部署&#xff1a; docker run -d -p 11434:11434 --name ollama --restart always ollama/ollama:latest进入容器并下载 qwen2.5:0.5b 模型&#xff1a; 进入 O…...

SpringBoot集成阿里easyexcel(二)Excel监听以及常用工具类

EasyExcel中非常重要的AnalysisEventListener类使用&#xff0c;继承该类并重写invoke、doAfterAllAnalysed&#xff0c;必要时重写onException方法。 Listener 中方法的执行顺序 首先先执行 invokeHeadMap() 读取表头&#xff0c;每一行都读完后&#xff0c;执行 invoke()方法…...

使用ELK Stack进行日志管理和分析:从入门到精通

在现代IT运维中&#xff0c;日志管理和分析是确保系统稳定性和性能的关键环节。ELK Stack&#xff08;Elasticsearch, Logstash, Kibana&#xff09;是一个强大的开源工具集&#xff0c;广泛用于日志收集、存储、分析和可视化。本文将详细介绍如何使用ELK Stack进行日志管理和分…...

前端框架对比与选择

&#x1f916; 作者简介&#xff1a;水煮白菜王 &#xff0c;一位资深前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧✍。 感谢支持&#x1f495;&#x1f495;&#x1f495; 目…...

Springboot jPA+thymeleaf实现增删改查

项目结构 pom文件 配置相关依赖&#xff1a; 2.thymeleaf有点类似于jstlel th:href"{url}表示这是一个链接 th:each"user : ${users}"相当于foreach&#xff0c;对user进行循环遍历 th:if进行if条件判断 {变量} 与 ${变量}的区别: 4.配置好application.ym…...

【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差

本文内容来自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7396959.html?templateId1718516 问题现象 yashandb执行带oracle dblink表的sql性能差&#xff1a; 同样的语句&#xff0c;同样的数据&#xff0c;oracle通过dblink访问远端oracle执行…...

效率工具推荐 | 高效管理客服中心知识库

人工智能AI的广泛应用&#xff0c;令AI知识库管理已成为优化客服中心运营的核心策略之一。一个高效、易用且持续更新的知识库不仅能显著提升客服代表的工作效率&#xff0c;还能极大提升客户的服务体验。而高效效率工具如HelpLook&#xff0c;能够轻松搭建AI客服帮助中心&#…...

综合实验1 利用OpenCV统计物体数量

一、实验简介 传统的计数方法常依赖于人眼目视计数&#xff0c;不仅计数效率低&#xff0c;且容易计数错误。通常现实中的对象不会完美地分开&#xff0c;需要通过进一步的图像处理将对象分开并计数。本实验巩固对OpenCV的基础操作的使用&#xff0c;适当的增加OpenCV在图像处…...

[Redis][主从复制][上]详细讲解

目录 0.前言1.配置1.建立复制2.断开复制3.安全性4.只读5.传输延迟 2.拓扑1.一主一从结构2.一主多从结构2.树形主从结构 0.前言 说明&#xff1a;该章节相关操作不需要记忆&#xff0c;理解流程和原理即可&#xff0c;用的时候能自主查到即可主从复制&#xff1f; 分布式系统中…...

【算法】leetcode热题100 146.LRU缓存. container/list用法

https://leetcode.cn/problems/lru-cache/description/?envTypestudy-plan-v2&envIdtop-100-liked 实现语言&#xff1a;go lang LRU 最近最少未使用&#xff0c;是一种淘汰策略&#xff0c;当缓存空间不够使用的时候&#xff0c;淘汰一个最久没有访问的存储单元。目前…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...