mac安装nacos几种方式

mac安装nacos几种方式本文档包含两个部分:Nacos2.0.0的部署,以及如何从Nacos1.x平滑升级至Nacos2.0.0。部署部分,适用于直接部署Nacos2.0.0以上版本的用户。升级部分,适用于从Nacos1.X版本平滑升

本文档包含两个部分:Nacos2.0.0的部署,以及如何从Nacos1.x平滑升级至Nacos2.0.0。

部署部分,适用于直接部署Nacos2.0.0以上版本的用户。

升级部分,适用于从Nacos1.X版本平滑升级到Nacos2.0.0版本(以及2.0.0-BETA版本)的用户。Nacos2.0.0-ALPHA版本无法进行平滑升级,请勿参照本文档进行升级。

由于Nacos1.X和Nacos2.0的数据结构发生了变化,为了能够完成平滑升降级,需要将数据进行双写,分别生成Nacos1和Nacos2的数据结构进行存储。因此会对性能有一定影响。当集群升级并稳定运行后,可以关闭双写,关闭双写后将会失去平滑降级的功能。

部署步骤

本部分,适用于直接部署Nacos2.0.0以上版本的用户。

1.预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置。
  3. Maven 3.2.x+;下载 & 配置。

2.下载源码或者安装包

你可以通过源码和发行包两种方式来获取 Nacos。

从 Github 上下载源码方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

下载编译后压缩包方式

您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

  unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

3.启动服务器

Linux/Unix/Mac

单机启动命令(standalone代表着单机模式运行):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

单机启动,使用内置数据库(注:使用内置Derby数据库需要保证~/nacos/data/derby-data文件夹下无残留数据):

bash startup.sh -p embedded

集群启动(使用内嵌数据库):

bash startup.sh -p embedded

集群启动(使用外置数据库):

bash startup.sh

4.启动后自检

集群中所有机器部署为2.0.X版本并启动时,应当进行启动之后的检查。

当集群中所有节点logs/naming-server.log日志中观察到upgrade check result true及Upgrade to 2.0.X,便判定为集群准备完毕时,此时才可以使用Nacos2.0。

5.关闭双写

为了节省性能开销,当集群部署完成后,可以先观察一段时间运行情况,当确认无误后,可以关闭双写,从而释放性能,具体的关闭方式是通过API进行:

curl -X PUT ‘localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false’

关闭后可以从logs/naming-server.log日志中观察到Disable Double write, stop and clean v1.x cache and features字样。说明关闭双写。

注意,关闭双写后无法在进行平滑降级,请先确认关闭前集群正确运行。

6.关闭服务器

Linux/Unix/Mac

sh shutdown.sh

Windows

cmd shutdown.cmd

或者双击shutdown.cmd运行文件。

升级步骤

以linux系统为例。window系统请自行替换sh脚本为cmd脚本。

1. 停止旧节点

选择集群中一台Nacos1.X节点,使用Nacos目录下nacos/bin/shutdown.sh进行停止。

2. 替换文件

下载并解压缩nacos-server-2.0.2.tar.gz,将其下的bin,conf,target目录覆盖原Nacos1.X的安装目录下。

3. 修改配置

自行修改nacos/bin/startup.sh中的JVM参数,conf/cluster.conf中的集群列表以及
conf/application.prpperties中数据库或其他相关参数。

4. 启动Nacos2.0

使用nacos目录下nacos/bin/startup.sh启动nacos2.0,其他更多启动指令请查看Nacos部署环境 。

5. 观察是否启动成功

首先查看nacos目录下 logs/start.out或logs/nacos.log 观察到nacos启动成功的日志,如 Nacos started successfully in cluster mode. use xxx storage 说明程序已启动成功。

之后在观察 logs/naming-server.log 中,可以看到有upgrade check result false 以及 Check whether close double write等日志信息。

属于正常现象。

6. 升级其他节点

待该节点的服务及实例信息已经同步完毕后(可从控制台进行确认)。重复1~5步骤,将其他的nacos节点也进行升级。

7. 确认升级完成

当集群中最后一个节点也升级到2.0.X版本时,集群会开始进行升级检测。每个节点会对该节点的服务信息和实例信息进行校验,并检测是否还有未完成的双写任务。

当该节点的服务信息和实例信息已经核对成功,并且没有双写任务存在时,该节点会判定自己已经做好升级准备,并修改自己的状态且通知其他Nacos节点。每台节点是否完成升级准备可以从控制台的集群管理中元数据信息中看到”readyToUpgrade”: false/true。

当集群中所有节点均判定为准备完毕时。Nacos集群中的节点会进行升级切换,自动升级到Nacos2.0的处理逻辑。

可以从logs/naming-server.log日志中观察到upgrade check result true及Upgrade to 2.0.X。

8.1 关闭双写

当集群升级完成后,可以先观察一段时间运行情况,当确认无误后,可以关闭双写,从而释放性能,具体的关闭方式是通过API进行:

curl -X PUT ‘localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false’

关闭后可以从logs/naming-server.log日志中观察到Disable Double write, stop and clean v1.x cache and features字样。说明关闭双写。

注意,关闭双写后无法在进行平滑降级,请先确认关闭前集群正确运行。

8.2 降级

集群升级完毕后,依旧会进行双写,当升级后发现Nacos2.0存在问题时,可以快速进行降级,降级流程为重复步骤1~6,只是将版本改为对应的1.X版本。

当第一台降级完成后,集群即可观察到logs/naming-server.log 中的upgrade check result false ,且控制台集群管理中,所有新版本”readyToUpgrade”: false。

升级相关的openAPI

在2.0.2版本中,nacos-server提供了一些方便查看升级状态及不同版本中的数据区别,方便用户排查升级中的问题。

查看统计

描述

查看当前升级状态

请求类型

GET

请求URL

/nacos/v1/ns/upgrade/ops/metrics

请求参数

返回参数

参数类型

描述

string

升级状态

示例

upgraded                       = true
isAll20XVersion                = true
isDoubleWriteEnabled           = false
doubleWriteDelayTaskCount      =     0
serviceCountV1                 =     0
instanceCountV1                =     0
serviceCountV2                 =     0
instanceCountV2                =     0
subscribeCountV2               =     0
responsibleServiceCountV1      =     0
responsibleInstanceCountV1     =     0
ephemeralServiceCountV2        =     0
persistentServiceCountV2       =     0
ephemeralInstanceCountV2       =     0
persistentInstanceCountV2      =     0
service.V1.not.in.V2           =
service.V2.not.in.V1           =

查询服务

描述

查询对应Nacos版本中一个服务内容

请求类型

GET

请求路径

/nacos/v1/ns/upgrade/ops/service

请求参数

名称

类型

是否必选

描述

serviceName

字符串

服务名

groupName

字符串

分组名

namespaceId

字符串

命名空间ID

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X GET '127.0.0.1:8848/nacos/v1/ns/upgrade/ops/service?serviceName=nacos.test.2'

示例返回

{
    metadata: { },
    groupName: "DEFAULT_GROUP",
    namespaceId: "public",
    name: "nacos.test.2",
    selector: {
        type: "none"
    },
    protectThreshold: 0,
    clusters: [
        {
            healthChecker: {
                type: "TCP"
            },
            metadata: { },
            name: "c1"
        }
    ]
}

查询服务列表

描述

查询对应Nacos版本的服务列表

请求类型

GET

请求路径

/nacos/v1/ns/upgrade/ops/service/list

请求参数

名称

类型

是否必选

描述

pageNo

int

当前页码

pageSize

int

分页大小

groupName

字符串

分组名

namespaceId

字符串

命名空间ID

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X GET '127.0.0.1:8848/nacos/v1/ns/upgrade/ops/service/list?pageNo=1&pageSize=2'

示例返回

{
    "count":148,
    "doms": [
        "nacos.test.1",
        "nacos.test.2"
    ]
}

查询实例列表

描述

查询对应Nacos版本中某个服务下的实例列表

请求类型

GET

请求路径

/nacos/v1/ns/upgrade/ops/instance/list

请求参数

名称

类型

是否必选

描述

serviceName

字符串

服务名

groupName

字符串

分组名

namespaceId

字符串

命名空间ID

clusters

字符串,多个集群用逗号分隔

集群名称

healthyOnly

boolean

否,默认为false

是否只返回健康实例

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X GET '127.0.0.1:8848/nacos/v1/ns/upgrade/ops/instance/list?serviceName=nacos.test.1'

示例返回

{
	"dom": "nacos.test.1",
	"cacheMillis": 1000,
	"useSpecifiedURL": false,
	"hosts": [{
		"valid": true,
		"marked": false,
		"instanceId": "10.10.10.10-8888-DEFAULT-nacos.test.1",
		"port": 8888,
		"ip": "10.10.10.10",
		"weight": 1.0,
		"metadata": {}
	}],
	"checksum": "3bbcf6dd1175203a8afdade0e77a27cd1528787794594",
	"lastRefTime": 1528787794594,
	"env": "",
	"clusters": ""
}

查询实例详情

描述

查询一个对应Nacos版本中某个服务下个某个实例详情。

请求类型

GET

请求路径

/nacos/v1/ns/upgrade/ops/instance

请求参数

名称

类型

是否必选

描述

serviceName

字符串

服务名

groupName

字符串

分组名

ip

字符串

实例IP

port

字符串

实例端口

namespaceId

字符串

命名空间ID

cluster

字符串

集群名称

healthyOnly

boolean

否,默认为false

是否只返回健康实例

ephemeral

boolean

是否临时实例

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X GET '127.0.0.1:8848/nacos/v1/ns/upgrade/ops/instance?serviceName=nacos.test.2&ip=10.10.10.10&port=8888&cluster=DEFAULT'

示例返回

{
	"metadata": {},
	"instanceId": "10.10.10.10-8888-DEFAULT-nacos.test.2",
	"port": 8888,
	"service": "nacos.test.2",
	"healthy": false,
	"ip": "10.10.10.10",
	"clusterName": "DEFAULT",
	"weight": 1.0
}

添加服务

描述

补充添加一个服务到对应Nacos版本下

请求类型

POST

请求路径

/nacos/v1/ns/upgrade/ops/service

请求参数

名称

类型

是否必选

描述

serviceName

字符串

服务名

groupName

字符串

分组名

namespaceId

字符串

命名空间ID

protectThreshold

浮点数

保护阈值,取值0到1,默认0

metadata

字符串

元数据

selector

JSON格式字符串

访问策略

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X POST '127.0.0.1:8848/nacos/v1/ns/service?serviceName=nacos.test.2&metadata=k1%3dv1'

示例返回

ok

删除服务

描述

从对应Nacos版本中删除一个服务,如果删除v2服务,只有当服务下实例数为0时允许删除。

请求类型

DELETE

请求路径

/nacos/v1/ns/upgrade/ops/service

请求参数

名称

类型

是否必选

描述

serviceName

字符串

服务名

groupName

字符串

分组名

namespaceId

字符串

命名空间ID

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X DELETE '127.0.0.1:8848/nacos/v1/ns/service?serviceName=nacos.test.2'

示例返回

ok

注册实例

描述

注册一个实例到对应Nacos版本的服务下。

请求类型

POST

请求路径

/nacos/v1/ns/upgrade/ops/instance

请求参数

名称

类型

是否必选

描述

ip

字符串

服务实例IP

port

int

服务实例port

namespaceId

字符串

命名空间ID

weight

double

权重

enabled

boolean

是否上线

healthy

boolean

是否健康

metadata

字符串

扩展信息

clusterName

字符串

集群名

serviceName

字符串

服务名

groupName

字符串

分组名

ephemeral

boolean

是否临时实例

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?port=8848&healthy=true&ip=11.11.11.11&weight=1.0&serviceName=nacos.test.3&encoding=GBK&namespaceId=n1'

示例返回

ok

注销实例

描述

删除对应Nacos版本服务下的一个实例。

请求类型

DELETE

请求路径

/nacos/v1/ns/upgrade/ops/instance

请求参数

名称

类型

是否必选

描述

serviceName

字符串

服务名

groupName

字符串

分组名

ip

字符串

服务实例IP

port

int

服务实例port

clusterName

字符串

集群名称

namespaceId

字符串

命名空间ID

ephemeral

boolean

是否临时实例

ver

字符串

版本 v1 或者 v2, 默认v2

示例请求

curl -X DELETE '127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.test.1&ip=1.1.1.1&port=8888&clusterName=TEST1'

示例返回

ok

升级过程中可能遇到的问题

1. 最后一台节点升级完成时,注册的服务出现波动(变成不健康或暂时被摘除)

升级过程中,为了节约性能,双写的内容仅是内容发生变更时的状态,心跳等内容不会被双写,因此切换版本时,可能有部分实例的心跳过久而健康检查又刚好开始执行,从而被标记非健康或摘除。

后续心跳处理将会把数据补充回来,最终会一致。

2. 升级完成后,升级的最后一台服务端报错Server is DOWN

这可能是因为Raft选主失败导致的,解决方法是重启最后一台升级的服务端。或先将最后一台服务端降级,之后再重新进行一次升级即可。

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/15149.html

(0)
上一篇 2024年 5月 17日
下一篇 2024年 5月 17日

相关推荐

  • 哈夫曼树的构造步骤_哈夫曼树的构造步骤包括

    哈夫曼树的构造步骤_哈夫曼树的构造步骤包括一文搞懂如何构造哈夫曼树?上文介绍了哈夫曼树的基本概念:机器学习入坑者:程序员必备——哈夫曼树的基本概念哈夫曼树要求所有叶子节点的带权路径最小,那么如何构造这样的树呢?图说构造方式首先,对将要使用的符号进行定义:

    2024年 5月 23日
  • uniapp生命周期和vue生命周期_app生命周期阶段

    uniapp生命周期和vue生命周期_app生命周期阶段关于uniapp和Vue的生命周期什么是生命周期? 前端的升命周期一般指的是,一个页面、一个网站从创建开始,到应用关闭,走过的一个流程。就像人的一生一样,从出生,到工作,到死去。 生命周期有什

    激活谷笔记 2024年 5月 11日
  • Rider激活2024.1.2(ACDSee Photo Studio 2024中文激活成功教程版)

    Rider激活2024.1.2(ACDSee Photo Studio 2024中文激活成功教程版)

    2024年 6月 7日
  • xshell是啥_xshell常用的20个命令

    xshell是啥_xshell常用的20个命令Xshell常用命令大全1.命令ls——列出文件ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件ls a* 列出当前目录下以字母a开头的所有

    激活谷笔记 2024年 5月 11日
  • 分区表正在被其他程序_分区表正在被其他程序独占访问怎么解决

    分区表正在被其他程序_分区表正在被其他程序独占访问怎么解决操作系统复习题简答题总结第一篇:操作系统复习题简答题总结1操作系统的基本特征有哪些? 答:操作系统的基本特征:(1)并发。并发是指两个或多个活动在同一给定的时间间隔中进行。(2)共享。共享是指计算机系统中的资源被多个任务所共用。(3)异步性。在多道程序环境下,各个程序的执行过程有“

    激活谷笔记 2024年 5月 29日
  • iOS中自带超强中文分词器的实现方法

    iOS中自带超强中文分词器的实现方法这篇文章主要给大家介绍了关于iOS中自带超强中文分词器的实现方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

    2024年 3月 11日
  • 全局钩子 模拟按键

    全局钩子 模拟按键一、开篇假期总是转眼即逝,想想今天就是中秋节最后一天了,明天又要开始挤地铁了,好像还有一篇文章需要完成,前一段时间做了一个小功能,当用户输入密码时,如果键盘开启了大写,则需要重点提示用户,否则有些用户可能会误以为自己密码输入错误。今天博主就来分析下当时的实现过程。本篇文章主要讲解怎么实现实时监

    激活谷笔记 2024年 5月 17日
  • dl250摩托车保养_dl250摩托车保养手册

    dl250摩托车保养_dl250摩托车保养手册以铃木DL250为例讲解摩托车保养容易被忽视的部分。 我乃像疯一样自游。 说起机车保养大部分人都认为是换机油那么简单,其实保养工作很复杂,大到发动机小到螺丝钉都需要维护保养,之前我也讲过一些摩托车保养知识,今天重点讲一下日常

    2024年 5月 23日
  • stringtokenizer发音

    stringtokenizer发音string /strɪŋ/ n. 〔由几股合成的〕线; 细绳; 带子;点击音频收听跟读 ↓↓↓↓↓↓例句/词组:I need a piece of string to tie this package. 我需要一根绳子来捆这个包裹。英语解释:a stro

    激活谷笔记 2024年 5月 19日
  • 串口调试助手打不开串口怎么办_串口调试助手打不开串口怎么办呢

    串口调试助手打不开串口怎么办_串口调试助手打不开串口怎么办呢串口调试助手使用过程中的问题选中【加回车换行】,OD代表CR=\r,0A代表LF=\n未选中【加回车换行】选中【加回车换行】未选中【加回车换行】以上罗列出了所有HEX发送与显示的情况。疑问,怎么利用串口调试助手+USB转串口工具,查看单片机编码的正常?

    2024年 5月 23日
  • tiny用英文怎么说_tiny用英语怎么说?

    tiny用英文怎么说_tiny用英语怎么说?tinytiny[‘taini]adj.极小的, 微小的例句与用法:A tiny fishing boat was drifting slowly along.一只小小的渔船在缓缓地漂去。They will soon be

    激活谷笔记 2024年 5月 20日
  • redis缓存原理缓存雪崩_redis缓存穿透

    redis缓存原理缓存雪崩_redis缓存穿透【Redis】缓存穿透、缓存击穿、缓存雪崩的原因及解决方案对于 Redis 缓存的穿透、击穿和雪崩问题,可以采取以下解决方案:1. 缓存穿透:当请求的数据在缓存中不存在时,会直接访问数据库,如果有恶意攻击者大量请

    激活谷笔记 2024年 5月 12日
关注微信