如何在Ubuntu的Linux系统上搭建nacos集群
- 官方给出的集群部署架构图

- 集群部署说明 (nacos.io)
- 3个或3个以上nacos节点才能构成集群
- 当前示例中包含3个nacos节点,同时一个负载均衡器代理3个nacos,本示例中负载均衡器可使用的是nginx
- 准备并安装好正常运行的nginx,本示例略
- 准备并安装好正常运行的MySQL数据库,本示例略
- 3个nacos节点地址信息
-
节点 ip port nacos1 192.168.xxx.xxx 8841 nacos2 192.168.xxx.xxx 18841 nacos3 192.168.xxx.xxx 28841 - 根据自己的实际情况设置,端口建议不要设置为连续的,防止nacos启动时有可能存在端口冲突,最好不同nacos的节点的端口相差有一定的步数,步数大于1002以上
-
- 开始搭建nacos集群
- 下载nacos安装包
- https://github.com/alibaba/nacos/releases

- 本示例下载的压缩包为:nacos-server-2.3.0.tar.gz
- 通过ssh远程工具将压缩包上传到Linux服务器中,然后再解压
-
tar -zxvf nacos-server-2.3.0.tar.gz 
-
- 初始化nacos的数据库脚本
- 在解压的文件中的conf文件夹中找到mysql-schema.sql,这里是nacos建立数据库的相关SQL数据,使用数据库管理工具新建一个数据库名称为nacos的数据库,并将当前mysql-schema.sql的sql文件在nacos数据库中执行,结果如下所示

- 回到Linux服务中,进入nacos的conf目录,将配置文件cluster.conf.example,重命名为cluster.conf

-
mv cluster.conf.example cluster.conf 
- 将配置文件cluster.conf修改为以下信息,其中ip地址修改为自己的服务器ip地址,端口设定为自己设定的nacos的服务端口
-
# # Copyright 1999-2021 Alibaba Group Holding Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ##it is ip #example 192.168.xxx.xxx:8841 192.168.xxx.xxx:18841 192.168.xxx.xxx:28841
-
- 修改配置文件application.properties,添加数据库配置、开启鉴权等相关信息

-
### 是否开启鉴权功能 ### If turn on auth system: nacos.core.auth.enabled=true### 配置自定义身份识别的key(不可为空)和value(不可为空) ### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false. ### The two properties is the white list for auth and used by identity the request from other server. nacos.core.auth.server.identity.key=exampleNacos nacos.core.auth.server.identity.value=exampleNacos### 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,使用默认值有安全风险 ### 自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。 Base64 在线编码解码: https://base64.us/ ### The default token (Base64 String): nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789# mysql数据库配置信息 ### If use MySQL as datasource: ### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced. # spring.datasource.platform=mysql # 初始化使用的数据库为MySQL spring.sql.init.platform=mysql# 数据库连接数量 ### Count of DB: db.num=1### Connect URL of DB: # 连接mysql的url db.url.0=jdbc:mysql://192.168.xxx.xxx:3333/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC # 连接mysql的用户 db.user.0=root # 连接mysql的密码 db.password.0=123456
- 将解压之后的nacos的文件复制3份,分别为nacos1、nacos2、nacos3
-
cp -rf nacos ./nacos1 cp -rf nacos ./nacos2 cp -rf nacos ./nacos3 
-
- 分别修改nacos的application.properties,将里面的server.port修改为指定的端口
- nacos1
-
### Default web server port: server.port=8841
-
- nacos2
-
### Default web server port: server.port=18841
-
- nacos3
-
### Default web server port: server.port=28841
-

- nacos1
- 分别给nacos1、nacos2、nacos3配置jdk环境,修改startup.sh文件

-
# 配置JDK环境,要求JDK 1.8+ export JAVA_HOME=/usr/local/project/openjdk-8 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 
- 然后分别启动nacos1、nacos2、nacos3的节点,启动脚本文件为startup.sh
-
/usr/local/project/nacos-group/nacos1/bin/startup.sh /usr/local/project/nacos-group/nacos2/bin/startup.sh /usr/local/project/nacos-group/nacos3/bin/startup.sh
-
- 访问地址http://192.168.xxx.xxx:8841/nacos/,输入默认账号密码:nacos/nacos登录可到达nacos控制台,三个节点状态都是up则说明启动成功

- 同时如果都启动成功,所有节点的端口的nacos的控制台都可以正常访问
- 下载nacos安装包
- 配置nginx的反向代理
- 默认端口占用情况
-
端口 与主端口的偏移量 描述 8848 0 主端口,客户端、控制台及OpenAPI所使用的HTTP端口 9848 1000 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 9849 1001 服务端gRPC请求服务端端口,用于服务间同步等 7848 -1000 Jraft请求服务端端口,用于处理服务端间的Raft相关请求 - 使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。 9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。
-
- 根据主端口偏移量,可以计算出客户端gRPC请求服务端端口:
- 8841+1000=9841
- 18841+1000=19841
- 28841+1000=29841
- nginx监听的是80端口,则80+1000=1080
- 找到nginx的配置文件conf/nginx.conf
- 修改conf/nginx.conf的配置文件信息,添加以下配置
- 在http块内添加
-
# upstream指令可以定义一组服务器upstream nacos-cluster {server 192.168.xxx.xxx:8841;server 192.168.xxx.xxx:18841;server 192.168.xxx.xxx:28841;}
-
- 在server块中添加
-
location /nacos {# 反向代理配置,将请求转发到指定的服务proxy_pass http://nacos-cluster;}
-
- 在stream块用于做nacos的TCP转发
-
# stream块用于做nacos的TCP转发 stream {# upstream指令可以定义一组服务器upstream nacos-cluster {server 192.168.xxx.xxx:9841;server 192.168.xxx.xxx:19841;server 192.168.xxx.xxx:29841;}server {# 80+1000=1080listen 1080;proxy_connect_timeout 30s;proxy_timeout 5m;# 反向代理配置,将请求转发到指定的服务proxy_pass nacos-cluster;}}
-


- 在http块内添加
- 启动nginx
-
sudo /usr/local/project/nginx/sbin/nginx - nginx监听的是80端口,所以需要管理员权限启动nginx
- 如果nginx启动报错类似于:nginx: [emerg] unknown directive "stream" in /usr/local/project/nginx/conf/nginx.conf:159,解决方案请参考作者当前博客链接:nginx启动报错nginx: [emerg] unknown directive “stream“ in /usr/local/project/nginx/conf/nginx.conf:159-CSDN博客
-
- 默认端口占用情况
- 浏览器访问nginx监听的端口,访问nacos,当前示例访问地址为http://192.168.xxx.xxx/nacos/

- 显示可以正常访问
- 项目中连接nacos实现服务注册和服务发现
-
server:port: 18080 spring:application:#应用的名称name: nacos-user-servicecloud:nacos:# Nacos Server 启动监听的ip地址和端口server-addr: 192.168.163.100:80discovery:# nacos开启鉴权之后的用户名username: nacos# nacos开启鉴权之后的用户登录密码password: nacos# 配置服务实例的集群名称cluster-name: GD 
-
- 生产环境优化建议
- 实际部署时,我们最好给反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移,nacos的客户端也无需更改配置
- Nacos的各个节点应该部署到多个不同的服务器上,这样可以做到容灾和隔离
相关文章:
如何在Ubuntu的Linux系统上搭建nacos集群
官方给出的集群部署架构图 集群部署说明 (nacos.io)3个或3个以上nacos节点才能构成集群当前示例中包含3个nacos节点,同时一个负载均衡器代理3个nacos,本示例中负载均衡器可使用的是nginx 准备并安装好正常运行的nginx,本示例略准备并安装好正…...
oracle中的PIVOT函数
在Oracle数据库中,PIVOT 是一个强大的功能,可以将行数据转换为列数据。这在报表和数据分析中非常有用。 基本的 PIVOT 语法如下: SELECT * FROM (SELECT <column1>, <column2>, ..., <pivot_column>, <aggregate_func…...
【经验分享】gemini-pro和gemini-pro-vision使用体验
Gemini Gemini已经对开发者开放了Gemini Pro的使用权限,目前对大家都是免费的,每分钟限制60条,至少这比起CloseAI的每个账户5刀限速1min3条要香的多,目前已于第一时间进行了体验 一句话总结,google很大方,但…...
JS冒泡排序
想必大家都多多少少了解过一点排序,让我为大家介绍一下冒泡排序吧! 假设我们现在有一个数组[2,4,3,5,1] 我们来分析一下: 1.一共需要的趟数 我们用外层for循环 5个数据我们一共需要走4躺 长度就…...
面向遥感图像的道路区域提取及优化
一、论文2017 (1)DeepRoadMapper (2)Topology Loss2018 (1)RoadTracer (2)iterative-deep-learning2019 (1)Leveraging Crowdsourced GPS Data for Road Extraction from Aerial Imagery (2)RoadNet (3)RoadTagger (4)Generative Graph Transformer (5)road_…...
mysql中NULL值
mysql中NULL值表示“没有值”,它跟空字符串""是不同的 例如,执行下面两个插入记录的语句: insert into test_table (description) values (null); insert into test_table (description) values ();执行以后,查看表的…...
[c++] 意识需要转变的一个例子,全局变量的构造函数先于main执行
最近还遇到一个例子是关于:从C转C开发需要注意的一个意识问题。本人遇到的这个问题是,带着C的意识来看C的代码,然后根据代码看,有一个全局变量的值在main函数进入之后才会更改,所以百思不得其解,这个变量怎…...
VSCode 配置自动生成头文件
相关文章 VSCode 开发C/C实用插件分享——codegeex VSCode 开发C/C实用插件分享——koroFileHeader VSCode 配置自动生成头文件 一、snippets二、配置步骤三、效果展示 一、snippets 相信大家对C、C都头文件都不陌生,都会发现每个头文件都会包括下面的这些格式&…...
【大数据】Hudi 核心知识点详解(一)
😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 &#x…...
windows上抓包出现大包未分片以及关闭tso方法
wireshark抓包中会有大数据包(未分片包)和ip校验和不对的包,问题根因在目前很多电脑网卡支持TSO和将校验和计算到网卡上,导致抓出数据包未分片 详细文章看: https://www.cnblogs.com/charlieroro/p/11363336.html 目前很多网卡已…...
Leetcode 2454. 下一个更大元素 IV
Leetcode 2454. 下一个更大元素 IV题目 给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数,你必须找到对应元素的 第二大 整数。如果 nums[j] 满足以下条件,那么我们称它为 nums[i] 的 第二大 整数: j >nums[j] > nu…...
浏览器全屏按键同f11效果
模拟键f11 // for IE,这里和fullScreen相同,模拟按下F11键退出全屏 let wscript new ActiveXObject(WScript.Shell) if (wscript ! null) {wscript.SendKeys({F11}) }同f11键效果生效全屏函数 //判断是否是全屏状态 var isFull Math.abs(window.scree…...
CentOS 7.9 安装 k8s(详细教程)
🍿安装步骤 🍚安装前准备事项🍚安装docker🍚删除docker🍚安装yum工具🍚设置docker镜像源🍚安装指定版本docker🍚设置开启自启🍚阿里云镜像加速 🍚准备环境&am…...
区块链的可拓展性研究【05】闪电网络
1.闪电网络:闪电网络是一种基于比特币区块链的 Layer2 扩容方案,它通过建立一个双向支付通道网络,实现了快速、低成本的小额支付。闪电网络的交易速度非常快,可以达到每秒数万笔交易,而且交易费用非常低,几…...
如何部署Portainer容器管理工具+cpolar内网穿透实现公网访问管理界面
文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 本文主要介绍如何本地安装Portainer并结合内网穿透工具实现任意浏览器远程访问管理界面。Portainer 是一个轻量级…...
Linux——Samba文件共享服务配置
SMB/CIFS协议 SMB协议(Server Message Block 又称Common Internet File System(CIFS)) 是由微软开发的网络传输协议,用来实现网络共享文件系统、打印机等资源。 SMB协议有多个版本和不同的兼容性。 SMBv1/CIFS: 也称为SMB1或CIFS。最初由Micr…...
自动驾驶右向辅助功能规范
目 录 Contents 目录 1. 介绍 Introduction. 8 1.1 此文档的范围和目的 Scope and Purpose of This Document 8 1.2 参考文档References. 9 1.3 文档的维护 Maintenance of the Document 10 1.4 缩略词Abbreviations. 10 1.5 文档概述Document Overview.. 11 1.6 功能…...
ASF-YOLO开源 | SSFF融合+TPE编码+CPAM注意力,精度提升!
目录 摘要 1 Introduction 2 Related work 2.1 Cell instance segmentation 2.2 Improved YOLO for instance segmentation 3 The proposed ASF-YOLO model 3.1 Overall architecture 3.2 Scale sequence feature fusion module 3.3 Triple feature encoding module …...
Mac 如何删除文件及文件夹?可以尝试使用终端进行删除
MacOS 是 Mac 电脑采用的操作系统,你知道 Mac 如何删除文件吗?除了直接将文件或者文件夹拖入废纸篓之外,我们还可以采用终端命令的办法去删除文件,本文为大家总结了 Mac 删除文件方法。 为何使用命令行删除文件 在使用 Mac 电脑…...
最新Redis7持久化(权威出版)
首先我们要知道什么是持久化:持久化是指将数据保存到磁盘上,以确保在Redis服务器重启时数据不会丢失。 Redis支持两种主要的持久化方式:RDB持久化和AOF持久化 下面让我依次给你介绍一下: RDB持久化 作用 这是将Redis数据保存…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

