centos 7部署nacos 2.4.1版本单点方式

news2024/9/29 1:52:41

文章目录

  • Nacos:微服务架构中的服务发现与配置管理利器
    • 官方网址
    • 引言
    • Nacos简介
    • Nacos的核心功能
      • 1. 服务发现和服务健康监测
      • 2. 动态配置服务
      • 3. 服务及其元数据管理
    • Nacos的工作原理
    • Nacos的集群部署与高可用性
    • Nacos的使用场景
    • 如何使用Nacos
      • 1. 安装Nacos
      • 2. 服务注册与发现
      • 3. 配置管理
    • 总结
  • 部署工作正式开始
    • 环境
    • yum安装java环境
      • 选取版本安装
      • 配置环境变量
    • docker安装mysql
      • docker安装
      • mysql安装
    • 安装nacos
      • 下载nacos资源包
      • 数据库初始化
      • 修改配置文件
      • 启动
      • 测试


部署在最下边,别急,容我介绍下nacos,或者可以直接到最下边

Nacos:微服务架构中的服务发现与配置管理利器

官方网址

nacos官网

Nacos架构及原理之架构设计流程图

引言

随着微服务架构的普及,服务发现与配置管理成为了构建云原生应用不可或缺的一部分。Nacos(Dynamic Naming and Configuration Service)作为阿里巴巴开源的一款中间件,以其强大的服务发现和配置管理能力,为微服务架构提供了全面的解决方案。本文将详细介绍Nacos的功能、原理、使用场景以及如何在项目中集成Nacos。

Nacos简介

Nacos是Dynamic Naming and Configuration Service的首字母简称,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos提供了简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。作为阿里开放的一款中间件,Nacos主要提供持久化节点注册、非持久化节点注册和配置管理三大功能。

Nacos的核心功能

1. 服务发现和服务健康监测

Nacos作为服务注册中心,可以帮助服务实例注册和发现,实现微服务架构中的服务注册与发现功能。它支持多种注册方式,如HTTP、DNS等,能够动态地管理服务实例信息,实现服务之间的通信。同时,Nacos还提供了健康检查功能,能够及时发现不健康的服务实例并进行处理,确保服务的可靠性和稳定性。

2. 动态配置服务

Nacos作为配置中心,可以集中管理系统各个服务的配置信息。它支持动态配置更新、配置监听、配置推送等特性,可以实时地更新配置信息,而不需要重启服务。这一功能极大地提高了系统的灵活性和可维护性。

3. 服务及其元数据管理

除了基本的服务注册信息外,Nacos还支持服务实例的元数据管理,例如版本信息、扩展信息等。这些元数据可以帮助客户端更精确地选择服务实例。

Nacos的工作原理

Nacos的工作原理主要涉及Nacos Server和Nacos Client两个主要部分。

  • Nacos Server是服务注册与发现的管理中心,采用Java编写,主要提供注册发现服务和配置服务
  • Nacos Client则是在每个微服务中嵌入的,负责实际的服务注册、查询和订阅等操作

当一个服务启动时,它会通过Nacos Client向Nacos Server注册自己的信息,包括IP地址、端口号和元数据等。同时,这个服务也会定期向Nacos Server发送心跳请求,以保持自己的注册信息和服务状态是最新的。Nacos Server接收到心跳请求后,会更新该实例的状态为正常,并记录下最后一次收到心跳的时间。如果在一段时间内没有收到某个实例的心跳请求,则认为该实例已经宕机或者不可用,服务端会将该实例从服务列表中移除。

Nacos的集群部署与高可用性

Nacos支持集群部署,通过增加节点的方式来提高系统的可用性。在集群部署中,Nacos采用了Raft算法来进行领导选举和数据一致性管理。Raft算法通过“一切以领导者为准”的方式,实现了一系列值共识和各节点日志一致。

在Nacos集群中,节点角色主要分为LeaderCandidateFollower三种

  • Leader节点负责向其他节点下达指令,维护整个集群的状态和数据一致性
  • Candidate节点则参与竞选Leader的角色
  • Follower节点则主要用于接收来自Leader或Candidate的请求并进行处理。

Nacos的使用场景

Nacos广泛应用于微服务架构中,特别是在需要服务发现和配置管理的场景中。例如,在Spring Cloud Alibaba生态体系中,Nacos可以无缝接入,提供动态服务发现和配置管理服务。此外,Nacos还支持Kubernetes、ServiceMesh等生态体系,为云原生应用提供了全面的解决方案。

如何使用Nacos

1. 安装Nacos

首先需要在服务器上安装Nacos。可以通过官方提供的可执行文件或者Docker容器进行部署和启动。

2. 服务注册与发现

在微服务项目中,通过引入Nacos的客户端依赖,并在配置文件中配置Nacos服务器的地址,即可实现服务的注册与发现。服务启动时,会自动向Nacos注册自己的信息;服务消费者则可以通过Nacos查询服务实例列表,并进行远程调用。

3. 配置管理

将配置文件上传到Nacos中,应用程序在启动时从Nacos获取配置,并将其应用到应用程序中。同时,应用程序可以通过Nacos提供的API进行配置监听,以便在配置发生变化时实时接收到通知并更新配置。

总结

Nacos作为微服务架构中的服务发现和配置管理利器,以其强大的功能和简单易用的特性集,为开发者提供了全面的解决方案。通过Nacos,开发者可以轻松地实现服务的注册与发现、配置的动态更新和管理,从而构建健壮的分布式系统。无论是对于初创企业还是大型企业,Nacos都是一个值得推荐的中间件产品。

部署工作正式开始

环境

环境内核版本
10.255.101.102CentOS Linux release 7.9.2009 (Core)
软件版本
java1.8.0_412
nacos2.4.1
mysql5.7.34

yum安装java环境

选取版本安装

搜索java的jdk版本
yum list | grep java-1.8.0-openjdk
# 安装
yum install java-1.8.0-openjdk-devel.x86_64 -y

在这里插入图片描述

配置环境变量

在/etc/profile中配置java环境,增加到最下边即可
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
加载变量
source /etc/profile
查看版本
java -version

在这里插入图片描述

docker安装mysql

docker安装

Centos安装docker

mysql安装

docker安装mysql

安装nacos

下载nacos资源包

nacos下载网址
下载完成后,传输到服务器上
在这里插入图片描述

unzip nacos-server-2.4.1.zip

解压后得到nacos目录
在这里插入图片描述

数据库初始化

登陆数据库创建库

CREATE DATABASE nacos_config CHARACTER SET utf8 COLLATE utf8_general_ci;
source /data/nacos/conf/mysql-schema.sql;

在这里插入图片描述

修改配置文件

[root@test conf]# pwd
/data/nacos/conf
[root@test conf]# grep -Ev '^#|^$' application.properties
## 过滤掉了#行和空行,然后备份现有的配置文件,复制写入到新的里边
[root@test conf]# mv application.properties application.properties-bak
[root@test conf]# vim application.properties

application.properties

db.num=1
db.url.0=jdbc:mysql://10.255.101.102:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=nacos123456
server.servlet.contextPath=/nacos
server.error.include-message=ALWAYS
server.port=8848
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
nacos.config.push.maxRetryTime=50
server.tomcat.mbeanregistry.enabled=true
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.rotate=true
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=file:.
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
nacos.core.auth.plugin.nacos.token.secret.key=
nacos.istio.mcp.server.enabled=false

配置文件详解

# Nacos 数据库配置  
db.num=1              # 数据库实例数量  
db.url.0=jdbc:mysql://10.255.101.102:3306/nacos_config?characterEncoding=utf8&... # 数据库连接URL,包含数据库地址、端口、数据库名及连接参数  
db.user.0=root         # 数据库用户名  
db.password.0=nacos123456 # 数据库密码  
  
# Nacos 服务端配置  
server.servlet.contextPath=/nacos # 服务端上下文路径  
server.error.include-message=ALWAYS # 错误信息是否包含异常消息  
server.port=8848          # 服务端端口  
  
# 数据库连接池配置  
db.pool.config.connectionTimeout=30000 # 连接超时时间(毫秒)  
db.pool.config.validationTimeout=10000 # 验证超时时间(毫秒)  
db.pool.config.maximumPoolSize=20      # 最大活跃连接数  
db.pool.config.minimumIdle=2           # 最小空闲连接数  
  
# Nacos 配置推送重试配置  
nacos.config.push.maxRetryTime=50      # 配置推送最大重试次数  
  
# Tomcat 配置  
server.tomcat.mbeanregistry.enabled=true  # Tomcat MBean 注册表是否启用  
management.metrics.export.elastic.enabled=false # 是否导出Elasticsearch指标  
management.metrics.export.influx.enabled=false  # 是否导出InfluxDB指标  
server.tomcat.accesslog.enabled=true            # 是否启用访问日志  
server.tomcat.accesslog.rotate=true             # 是否启用访问日志轮转  
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH # 访问日志文件日期格式  
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i # 访问日志格式  
server.tomcat.basedir=file:.                     # Tomcat 基础目录  
  
# Nacos 安全配置  
nacos.security.ignore.urls=/,/error,...          # 无需安全验证的URL路径  
nacos.core.auth.system.type=nacos                # 认证系统类型  
nacos.core.auth.enabled=true                     # 是否启用认证  
nacos.core.auth.caching.enabled=true             # 是否启用认证缓存  
nacos.core.auth.enable.userAgentAuthWhite=false   # 是否启用用户代理白名单认证  
nacos.core.auth.server.identity.key=             # 服务端身份密钥  
nacos.core.auth.server.identity.value=           # 服务端身份值  
nacos.core.auth.plugin.nacos.token.cache.enable=false # 是否启用Nacos插件的Token缓存  
nacos.core.auth.plugin.nacos.token.expire.seconds=18000 # Token过期时间(秒)  
nacos.core.auth.plugin.nacos.token.secret.key=    # Token密钥  
  
# Istio MCP 服务器配置  
nacos.istio.mcp.server.enabled=false             # 是否启用Istio MCP服务器

启动

/data/nacos/bin 目录下
#停止
sh shutdown.sh
#启动nacos
sh startup.sh -m standalone
##### 配置系统系统
/etc/systemd/system/nacos.service
[Unit]
Description=Nacos Service
After=network.target

[Service]
Type=forking
ExecStart=/bin/sh -c "/data/nacos/bin/startup.sh -m standalone"
ExecStop=/bin/sh -c "/data/nacos/bin/shutdown.sh"
ExecReload=/bin/sh -c "/data/nacos/bin/shutdown.sh && /data/nacos/bin/startup.sh -m standalone"
PrivateTmp=true


[Install]
WantedBy=multi-user.target
# 添加开机启动,并运行起来
systemctl enable nacos --now
# 查看状态
systemctl status nacos

在这里插入图片描述

测试

IP:port/nacos/
http://10.255.101.102:8848/nacos
在这里插入图片描述
很奇怪为什么没有登陆界面吧????
2.2.2版本之前的Nacos默认控制台,无论服务端是否开启鉴权,都会存在一个登录页;这导致很多用户被误导认为Nacos默认是存在鉴权的。在社区安全工程师的建议下,Nacos自2.2.2版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问,同时在控制台中给予提示,提醒用户当前集群未开启鉴权。
鉴权官方文档

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

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

相关文章

Linux---FTP文件服务器搭建及实战

一、FTP简介 FTP: File Transfer Protocol文件传输协议 FTP是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者…

紫金大数据平台架构之路(一)----大数据任务开发和调度平台架构设计

一、总体设计 初来公司时,公司还没有大数据,我是作为大数据架构师招入的,结合公司的线上和线下业务,制定了如下的大数据架构路线图。 二、大数据任务开发和调度平台架构设计 在设计完总体架构后,并且搭建完hadoop/ya…

ArkUI-布局(四)

ArkUI-布局 轮播部分属性及方法循环播放及自动轮播导航点样式页面切换方式轮播方向每页显示多个子页面自定义切换动画 选项卡使用方式部分属性及方法顶部导航和底部导航侧边导航限制导航栏的滑动固定导航栏和滚动导航栏自定义导航栏切换至指定页签 轮播 Swiper组件提供滑动轮播…

大语言模型从零开始训练全面指南:预训练、Tokenizer训练、指令微调、奖励模型、强化学习

在这篇文章中,我们将尽可能详细地梳理一个完整的 LLM 训练流程。包括模型预训练(Pretrain)、Tokenizer 训练、指令微调(Instruction Tuning)、奖励模型(Reward Model)和强化学习(RLH…

SprinBoot+Vue线上教学平台的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

基于yolov8的雾天行人车辆检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的雾天行人车辆检测系统是一种高效且先进的解决方案,专门用于在恶劣的雾天条件下检测和识别道路上的行人和车辆。YOLOv8作为最新的YOLO系列模型,自2023年推出以来,在目标检测领域展现了卓越的性能。该系统利用YOLOv8…

Java 入门指南:Java NIO —— Buffer(缓冲区)

NIO 的引入 在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一…

Java-数据结构-时间和空间复杂度 (ಥ_ಥ)

目录: 一、算法效率: 1、我们如何衡量一个算法的好与坏: 2、算法效率: 二、时间复杂度: 1、概念: 2、大O的渐进表示法: 3、推导大O渐进方法: 4、时间复杂度的举例&#xff1…

【推荐】Linux 推荐软件

【推荐】Linux 推荐软件 星火应用商店 Spark-Store: 专注Linux应用适配的应用商店 专注Linux应用适配的应用商店 微信 基于wine工具;wine中的windows涉及很多DLL需要配置,可以借助winetricks、Q4wine,另外还需要一个windwos系统,用来复制其中…

私人诊所|基于SprinBoot+vue的私人诊所管理系统(源码+数据库+文档)

私人诊所管理系统 基于SprinBootvue的私人诊所管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 患者功能实现 医生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&am…

el-table自定义合并表格

前沿 : 为了更好的展示数据,很多地方用到表格合并,但是element文档里面没有好的合并方法,只能自定义合并表格来解决需求。于是乎,写了以下方法,方面以后拿来即用。 自定义合并表格 表格数据 tableData: [{i…

图片怎么裁剪中间部分?这几种裁剪方法每个人都学的会!

图片怎么裁剪中间部分?在数字生活的广阔图景中,图片裁剪作为一项基本技能,其重要性日益凸显,这一操作不仅是对图像边界的精准界定,更是通往个性化表达与标准化应用的桥梁。从日常社交媒体的瞬间分享,到专业…

多模态工业异常检测算法整理

本文统计了MVTec 3D-AD上的多个多模态异常检测算法,仅对比其I-AUROC指标。数据的来源为多模态工业异常检测Benchmark | Ziuch の Blog,这位博主经常分享很多工业异常检测的优秀博文,质量很高。 MVTec 3D-AD相关的异常检测算法包含3大类&#…

智慧公厕系统,重塑公共卫生间新生态@卓振思众

在快节奏的现代生活中,公共卫生间作为城市基础设施的重要组成部分,其管理效率和使用体验直接关系到市民的生活质量。近年来,随着科技的飞速发展,智慧卫生间系统应运而生,以其智能化、便捷化的特点,正逐步改…

低代码用户中心的构建与应用

引言 在现代软件开发中,低代码平台因其高效、灵活、用户友好的特性而逐渐受到青睐。特别是在用户中心的构建方面,低代码平台能够显著提升开发效率,降低开发成本。本文将探讨如何利用低代码平台构建一个高效的用户中心,并分享一些…

树形dp + 位运算 + 差分,MC0362 异或

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 码题集OJ-异或 (matiji.net) 二、解题报告 1、思路分析 考虑每个结点u&a…

工作 6 年,@Transactional 注解用的一塌糊涂

接手新项目一言难尽,别的不说单单就一个 Transactional 注解用的一塌糊涂,五花八门的用法,很大部分还失效无法回滚。 有意识的在涉及事务相关方法上加Transactional注解,是个好习惯。不过,很多同学只是下意识地添加这个…

Redis的ZSet底层数据结构

一、ZSet底层数据结构 typedef struct zset{// 跳表zskiplist *zsl;// 字典dict *dic; }zset类型的底层数据结构是由压缩列表或跳表、**字典(哈希表)**实现的。 如果zset中元素个数小于128个,并且每个元素的值小于64字节时,redi…

Prompt提示词如何写才能发挥大语言模型LLM的最大潜力

提示词 提示工程学是一门相对较新的学科,用于开发和优化提示,以便高效地利用语言模型(LM)来进行各种应用和研究主题。提示工程技能有助于更好地了解大型语言模型(LLM)的能力和限制。研究人员使用提示工程来…

错误处理与日志记录:在自动化脚本中实施的有效策略

目录 引言 错误处理机制 1. 异常捕获与处理 2. finally子句 3. 异常信息的打印输出 日志记录 1. 使用logging模块 基本配置 日志级别 日志回滚 2. 自定义日志格式 3. 多处理器和过滤器 实践案例 自动化测试中的错误处理与日志记录 脚本示例 结论 在自动化测试领…