作者:阿里云 MVP郦强
1、集群部署
相比较 Nacos 的单机部署方式(第一篇文章中有介绍),集群部署方式稍显麻烦一些,当然为了用于生产环境,必须确保 Nacos 的高可用性,所以还是有必要使用集群部署。
准备环境跟第一篇文章中说的相同,额外的要求就是 Nacos 需要 3个或3个以上Nacos节点才能构成集群,而且要使用 MySQL 作为数据源,主要用于服务配置的数据持久化。
下图是官方推荐的集群方案,通过域名 + VIP模式的方式来实现,我的理解VIP模式就用 Nginx 就行,用它来负载多个 Nacos 节点 IP,外部客户端直接通过域名访问就可,不仅可读性好,而且更换 IP 方便,最为推荐采用。
官方集群方案图
2、添加集群配置文件
nacos的conf目录下有配置文件cluster.conf,请每行配置成ip:port
如果您只有一台机器,可以创建3个或3个以上的Nacos文件夹,改一下端口号,也可以实现
cluster.conf配置
3、配置MySQL数据库
Nacos 推荐生产环境中数据库使用建议至少主备模式,或者采用高可用数据库。
这里为了简化只采用了一个数据库,首先创建一个名为 nacos_config 的数据库,然后找到nacos/conf下的 nacos-mysql.sql 文件执行即可。
nacos_config数据库
在nacos的conf目录下的application.properties,添加以下配置
application.properties配置
4、启动Nacos集群模式
在没有参数模式,是集群模式
sh startup.sh
输出信息看start.out,如果最后提示: INFO Nacos started successfully in cluster mode.这样就表示集群模式启动成功,然后打开任何一个Nacos控制台都能看到节点列表
集群节点列表
可以从上面看到,集群下的 Nacos 节点状态分为LEADER 和 FOLLOWER 两种,跟我们熟悉的主从架构相似。如果您想简单的话,推荐使用阿里云的MSE,3分钟帮您搞定Nacos集群模式
MSE的Nacos集群模式
5、Nginx配置
我是Mac电脑,所以使用brew的方式安装Nginx,然后在Nginx中进行配置
Nginx中的配置
注意:server_name 就是 直接改成域名就行。
然后Nginx -s reload 重新加载配置后即可,我把nacos官方Spring Cloud Nacos Example的示例打开,Provider和Consumer两个项目中的application.properties文件的nacos server地址都改成了 Nginx中配置的server_name。
指定nacos的server地址
启动项目,就可以在nacos集群的任何一个节点的服务管理列表中看到里面已经有服务注册成功了
服务列表页
然后在浏览器中输入 http://localhost:8080/echo/强哥 ,看到返回 Hello Nacos Discovery 强哥,这样就表示成功了,其实这个Example就是微服务和微服务之间的调用,所有nacos示例代码下载
执行Consumer服务,成功请求到Provider服务
6、总结
如果是开发环境建议单节点就行了,测试和生产环境用集群模式,而且MySQL数据库也建议使用阿里云的RDS服务,主从架构。下一篇我们将介绍 几个主流微服务框架配置中心产品比较 Spring Cloud Config、阿里云ACM、Nacos等。
首发简书。