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

news2024/11/27 8:47:04

上篇文写到了docker-compose的Nacos集群(单机多节点)环境搭建与使用 就有小伙伴私聊我:求多机器搭建的教程~
谁让我如此宠粉呢,这不 它来了。老规矩 此方案已经过生产环境验证,可放心大胆使用~
安装docker 与配置 docker-compose 步骤略过~

1,每台节点机器创建docker-compose.yml文件

关注其中配置:NACOS_SERVER_IP、NACOS_SERVERS 集群中所有的 Nacos 节点地址,使用内网 IP 和端口需要在不同的服务器上进行修改为自己的内网ip地址,其他的读取数据库的配置就不多说了,毕竟集群配置不适合小白阅读~

# Docker Compose 文件版本
version: '3'  

services:
  # Nacos 实例的配置
  nacos1:
    # 使用 Nacos 官方镜像版本 2.2.3
    image: nacos/nacos-server:v2.2.3
    # 容器名称为 nacos1,方便识别和管理
    container_name: nacos1
    # 使用宿主机的网络模式,容器直接共享宿主机的网络
    network_mode: host
        
    # 定义容器的环境变量
    environment:
      # 集群模式,Nacos 运行在集群模式下
      - MODE=cluster
      # 使用主机名进行节点间通信,推荐在集群中使用
      - PREFER_HOST_MODE=hostname
      # 集群中所有的 Nacos 节点地址,使用内网 IP 和端口
      - NACOS_SERVERS=192.168.3.49:8848 192.168.3.150:8848 192.168.3.77:8848
      # 当前 Nacos 实例的 IP 地址,用于注册服务时的标识
      - NACOS_SERVER_IP=192.168.3.49
      # 数据源类型为 MySQL,Nacos 配置需要从 MySQL 数据库中读取和存储数据
      - SPRING_DATASOURCE_PLATFORM=mysql
      # MySQL 数据库的主机 IP
      - MYSQL_SERVICE_HOST=192.168.3.150
      # MySQL 数据库的名称
      - MYSQL_SERVICE_DB_NAME=zeusight-zhjf-nacos
      # MySQL 数据库的端口
      - MYSQL_SERVICE_PORT=3306
      # MySQL 数据库连接的用户名
      - MYSQL_SERVICE_USER=root
      # MySQL 数据库连接的密码
      - MYSQL_SERVICE_PASSWORD=123456
      # MySQL 连接参数,配置字符集、连接超时等
      - MYSQL_SERVICE_DB_PARAM=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
      # JVM 参数,调整 Nacos 容器运行时的内存分配
      - JAVA_OPTS=-Xms256m -Xmx256m -Xmn128m

    # 挂载目录,用于持久化配置文件、日志和数据
    volumes:
      # 挂载 Nacos 的应用配置文件,定义 Nacos 的基础配置
      - ./nacos/config/application.properties:/home/nacos/conf/application.properties
      # 挂载集群配置文件,定义各个节点的集群关系
      - ./nacos/config/cluster.conf:/home/nacos/conf/cluster.conf
      # 挂载日志目录,保存 Nacos 的日志
      - ./nacos/logs/nacos:/home/nacos/logs
      # 挂载数据目录,防止容器重启后数据丢失
      - ./nacos/data/nacos:/home/nacos/data
    
    # 宿主机端口和容器端口的映射,允许外部访问 Nacos
    ports:
      # 将 Nacos 容器的 8848 端口映射到宿主机的 8848 端口
      - "8848:8848"
      # 将 Nacos 容器的 8848 端口映射到宿主机的 7848 端口,用于备用访问
      - "7848:8848"
      # 将 Nacos 容器的 8848 端口映射到宿主机的 9848 端口
      - "9848:8848"
      # 将 Nacos 容器的 8848 端口映射到宿主机的 9849 端口
      - "9849:8848"

注意其配置中出现配置连接mysql,目的用于集群环境nacos数据初始化(此处需根据自己的版本号手动导入初始化sql,初始化sql官网下载地址:链接: 点击直达

2,每台节点创建宿主机文件用于挂载

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

3,每台节点拷贝容器配置文件到宿主机(下方是拷贝的2.2.3版本 并完善了认证配置)

application.properties 内容

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=${MYSQL_SERVICE_USER}
db.password.0=${MYSQL_SERVICE_PASSWORD}
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:min 32 lenth
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:xBMi93TaTWQFthdRHdki8CaeSx08Yjkmc3TfmGBM877AtNZGjhdjHdT1cBws74QF}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:nacos}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:nacos}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

以及cluster.conf配置内容(此处注意,重启会自动写入集群配置,如果出现节点数量对不上,则检查docker-compose.yml配置,不然spring boot会连接不上)

cat nacos/config/cluster.conf 
#2024-09-20T11:47:22.165
192.168.3.150:8848
192.168.3.49:8848
192.168.3.77:8848

启动成功截图
在这里插入图片描述

页面显示三个节点则为正常,若多出不同的节点,则异常(虽然nacos正常运行,但是无法使用config配置中心
在这里插入图片描述

访问nacos页面 并添加一个配置(link-nacos-dev.yml 仅用于测试配置中心是否连接生效,其内容只配置了端口号为9001
在这里插入图片描述

4,spring boot整合nacos集群

pom依赖

<!-- Spring Cloud Alibaba Nacos Config 配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

<!-- Spring Cloud Alibaba Nacos Discovery 注册中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

bootstrap.yml配置内容(注意此处如果使用application.yml就会一直连接出错,因为bootstrap.yml加载在application.yml之前,nacos内部默认使用bootstrap.yml进行读取配置内容)

spring:
  profiles:
    active: dev
  application:
    name: link-nacos  # 应用名称  cloud:
    nacos:
      # 注册中心
      config:
        server-addr: 192.168.3.49:8848,192.168.3.77:8848,192.168.3.150:8848
        username: nacos
        password: nacos
        file-extension: yml
        refresh-enabled: true    
      #配置中心  
      discovery:
        server-addr: 192.168.3.49:8848,192.168.3.77:8848,192.168.3.150:8848
        username: nacos
        password: nacos
        enabled: true

项目启动截图
在这里插入图片描述
至此,单机多节点nacos搭建完成!

一个人能否快乐,以及快乐的程度,是由自己对满足感的需求大小决定的。如果想变得快乐,就要提高自己的满足感,凡事都要往好的方面想,知足才能常乐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2207021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android设置状态栏隐藏、固定颜色

设置隐藏效果&#xff1a; <?xml version"1.0" encoding"utf-8"?> <resources><style name"Theme.XiaoShuang" parent"Theme.AppCompat.Light.NoActionBar"><!--设置沉浸式通知栏--><item name"an…

机器学习第六十周周报 NLA-GNN

week 60 NLA-GNN 摘要 本周阅读了题为NLA-GNN: Non-local information aggregated graph neural network for heterogeneous graph embedding的论文。该文提出了一种新的框架——非局部信息聚合图神经网络(NLA-GNN)&#xff0c;旨在更有效地探索异构图。该框架结合了本地和非…

Iceberg 基本操作和快速入门二-Spark DDL操作

Iceberg 基本操作和快速入门一-CSDN博客 启动spark会话 docker exec -it spark-iceberg spark-sql 创建表 CREATE TABLE prod.db.sample ( id bigint NOT NULL COMMENT unique id, data string) USING iceberg; 创建分区表 CREATE TABLE prod.db.sample_par ( id bigint, …

windows server 2019中安装.net framework 3.5功能出错

转自金蝶云社区|财务金融企业信息化|IT精英人脉圈子-金蝶云社区官网 [故障现象] Windows server 2019系统安装net framework3.5时默认情况下会出现报错,提示错误:error 0x800F0954。 问题说明: 根据网上资料尝试了几种方式都不行: (1)离线下载net framework3.5进行安装(不…

【测试用例设计】一个登录界面的测试用例设计

文章目录 1. 登录页面的测试用例设计 1. 登录页面的测试用例设计

【CSS in Depth 2 精译_047】7.2 CSS 响应式设计中的媒体查询原则(上):深入理解媒体查询的类型

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 【第七章 响应式设计】&#xff08;概述&#xff09; 7.1 移动端优先设计原则&#xff08;上篇&#xff09; 7.1.1 创建移动端菜单&#xff08;下篇&#xff09;7.1.2 给视口添加 meta 标签&#xf…

3D渲图软件推荐:打造高质量渲染效果

在现代设计领域&#xff0c;3D渲图已经成为展示设计方案和产品外观的重要手段。无论是建筑设计、产品设计还是影视动画&#xff0c;都需要借助专业的3D渲染图软件来实现逼真的视觉效果。 本文将为您介绍几款备受好评的3D渲染图软件&#xff0c;帮助您在项目中选择合适的工具。…

每日学学Java开发规范,集合处理(附阿里巴巴Java开发手册(终极版))

前言 每次去不同的公司&#xff0c;码不同的代码&#xff0c;适应不同的规范&#xff0c;经常被老大教育规范问题&#xff0c;我都有点走火入魔的感觉&#xff0c;还是要去看看阿里巴巴Java开发规范&#xff0c;从中熟悉一下&#xff0c;纠正自己&#xff0c;码出高效&#xf…

KubeSphere v4 开源并发布全新可插拔架构 LuBan

2024 年 10 月 10 日&#xff0c;KubeSphere 开源社区激动地向大家宣布&#xff0c;KubeSphere v4&#xff08;开源版&#xff09;已正式发布&#xff0c;同时发布全新可插拔架构 KubeSphere LuBan。 相较于 KubeSphere 之前所有的版本&#xff0c;KubeSphere v4 可以说是有了…

springboot将logback替换成log4j2

一 为何要替换成log4j2 1.1 log4j2的优点 log4j2使用了两种方式记录日志&#xff1a;AsyncAppender和AsyncLogger。 1.AsyncAppender使用队列异步记录日志&#xff0c;但是一旦队列已满&#xff0c;appender线程需要等待。2.AsyncLogger是采用Disruptor&#xff0c;通过环形…

携程差旅智核系统 | OPENAIGC开发者大赛高校组优秀作品

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

【算法】DFS系列之 记忆化搜索

【ps】本篇有 5 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;斐波那契数 .1- 题目解析 .2- 代码编写 2&#xff09;不同路径 .1- 题目解析 .2- 代码编写 3&#xff09;最长递增子序列 .1- 题目解析 .2- 代码编写 4&#xff09;猜数字大小 II …

Linux云计算 |【第四阶段】RDBMS2-DAY5

主要内容&#xff1a; PXC概述、部署PXC&#xff08;自动故障恢复测试&#xff09;、存储引擎、读锁/写锁、表锁/行锁、常用的存储引擎介绍 一、PXC概述 PXC&#xff08;Percona XtraDB Cluster&#xff0c;简称PXC集群&#xff09;&#xff0c;是基于Galera的MySQL高可用集群…

OpenCV 之 实现基于Lucas-Kanade算法的光流追踪

引言 在计算机视觉中&#xff0c;光流是指物体、场景或摄像机之间的相对运动造成的像素变化。光流估计是计算机视觉中的一个基础课题&#xff0c;广泛应用于许多领域&#xff0c;比如自动驾驶汽车、机器人导航、手势识别等。OpenCV是一个开源的计算机视觉库&#xff0c;提供了…

vue使用gdal-async获取tif文件的缩略图

vue使用gdal-async获取tif文件的缩略图 npm i gdal-asyncgdal-async 在Vue组件中使用gdal-async获取缩略图&#xff1a; <template><div><img v-if"thumbnail" :src"thumbnail" alt"Thumbnail" /></div> </templa…

友思特方案 | FantoVision边缘计算:嵌入式视觉系统如何实现“更快 更高 更强”?

导读 便于集成的嵌入式视觉系统一直以来面临着带宽、内存、算力三个方面的挑战。友思特 FantoVision 边缘计算设备拥有更快的处理速度和更高的带宽选择&#xff0c;其开放式架构有效突破了上述三重阻碍。 嵌入式视觉 嵌入式视觉是传统机器视觉衍生出来的子集&#xff0c;嵌入…

STM32移植RT-Thread实现PWM波的输出

在进行PWM波的学习中&#xff0c;依然是踩了小坑&#xff0c;网络上大部分配置都增加了TIM的配置&#xff0c;貌似是不需要的&#xff0c;当开启了TIM的时钟反而影响了PWM的时钟&#xff0c;暂且归咎于版本不一样&#xff1f;还是STM32F1和STM32F4不一样呢&#xff1f;核心问题…

【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存

【黑马点评优化】之使用CaffeineRedis实现应用级二层缓存 1 缓存雪崩定义及解决方案2 为什么要使用多级缓存3 RedisCaffeine实现应用层二级缓存原理4 利用CaffeineRedis解决Redis突然宕机导致的缓存雪崩问题4.1 pom.xml文件引入相关依赖4.2 本地缓存配置类4.3 修改ShopServiceI…

Blazor Web APP学习记录

目录 1 呈现模式1.1 静态SSR1.2 服务器端交互SSR1.3 客户端交互CSR1.4 自动交互式1.5 注意 2 Blazor Web APP项目3 会话状态 1 呈现模式 参见&#xff1a;https://learn.microsoft.com/zh-cn/aspnet/core/blazor/components/render-modes?viewaspnetcore-8.0 Blazor Web App …

torch-npu的配置

1、简单的调用npu import torch import torch_npu x torch.randn(10000, 10000).npu() y torch.randn(10000, 10000).npu() for _ in range(10000):z x.mm(y) 这个代码的出现就会导致&#xff0c;核心使用99%&#xff0c;显存| 1633 2、安装torch-npu 安装方法看官网介绍…