我们在学习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的教程,网上很多,这里给大家一篇我个人的文章:
Linux系统通过yum安装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
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)
关于如何杀掉这个进行,可以参考:
Linux查看端口占用情况
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的控制台地址:
http://192.168.0.1:8846/nacos
需要换成你自己的ip和端口。