我们在学习springCloud的时候用的注册中心是Eureka:
springBoot集成springCloud(一)注册中心
但是由于houlai Eureka2.0后续不维护,国内就需要一个可靠的注册中心。所以现在大部分都是用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和端口。