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.properties
和 cluster.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集群(单机多节点)环境搭建与使用
此方案已经经过生产环境验证,可放心大胆使用如果喜欢,欢迎点赞👍收藏❤️评论噢~ 略去 Docker 和 Docker Compose 安装部分,如果有需要的同学,可以评论,创建 docker-compose.yml 文件并配置 Nacos 集群和 M…...
从静态多态、动态多态到虚函数表、虚函数指针
多态(Polymorphism)是面向对象编程中的一个重要概念,它允许不同类的对象对同一消息做出不同的响应。多态性使得可以使用统一的接口来操作不同类的对象,从而提高了代码的灵活性和可扩展性。 一、多态的表现形式 1. 静态多态&…...

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

基于大数据可视化的化妆品推荐及数据分析系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...

Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化时…...
数学基础 -- 微积分最优化之一个最简单的例子
微积分中的一个最简单的最优化例子 问题描述 假设你有一条长度为 10 米的栅栏,你需要围成一个矩形的鸡舍,使得围成的面积最大。求这个矩形的长和宽应是多少,以使得面积最大。 步骤 设定变量: 设矩形的长为 x x x 米࿰…...

kubernetes K8S 结合 Istio 实现流量治理
目录 1.Istio介绍? 1.1 Istio是什么? 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学习笔记整理(网课+网站持续更新)
本篇是根据学习网站和网课结合自己做的学习笔记,后续会一边学习一边补齐和整理笔记 非常推荐白月黑羽的学习网站: 白月黑羽 (byhy.net) https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱…...

1.随机事件与概率
第一章 随机时间与概率 1. 随机事件及其运算 1.1 随机现象 确定性现象:只有一个结果的现象 确定性现象:结果不止一个,且哪一个结果出现,人们事先并不知道 1.2 样本空间 样本空间:随机现象的一切可能基本…...
Redis结合Caffeine实现二级缓存:提高应用程序性能
本文将详细介绍如何使用CacheFrontend和Caffeine来实现二级缓存。 1. 简介 CacheFrontend: 是一种用于缓存的前端组件或服务。通俗的讲:该接口可以实现本地缓存与redis自动同步,如果本地缓存(JVM级)有数据,则直接从本…...
【LLM】Ollama:本地大模型 WebAPI 调用
Ollama 快速部署 安装 Docker:从 Docker 官网 下载并安装。 部署 Ollama: 使用以下命令进行部署: docker run -d -p 11434:11434 --name ollama --restart always ollama/ollama:latest进入容器并下载 qwen2.5:0.5b 模型: 进入 O…...
SpringBoot集成阿里easyexcel(二)Excel监听以及常用工具类
EasyExcel中非常重要的AnalysisEventListener类使用,继承该类并重写invoke、doAfterAllAnalysed,必要时重写onException方法。 Listener 中方法的执行顺序 首先先执行 invokeHeadMap() 读取表头,每一行都读完后,执行 invoke()方法…...
使用ELK Stack进行日志管理和分析:从入门到精通
在现代IT运维中,日志管理和分析是确保系统稳定性和性能的关键环节。ELK Stack(Elasticsearch, Logstash, Kibana)是一个强大的开源工具集,广泛用于日志收集、存储、分析和可视化。本文将详细介绍如何使用ELK Stack进行日志管理和分…...

前端框架对比与选择
🤖 作者简介:水煮白菜王 ,一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧✍。 感谢支持💕💕💕 目…...

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

【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7396959.html?templateId1718516 问题现象 yashandb执行带oracle dblink表的sql性能差: 同样的语句,同样的数据,oracle通过dblink访问远端oracle执行…...

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

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

[Redis][主从复制][上]详细讲解
目录 0.前言1.配置1.建立复制2.断开复制3.安全性4.只读5.传输延迟 2.拓扑1.一主一从结构2.一主多从结构2.树形主从结构 0.前言 说明:该章节相关操作不需要记忆,理解流程和原理即可,用的时候能自主查到即可主从复制? 分布式系统中…...
【算法】leetcode热题100 146.LRU缓存. container/list用法
https://leetcode.cn/problems/lru-cache/description/?envTypestudy-plan-v2&envIdtop-100-liked 实现语言:go lang LRU 最近最少未使用,是一种淘汰策略,当缓存空间不够使用的时候,淘汰一个最久没有访问的存储单元。目前…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...

高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑 在电子商务领域,转化率与网站性能是决定商业成败的核心指标。今天,我们将深入解析不同类型电商平台的转化率基准,探讨页面加载速度对用户行为的…...