Spring Cloud Alibaba之nacos 集群搭建
什么是 Nacos
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
nacos是ali开源的微服务注册中心,其实也是配置中心,详细说明参见:https://nacos.io/zh-cn/docs/what-is-nacos.html。
一 nacos下载,当前最稳定版本。
源码下载地址:https://github.com/alibaba/nacos/releases
百度云提取地址:(安排)
链接:https://pan.baidu.com/s/1Nbdq54w6_FZanSj5sICD1w
提取码:1122
由于nacos是用java开发的,运行时需要JRE环境,配置JDK略。
二 使用mysql 作为注册中心的数据持久化
下载好nacos server后,解压可以发现文件目录如下:
这里我们使用mysql做为nacos数据持久化的数据源。
创建nacos集群使用的mysql数据库
三 集群配置
由于我们是要使用集群的方式来使用nacos,注意:nacos是默认以集群的方式启动的。
1 修改 /conf/application.properties
2 添加集群配置 在你需要启动的nacos的conf/ 添加 cluster.conf 将需要启动的节点的信息添加进来,ip:port的方式或者域名的方式也可
3 修改节点启动的环境变量。
通过查看启动脚本发现,cluster 方式启动时,nacos占用的内存为 2g,可以修改得比较小一些,方便测试。这里修改为跟standalone 一样的配置启动。方便测试。
centos启动方式:
在终端执行 : 到/bin目录下,分别启动nacos_1/nacos_2/nacos_3 服务,直接执行 ./startup.sh
windows启动方式:
四 集群的正确使用方式
1 访问nacos后台查看。
2 cloud微服务项目连接Nacos集群
##指定当前服务端口号 #server: # port: 10020 spring: application: #指定当前服务名字 name: app-login cloud: nacos: #连接Nacos集群 server-addr: 127.0.0.1:8818,127.0.0.1:8828,127.0.0.1:8838 # discovery: # # nacos服务端位置(注册中心服务端地址的实际使用) # server-addr: ${spring.cloud.nacos.server-addr} config: # server-addr: ${spring.cloud.nacos.server-addr} file-extension: yml
这种方式最大的问题是,当注册中心有新的节点上线后,修改起来很麻烦,所以可以使用nginx 做负载均衡,方便后续节点的扩展。
3.使用nginx做为前置负载均衡来连接nacos 集群
nginx的配置为:
1 server { 2 listen 80; 3 listen [::]:80; 4 server_name localhost; 5 location / { 6 root /usr/share/nginx/html; 7 index index.html index.htm; 8 } 9 10 error_page 500 502 503 504 /50x.html; 11 location = /50x.html { 12 root /usr/share/nginx/html; 13 } 14 15 } 16 upstream cluster{ 17 server 127.0.0.1:8818; 18 server 127.0.0.1:8828; 19 server 127.0.0.1:8838; 20 } 21 22 server { 23 listen 8848; 24 server_name localhost; 25 #charset koi8-r; 26 27 #access_log logs/host.access.log main; 28 29 location / { 30 # root html; 31 # index index.html index.htm; 32 proxy_pass http://cluster; 33 } 34 }
这时springcloud 的连接配置可以直接更改为:
1 ##指定当前服务端口号 2 #server: 3 # port: 10020 4 spring: 5 application: 6 #指定当前服务名字 7 name: app-name 8 cloud: 9 nacos: 10 #更改为nginx端口 11 server-addr: 127.0.0.1:8848 12 config: 13 file-extension: yml