我们在学习springCloud的时候用的注册中心是Eureka:
springBoot集成springCloud(一)注册中心
但是由于houlai Eureka2.0后续不维护,国内就需要一个可靠的注册中心。但是换了一套后,有哪些不同呢
SpringCloud和SpringCloudAlibaba技术对比
名称 SpringCloud SpirngCloudAlibaba
注册中心 Eureka、Consul Nacos
配置中心 SpringCloud Config Nacos
网关 SpringCloud Zull SpringCloud Gateway
负载均衡 Ribbon Loadbalabcer
熔断降级 Hystrix Sentinel
服务调用 Feign OpenFeign
服务总线 Bus Nacos
消息中间件 无(第三方替代方案:rabbitmq) RecketMQ
分布式解决方案 无(第三方替代方案:2pc) Seata
所以现在大部分都是用nacos。下面我们来说下如何安装nacos
一:前置条件
1:需要有jdk
关于安装jdk的教程,网上很多,这里给大家一篇我个人的文章:
下载nacos安装包,可以从官网下载。
地址:
https://github.com/alibaba/nacos/tags
找到nacos-server-2.1.1.tar.gz的安装包下载即可。由于这个安装包的地址在国外,有时候会下载很慢,甚至是网页打不开,大家可以下载源码,然后通过maven命令打包,打成jar包之后再进行安装。
记住,下载源码的时候同样需要选择好对应的版本。
源码地址:
https://github.com/alibaba/nacos
这两个前置条件准备好之后,需要将下载好的nacos安装包上传到服务器上,上传的工具大家可以自行选择。至于上传的位置或者说是目录,这个看个人喜好吧。我个人的下载到个人的mnt目录下面新建了一个software的目录,这里专门用来存放各种安装包.
/mnt/software下有
nacos-server-2.1.1.tar.gz
二:安装nacos(linux)
1 解压
tar -zxvf nacos-server-2.1.1.tar.gz
可以看到nacos解压后的目录
2:部署
进入到nacos的conf目录,这是nacos的配置目录。
1.将 cluster.conf.example 文件复制一份
cp cluster.conf.example cluster.conf
2.编辑 cluster.conf文件
vim cluster.conf
添加你将要部署nacos服务器的ip和端口:
#example
nacos1的ip:nacos的端口
nacos2的ip:nacos的端口
nacos3的ip:nacos的端口
伪集群部署模式注意:
如果是在一台服务器上运行三台nacos服务实例,这样ip是一样的,但是端口是不一样的,这种部署方式我们称之为伪集群,也算是集群的一种。
端口冲突
问题如果是这种部署方式,切记,端口不能是连续的。什么意思呢?nacos默认端口是8848,如果我们部署三个nacos实例,端口号分别为:8847/8848/8849。如果是这样的话,在nacos2.0以上的版本是运行不起来的,为什么呢?因为这样会导致端口冲突。
为什么会端口冲突呢?因为:
因为nacos2.0之后,nacos会占用四个端口,如果伪集群采用的端口是连号方式,会导致端口被占用。比如,我们端口采用8848/8849/8859,则会出现端口冲突问题。nacos2.0会占用的4个端口为:
1.nacos端口:8848-nacos默认端口;
2.raft协议端口:7848-raft port,即raft协议端口;
3.grpc协议两个端口:9848-grpc协议端口(nacos端口+1000),9849-grpc协议端口(nacos+1001)
关于如何杀掉这个进行,可以参考:
3:导入nacos集群需要的库表
需要将nacos集群模式需要的库表导入到我们上面在application.properties文件中配置的数据中。
首先,我们创建一个nacos_config库;
其次,我们将conf目录下的nacos-mysql.sql文件下载到本地电脑,然后在mysql数据库中执行这个sql,这个SQL其实就是nacos集群需要的建表语句( nacos-mysql.sql)
4:修改application.properties文件
同样在conf目录copyapplication.properties.example文件
cp application.properties.example application.properties
编辑application.properties文件:
vim application.properties
配置nacos连接的数据库:
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://数据库ip:3306/nacos库名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=数据库密码
其实,后面跟不跟.0都是一样的,因为我们只配置了一台数据库。最终我的8846是采用的默认方式,8848采用的是db.user=root的方式,结构都是可以正常运行的。
当然如果你配置了数据库的主备模式,也就是说有多台mysql的话,这里可以配置多个,此时就需要分别指定了。
5:启动nacos
进入bin目录下
sh startup.sh
然后进入logs查看是否启动正常
tail -f start.out
2022-12-14 10:47:05,970 INFO Nacos is starting...
2022-12-14 10:47:06,971 INFO Nacos is starting...
2022-12-14 10:47:07,682 INFO Nacos started successfully in cluster mode. use external storage
这样就启动成功了。
6:进入nacos界面
然后我们在浏览器打开对应的nacos的控制台地址:
需要换成你自己的ip和端口。
三:安装nacos(linux)
- 下载Nacos安装包 首先,从Nacos的官方网站下载最新版本的安装包。
- 解压安装包:下载完成后,解压安装包到指定的目录。
- 进入命令提示符:打开命令提示符(CMD)或PowerShell,并进入Nacos的bin目录。
- 执行启动命令:在bin目录下,执行以下命令启动Nacos单机模式:
startup.cmd -m standalone
。 - 访问Nacos管理界面:启动成功后,等待一段时间,可以通过浏览器访问Nacos的管理界面,地址通常为
http://localhost:8848/nacos
。 - 停止Nacos服务:如果需要停止Nacos服务,可以按下Ctrl+C组合键来终止运行。
此外,如果需要在不使用命令行的情况下启动Nacos,可以通过直接修改bin目录下的startup.cmd
启动文件,将模式设置为standalone
,然后直接双击startup.cmd
进行启动。这种方式适用于希望简化启动过程或避免每次手动输入命令的用户。