单机版的Nacos Server,安装非常简单,但一般不适用于生产,本文主要介绍下如何搭建生产可用的Nacos集群。
使用Mysql存储持久化数据;
如何搭建Nacos集群;
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
具体介绍可查看官网:https://nacos.io/zh-cn/docs/what-is-nacos.html
服务器
操作系统 | 硬件配置 | IP | 说明 |
---|---|---|---|
CentOS 7 | 4C16G | 10.133.1.3 | 安装Nacos |
Tips:3个或3个以上Nacos节点才能构成集群,正常应该用三台服务器来搭建,本文使用一台服务器,三个端口号来实现。
软件
工具/环境 | 版本 |
---|---|
Nacos | 1.1.4 |
Mysql | 5.7+ |
Nginx | 1.6.3 |
具体安装过程不在展开了,生产环境肯定是需要高可用的数据库来支撑。
可以在https://github.com/alibaba/nacos/releases获取到最新稳定的版本。目前有两种格式 tar.gz
或者 zip
# 下载完成后,通过如下命令解压 unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin 复制代码
节点 | 端口 |
---|---|
10.133.1.3 | 8848 |
10.133.1.3 | 8849 |
10.133.1.3 | 8850 |
Tips:3个或3个以上Nacos节点才能构成集群,正常应该用三台服务器来搭建,本文使用一台服务器,三个端口号来实现。实际项目中,需要将Nacos的节点部署在不同机器中,从而实现更好的容灾与隔离。
#开放Nacos端口号、Nginx端口号 sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent sudo firewall-cmd --zone=public --add-port=8849/tcp --permanent sudo firewall-cmd --zone=public --add-port=8850/tcp --permanent sudo firewall-cmd --zone=public --add-port=80/tcp --permanent #重载防火墙规则 sudo firewall-cmd --reload 复制代码
在本次部署过程中,我们采用Nginx来实现负载均衡的功能,由于使用集群所以建议使用域名进行绑定,这样后期就算更换服务器也无需调整代码,下面是官方的集群架构图:
进入 Nacos/conf
目录,可以找到 nacos-mysql.sql
,将其导入到Mysql数据库中。
同样,进入 Nacos/conf
目录,可以找到 application.properties
,打开并编辑:
# 使用Mysql作为存储 spring.datasource.platform=mysql
db.num=2
db.url.0=jdbc:mysql://192.168.1.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
复制代码
db.url.1=jdbc:mysql://192.168.1.2:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos db.password=nacos <span>复制代码</span>
1、生产环境Mysql至少要一主一从,所以要配置两个节点; 2、这个配置文件还有很多配置项,具体可以查看官网配置示例:https://github.com/alibaba/nacos/blob/master/distribution/conf/application.properties
在 Nacos/conf
目录,还可以找到 cluster.conf.example
文件,复制一份出来并改名: cluster.conf
一定要配置3个或三个以上节点
# ip:port 10.133.1.3:8848 10.133.1.3:8849 10.133.1.3:8850 复制代码
Nacos的默认端口号是 8848
,我们修改完上面的配置信息后,复制三份Nacos安装包,将其中两份安装包中的 conf/application.properties
文件中的中的 server.port=8848
分别改为:
server.port=8849 server.port=8850 复制代码
这样用端口号模拟的三个节点就准备完成了
启动命令(在没有参数模式,是集群模式):
# 进入目录 cd Nacos/bin # 启动 sh startup.sh 复制代码
为Nginx增加nacos的配置文件,创建一个新的配置文件,命名为 nacos.conf
,内容如下,在主配置文件 nginx.conf
里面使用 include
的方式引入该配置文件即可:
upstream nacos-server { server 127.0.0.1:8848; server 127.0.0.1:8849; server 127.0.0.1:8850; } 复制代码
server { listen 80; // 此处可以替换为自己生产给Nacos配置的域名 server_name nacos.hughpro.com; location /nacos/ { proxy_pass http://nacos-server/nacos/; } } 复制代码
include命令,打开主配置文件 nginx.conf
,假设 nacos.conf
放置在 /usr/local/nacos/conf/vhost/nacos.conf
目录:
…… http{ …… include /usr/local/nacos/conf/vhost/nacos.conf; } 复制代码
Nginx的高可用搭建请参考官网:https://docs.nginx.com/nginx/admin-guide/high-availability/ha-keepalived/
访问 http://nacos.hughpro.com/nacos
可看到Nacos的登录页,登录后即可正常使用Nacos。
spring: cloud: nacos: discovery: server-addr: nacos.hughpro.com 复制代码
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
https://nacos.io/zh-cn/docs/quick-start.html
https://github.com/alibaba/nacos/blob/master/distribution/conf/application.properties