1. 集群结构图
官方给出的Nacos集群图:
其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。
我们计划的集群结构:
三个nacos节点的地址:
节点 | ip | port |
---|---|---|
nacos1 | 127.0.0.1 | 8840 |
nacos2 | 127.0.0.1 | 8850 |
nacos3 | 127.0.0.1 | 8860 |
注意!!
在 nacos2.X 版本中,每个节点会占用两个端口,即配置的端口和下一个端口
所以
集群之间的端口号不要连着
,至少间隔一个端口(如8840,8842,8844)
2.搭建集群
搭建集群的基本步骤:
下载nacos安装包
搭建数据库,初始化数据库表结构
配置nacos
启动nacos集群
配置nginx反向代理
2.1. 下载nacos
nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/tags,可以选择任意版本下载。
本例中使用1.4.1版本:
2.1.初始化数据库
Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。
官方推荐的最佳实践是使用带有主从的高可用数据库集群,但是在接下来的案例中,我们以单点的数据库为例来讲解。
首先新建一个数据库,命名为nacos,而后执行nacos目录中的 conf/mysql-schema.sql
,构造nacos需要的数据结构和基本数据。
需要注意,不同版本的nacos中,sql也是不同的,所以切换版本时,可能需要重新构造
2.3.配置Nacos
将这个包解压到任意非中文目录下,如图:
目录说明:
- bin:启动脚本
- conf:配置文件
进入nacos的conf目录,首先备份配置文件cluster.conf.example
,然后将原文件重命名为cluster.conf
:
然后添加内容:
127.0.0.1:8840
127.0.0.1:8850
127.0.0.1:8860
注意:此处的IP一定要与下面application.properties中的nacos.inetutils.ip-address保持一致。
然后修改application.properties文件,添加数据库配置
# 这个ip就是节点注册到nacos中的ip,需要与cluster.conf中保持一致
nacos.inetutils.ip-address=127.0.0.1
# 数据存储到mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123
这里的数据库地址、用户名、密码请根据实际情况配置。
2.4.启动
将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3
然后分别修改三个文件夹中的application.properties,
nacos1:
server.port=8840
nacos2:
server.port=8850
nacos3:
server.port=8860
然后分别启动三个nacos节点,直接双击运行bin/startup.cmd
查看集群的节点信息:
2.5.nginx反向代理
修改nginx目录下的conf/nginx.conf
文件,配置如下:
upstream nacos-cluster {
server 127.0.0.1:8845;
server 127.0.0.1:8846;
server 127.0.0.1:8847;
}
server {
listen 80;
server_name localhost;
location /nacos {
proxy_pass http://nacos-cluster;
}
}
而后在浏览器访问:http://localhost/nacos即可。
代码中application.yml文件配置如下:
spring:
cloud:
nacos:
config:
server-addr: localhost:80 # 配置中心Nacos地址
discovery:
server-addr: localhost:80 # 注册中心Nacos地址
2.6.优化
-
实际部署时,需要给做反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移nacos的客户端也无需更改配置.
-
Nacos的各个节点应该部署到多个不同服务器,做好容灾和隔离
Comments NOTHING