nacos集群搭建
官方文档提供了一个Nacos集群的架构图,当我们访问Nacos时,首先会经过SLB,也就是负载均衡,通常是一个nginx,通过nginx来进行分发到具体的Nacos服务器上面。
我们需要给不同的服务器进行部署Nacos,我们这里演示的是一个伪的集群,在一台服务器上面搭建三个Nacos。
1. 环境准备
请确保是在环境中安装使用:
- 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
- 64 bit JDK 1.8+;下载.配置。
- Maven 3.2.x+;下载.配置。
- 3个或3个以上Nacos节点才能构成集群。
2. Nocas下载:https://github.com/alibaba/nacos/releases
将下载好的安装包上传到linux服务器上并进行解压
[root@VM-8-14-centos nacos]# tar -zxvf nacos-server-1.4.1.tar.gz [root@VM-8-14-centos nacos]# ll drwxr-xr-x 5 root root 4096 Jun 7 20:39 nacos -rw-r--r-- 1 root root 79052411 Jun 7 20:39 nacos-server-1.4.1.tar.gz # 将解压后的nacos目录改一个名字,并复制三份,目录名结尾加一个端口 [root@VM-8-14-centos nacos]# mv nacos nacos8849 [root@VM-8-14-centos nacos]# cp -r nacos8849/ nacos8850 [root@VM-8-14-centos nacos]# cp -r nacos8849/ nacos8851 [root@VM-8-14-centos nacos]# ll drwxr-xr-x 5 root root 4096 Jun 7 20:39 nacos8849 drwxr-xr-x 5 root root 4096 Jun 7 20:50 nacos8850 drwxr-xr-x 5 root root 4096 Jun 7 20:50 nacos8851 -rw-r--r-- 1 root root 79052411 Jun 7 20:39 nacos-server-1.4.1.tar.gz
配置集群配置文件
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。
# 创建cluster.conf文件 [root@VM-8-14-centos conf]# vim cluster.conf # 输入以下内容,如果是真实的生产环境就配置各个服务器的ip和端口 114.132.75.63:8849 114.132.75.63:8850 114.132.75.63:8851
确定数据源
为什么需要将数据源配置成mysql数据库嘞?
这是因为nacos默认的数据源是使用的内置数据源,是存在内存中的,那么我们启动nacos集群的时候内存中的数据肯定就不能共享了,到时候我们的数据进行注册的话就会注册到各自的Nacos服务器中,这也就会造成数据不一致。为了保证数据一致性就需要将数据源改为数据库。
我们首先需要安装好数据库,然后创建一个数据库,然后执行安装包中提供的sql脚本,这个sql脚本只是一些建表语句,所以需要我们先创建一个数据库,需要注意mysql需要使用5.7+以上的版本,如果用低版本的mysql在执行sql脚本的时候可能会报错
执行完sql脚本之后,编辑conf/application.properties
文件,修改的内容如下图所示
修改启动脚本
我们还需要修改bin/startup.sh
启动脚本,因为如果是以集群的方式启动,Nacos默认占用的内存是2G,如果服务器的内存足够大可以不进行修改。
[root@VM-8-14-centos nacos8849]# vim bin/startup.sh
修改完成之后就可以启动了
[root@VM-8-14-centos nacos8849]# bin/startup.sh
启动完成后,最后一行日志提示可以让我们去查看日志文件
现在就可以在Nacos管理界面进行查看集群管理了,因为我现在只是启动了一台Nacos,所以其他两台是down
然后再将刚刚修改的三个地方在另外两个nacos目录中也进行相应的修改。并启动这三个nacos。现在随便访问一个nacos的管理界面都可以看到
启动完成之后有一个问题,我们的服务应该如何写,Nacos Client到底写这三个Nacos服务中的哪一个嘞?
其实我们写任何一个都不行,因为这样就又像是单机了,其实我还需要安装一个nginx,用nginx来进行负载均衡,我们使用nginx代理的一个地址。
在nginx的配置文件nginx.conf进行如下的修改
# 定义一个upstream,然后定义别名,再定义要进行负载均衡的ip upstream nacoscluster { server 127.0.0.1:8849; server 127.0.0.1:8850; server 127.0.0.1:8851; } server { listen 8847; server_name localhost; # 这里判断的uri是因为nacos服务启动的conf/application.peoperties配置文件中指定的一个默认访问前缀,如下图所示 location /nacos/ { proxy_pass http://nacoscluster/nacos/; } }
然后在nacos client中的配置文件写nginx的代理地址
server: port: 8084 spring: application: name: stock-service cloud: nacos: # 指定Nacos服务的地址 server-addr: 114.132.75.63:8847 discovery: username: nacos password: nacos namespace: public
nacos是支持多数据中心的,我们是多集群,我们可以如下所示的参数来进行设置,如果是单集群就没必要设置了
这里的集群对应的是服务实例详情页面中最下方的集群。