我们在:
手把手教你Spring Cloud Alibaba教程:nacos安装
知道如何部署nacos,但是我们集群部署的时候还是有一些内容需要讲一下。
集群部署
架构
根据官方文档的介绍,Nacos的集群架构大致如下图所示(省略了集中化存储信息的MySQL):
MySQL数据源配置
在进行集群配置之前,先完成对MySQL数据源的初始化和配置。主要分以下两步:
然后,分别修改这三个脚本中的参数,具体如下图的红色部分(端口号根据上面脚本命名分配)
- 第一步:初始化MySQL数据库,数据库初始化文件:
nacos-mysql.sql
,该文件可以在Nacos程序包下的conf目录下获得。 - 第二步:修改
conf/application.properties
文件,增加支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码。配置样例如下: -
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=
集群配置
在Nacos的
conf
目录下有一个cluster.conf.example
,可以直接把example
扩展名去掉来使用,也可以单独创建一个cluster.conf
文件,然后打开将后续要部署的Nacos实例地址配置在这里。本文以在本地不同端点启动3个Nacos服务端为例,可以如下配置:
-
127.0.0.1:8841 127.0.0.1:8845 127.0.0.1:8849
启动实例
在完成了上面的配置之后,我们就可以开始在各个节点上启动Nacos实例,以组建Nacos集群来使用了。
由于本文中我们测试学习采用了本地启动多实例的情况,与真正生产部署会有一些差异,所以下面分两种情况说一下,如何启动各个Nacos实例。
本地测试
本文中,在集群配置的时候,我们设定了3个Nacos的实例都在本地,只是以不同的端口区分,所以我们在启动Nacos的时候,需要修改不同的端口号。
下面介绍一种方法来方便地启动Nacos的三个本地实例,我们可以将bin目录下的
startup.sh
脚本复制三份,分别用来启动三个不同端口的Nacos实例,为了可以方便区分不同实例的启动脚本,我们可以把端口号加入到脚本的命名中,比如: - startup-8841.sh
- startup-8845.sh
- startup-8849.sh
这里我们通过-Dserver.port
的方式,在启动命令中,为Nacos指定具体的端口号,以实现在本机上启动三个不同的Nacos实例来组成集群。
修改完3个脚本配置之后,分别执行下面的命令就可以在本地启动Nacos集群了:
sh startup-8841.sh
sh startup-8845.sh
sh startup-8849.sh
生产环境
在实际生产环境部署的时候,由于每个实例分布在不同的节点上,我们可以直接使用默认的启动脚本(除非要调整一些JVM参数等才需要修改)。只需要在各个节点的Nacos的bin
目录下执行sh startup.sh
命令即可。
Proxy配置
在Nacos的集群启动完毕之后,根据架构图所示,我们还需要提供一个统一的入口给我们用来维护以及给Spring Cloud应用访问。简单地说,就是我们需要为上面启动的的三个Nacos实例做一个可以为它们实现负载均衡的访问点。这个实现的方式非常多,这里就举个用Nginx来实现的简单例子吧。
在Nginx配置文件的http段中,我们可以加入下面的配置内容:
upstream nacosserver{
server 127.0.0.1:8841;
server 127.0.0.1:8845;
server 127.0.0.1:8849;
}
location /nacos/{
proxy_pass http://nacosserver/nacos/;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "";
client_max_body_size 30m;
client_body_buffer_size 128k;
proxy_redirect off;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
proxy_read_timeout 6000;
proxy_buffer_size 80k;
proxy_buffers 4 640k;
proxy_busy_buffers_size 1280k;
proxy_temp_file_write_size 1280k;
proxy_next_upstream http_502 http_504 error invalid_header;
}
这样,当我们访问:http://localhost:8080/nacos/
的时候,就会被负载均衡的代理到之前我们启动的三个Nacos实例上了。这里我们没有配置upstream
的具体策略,默认会使用线性轮训的方式,如果有需要,也可以配置上更为复杂的分发策略。这部分是Nginx的使用内容,这里就不作具体介绍了。
到这里,Nacos的集群搭建就完成了!我们可以通过Nginx配置的代理地址:http://localhost:8080/nacos/
来访问Nacos,在Spring Cloud应用中也可以用这个地址来作为注册中心和配置中心的访问地址来配置。读者可以使用文末的代码示例来修改原来的Nacos地址来启动,看是否可以获取配置信息来验证集群的搭建是否成功。也可以故意的关闭某个实例,来验证Nacos集群是否还能正常服务。