Nacos - 基础(1)- Windows下Nacos的单机以及集群部署

Nacos是什么?

一下截取Nacos官网的介绍

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

在微服务架构下,各个服务间通过各种RPC框架(如Dubbo)进行远程服务调用,而如果需要调用一个远程的服务提供的方法,总得需要知道它的ip,端口吧?而在集群模式下一个服务可能有几十上百个,如果需要程序员自己来实现这些的管理,那必然是很麻烦并且可能费尽心思实现的还是会有很多问题,而Nacos所做的就是给需要进行rpc(远程过程调用)的实例提供对应的ip和端口,并实现对这些服务实例的管理,如健康检测。
这便是Nacos作为服务管理中心的作用,除此之外,Nacos还有作为配置中心的作用,以下是Nacos官网对于其作为配置中心的介绍

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

作为配置中心Nacos可以在项目在运行时热更新项目的配置。

Nacos部署单机版本

要部署单机版本的Nacos从git上下载对应版本的Nacos

https://github.com/alibaba/nacos/releases

这里选择下载2.2.23版本的nacos
在这里插入图片描述
下载好后,进行解压,这里解压到G:\micro-service\nacos-test目录下,解压后目录很明了
在这里插入图片描述

目录名介绍
bin用来控制Nacos启动停止的可执行文件
confNacos启动的配置文件
targetNacos是用java写的,里面保存Nacos打包后的jar包

了解了这些文件夹的作用后,就可以开始尝试部署了,首先,因为我们要部署单机版本的Nacos,所以要先在bin目录下的startup.cmd文件进行一些修改(Nacos默认是以集群模式部署)
在这里插入图片描述
=》
在这里插入图片描述
然后,在shell中尝试运行startup.cmd文件
在这里插入图片描述
出乎意料的一次性成功,现在用浏览器尝试打开localhost:8848/nacos
在这里插入图片描述
可以看到,根据它的提醒默认是没有开启鉴权的,查阅Nacos官网给出的文档

https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

可以知道要开启鉴权需要配置nacos.core.auth.enabled为true

接下来,打开conf文件夹,这里面保存的是nacos启动的一些配置,在这里可以看到一个熟悉的文件:application.properties
在这里Ctrl+F可以找到我们想要的属性,可以看到他被配置为false
在这里插入图片描述
修改为true后,在运行startup.cmd,报错了
在这里插入图片描述
根据报错的提醒(Caused by: com.alibaba.nacos.api.exception.NacosException: Empty identity, Please set nacos.core.auth.server.identity.key and nacos.core.auth.server.identity.value, detail: https://nacos.io/zh-cn/docs/v2/guide/user/auth.html),去application.properties中进行寻找
在这里插入图片描述
发现这两个属性并没有被配置任何的值,所以此时去查阅官方手册

参数名默认值启止版本说明
nacos.core.auth.enabledfalse1.2.0 ~ latest是否开启鉴权功能
nacos.core.auth.system.typenacos1.2.0 ~ latest鉴权类型
nacos.core.auth.plugin.nacos.token.secret.keySecretKey012345678901234567890123456789012345678901234567890123456789(2.2.0.1后无默认值)2.1.0 ~ latest默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,使用默认值有安全风险
nacos.core.auth.plugin.nacos.token.expire.seconds180002.1.0 ~ latest用户登陆临时accessToken的过期时间
nacos.core.auth.enable.userAgentAuthWhitefalse1.4.1 ~ latest是否使用useragent白名单,主要用于适配老版本升级,置为true时有安全风险
nacos.core.auth.server.identity.keyserverIdentity(2.2.1后无默认值)1.4.1 ~ latest用于替换useragent白名单的身份识别key,使用默认值有安全风险
nacos.core.auth.server.identity.valuesecurity(2.2.1后无默认值)1.4.1 ~ latest用于替换useragent白名单的身份识别value,使用默认值有安全风险
nacos.core.auth.default.token.secret.keySecretKey0123456789012345678901234567890123456789012345678901234567891.2.0 ~ 2.0.4同nacos.core.auth.plugin.nacos.token.secret.key
nacos.core.auth.default.token.expire.seconds180001.2.0 ~ 2.0.4同nacos.core.auth.plugin.nacos.token.expire.seconds

现在可以明白我们控制台需要我们配置的是用于替换useragent白名单的身份识别key,使用默认值有安全风险以及用于替换useragent白名单的身份识别value,使用默认值有安全风险
在这里插入图片描述
先使用默认值进行替换后,尝试运行,发现此时还是会报错,现在再去看看文档,发现还有一个属性在新版本中没有默认值(nacos.core.auth.plugin.nacos.token.secret.key),他是用于登录时生成Token的密钥,猜测是否是因为这个没有值导致
在这里插入图片描述

这里采用默认值,再次尝试运行startup.cmd,运行成功
在这里插入图片描述
此时要进入nacos的管理界面会发现已经需要我们输入用户名和密码了
在这里插入图片描述

默认用户名:nacos
默认密码:nacos

nacos默认用来保存服务等信息的数据库是用的Derby数据库。
这里引用其他博主的总结

Derby 数据库的优缺点
1 、 Derby 定位是小型数据库 , 特别是嵌入式 . 支持的数据库小于 50GB, 对于小型网站 , 事务不复杂的应用 , 使用它的还是很不错的 . 另外大型桌面应用也可以用它来保存配置和其他数据 , 可以做到与文件格式无关 ,
因为都是访问数据库 .
2 、功能: Derby 支持标准 SQL92, SQL1999, SQL2003, 支持临时表 , 索引 , 触发器 , 视图 , 存储过程 ,
外键 , 约束 , 并行 , 事务 , 加密与安全等 . 只要有 JDK(>=1.3), 就可以运行 Derby.
3 、安全性: Derby 的安全性也做得很到位 , 包括用户鉴权和加密解密 .
4 、性能: Derby 的性能也是不错的 . 在插入 100 万条记录时 , CPU 的占用率一直低于 40%, 平均每插一条
记录耗时小于 0.3 毫秒 . 这对于满足桌面应用程序是绰绰有余的 . 但是比 Oracle 、 MySql 等专业数据库性能要低

可以知道,这个数据库的性能比Mysql要低,并且该数据库是将数据存在内存中的,这意味着加入Nacos宕机,所有服务数据会消失(Derby是以jar包的形式内嵌在Nacos中),而nacos是支持使用mysql数据源的,我们可以尝试在application.properties中修改nacos的数据源配置,但首先,我们需要先导入nacos提供的mysql数据库sql文件(我下的2.2.3版本的Nacos中mysql的sql文件名叫mysql-schema.sql)
导入后:
在这里插入图片描述
然后在application.properties中修改数据源
![在这里插入图片描述](https://img-blog.csdnimg.cn/8b290d544f7148a7a711e055fedb2663.png在这里插入图片描述

最后运行startup.cmd,运行成功
在这里插入图片描述

Nacos部署集群版本

新建一个G:\micro-service\nacos-cluster目录,用来存放多个nacos文件目录
刚刚的单机版本我们只修改了Nacos的数据源以及开启了鉴权,所以可以直接使用刚刚配置好的Nacos来做进一步的修改。
Nacos的集群至少需要有三个Nacos实例,所以我们在这个目录拷贝三份刚刚的Nacos,分别使用8849,8850,8851端口
在这里插入图片描述

首先我们要做的,便是将刚刚修改为单机模式启动的startup.cmd文件改回cluster(集群)模式
在这里插入图片描述
修改完这个,我们还需要修改每个实例的端口,分别修改为8849、8850、8851
在这里插入图片描述
配置完不同的端口,还需要让每一台Nacos知道:他的伙伴在哪里(其他nacos的ip和端口)
在conf目录下有一个cluster.conf.example文件,没错,他就是集群配置的样例文件,我们拷贝一份改名叫做cluster.conf文件
在这里插入图片描述
打开里面很干净,只记录了几个IP和端口
在这里插入图片描述
照葫芦画瓢,我们将刚刚创建的几个实例的端口和ip填进去
在这里插入图片描述
此时尝试启动,发现题型
“nacos is starting with cluster”
Error occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap size
在这里插入图片描述
大概是给这个nacos分配的堆空间太大了
在这里插入图片描述
在这里插入图片描述
可能会等待一段时间,但是会成功的
在这里插入图片描述

重要!

在启动了第一个8849端口的nacos后,会发现无法启动第二个8850端口的nacos,原因如下:
在这里插入图片描述
也就是说如果第一个是8849端口那么第二个应该是8851(8849会占用)

https://blog.csdn.net/weixin_43933728/article/details/121927770

最后将三个端口改为8849 8851 8853后,成功部署集群
在这里插入图片描述
在这里插入图片描述可以在这个git仓库中找到这个例子的成品

https://gitee.com/sususz/windows-nacos-cluster

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s单机部署nacos可以按照以下步骤进行操作: 1. 克隆nacos-k8s仓库:使用命令`git clone https://github.com/nacos-group/nacos-k8s.git`,将nacos-k8s仓库克隆到本地。 2. 进入nacos-k8s目录:使用命令`cd nacos-k8s`,进入刚克隆的nacos-k8s目录。 3. 部署nacos服务:使用命令`kubectl apply -f deploy/nacos/nacos-single.yaml`,将nacos-single.yaml文件中定义的nacos服务部署到k8s单节点上。 4. 等待部署完成:使用命令`kubectl get pods -n nacos`,查看nacos服务的状态,等待所有的pod状态都变成"Running"表示部署完成。 5. 访问nacos:使用命令`kubectl get svc -n nacos`,查看nacos服务的Cluster IP,然后在浏览器中输入Cluster IP和对应的端口号,即可访问nacos的管理界面。 请注意,以上步骤是针对单机部署nacos的,如果需要进行集群部署,可以参考nacos-k8s仓库中的其他部署文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [kubernetes(k8s)部署nacos集群/单机服务问题](https://blog.csdn.net/BiaoYBbiao/article/details/117229035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用k8s来部署nacos](https://blog.csdn.net/m2099797280/article/details/123643066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值