目录

1.前言

在前面学习在基于SpringCloud构建的微服务项目中,​​Eureka​​​担任注册中心,实现服务的注册与发现,这样的组合在第一代SpringCloud微服务中使用还是很多的,后来国内某Bat公司基于​​SpringCloud​​​的拓展,延伸了自身的一些微服务组件,由此兴起了第二代微服务Spring Cloud Alibaba,其中某些组件还是相率相当高的,就比如​​nacos​​​,​​nacos​​​集注册中心与配置中心于一体,极大的摆脱了在第一代微服务中使用​​Spring Cloud Config​​​需结合​​Spring Cloud Bus​​消息总线才能动态刷新配置文件的问题,而且配置文件需存储在Git版本控制库,这点太繁琐,而Nacos自带控制台界面,可动态的操作配置,登录到后台界面,管理起来非常方便。

2.Eureka与Nacos集群区别

总所周知,​​Eureka​​​的核心是去中心化,就是当Eureka Server服务需要做集群时,​​Eureka Server​​​ 之间相互注册,有几台就相互注册几台,可用八个字: “你中有我,我中有你” 来理解,那么中心化就是说多台集群节点中有一个老大,去中心化就没有老大,人人都是老大,人人平等,多台节点间平级。​​nacos​​多台节点做集群时,需要有一个master节点,因此是存在选举的过程。

3.案例

假设我们的项目环境部署如下,客户端先通过访问​​Nginx​​​,然后​​Nginx​​​经过​​nacos​​​,然后再到下面的具体子服务再到缓存最后到​​DB​​​,​​Nginx​​​这里假设只有一台,那么思考下3台​​nacos​​节点如何做集群?

《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_微服务

4.Nacos集群部署搭建

提示:

​Nacos​​​的集群部署是在nacos-server提供的​​cluster.conf​​​配置文件中配置集群节点的IP+Port
地址,多个节点写入多个​​​IP+Port​​​地址即可,本身​​cluster.conf​​就是提供需要集群部署的场景,可以说是非常的简单,这里需要强调一点,集群节点的IP地址一定要是内网的IP。

4.1.修改cluster.conf名称

这里我们先找到​​nacos-server​​​安装包的位置,找到目录下的​​cluster.config.example​​​文件,并且修改名称为​​cluster.conf​​​:
《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_spring_02

4.2.编辑集群节点配置

打开​​cluster.conf​​文件,默认内容如下:

#it is ip
#example
10.10.109.214
11.16.128.34
11.16.128.36

这里假设3台​​nacos​​分别为:192.168.1.6:8848、192.168.1.6:8849、192.168.1.6:8850,将上述默认的配置替换为下面配置:

192.168.1.6:8848
192.168.1.6:8849
192.168.1.6:8850

此处:192.168.1.6为内网IP,本地搭建集群环境地址不能写127.0.0.1,切记

《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_微服务_03
然后将​​​nacos-server​​​复制3份,分别修改其中​​application.properties​​​文件的端口号为​​8848​​​、​​8849​​​、​​8850​​​:
《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_nginx_04

5.修改本地Hosts文件

找到目录: ​​C:\Windows\System32\drivers\etc​​​下面的​​hosts​​​文件,加入:
《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_微服务_05

6.配置Nginx

找到Nginx的安装目录,配置nginx.config文件,配置通过访问域名:​​www.brucenacos.com​​​自动轮询到3台nacos节点
《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_spring_06
修改配置​​​nginx.config​​配置如下

#user  nobody;
worker_processes 1;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;


sendfile on;

keepalive_timeout 65;

upstream brucenacos{
server 192.168.1.6:8848;
server 192.168.1.6:8849;
server 192.168.1.6:8850;
}

server {
listen 80;
server_name www.brucenacos.com;

location /nacos/ {
proxy_pass http://brucenacos/nacos/;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

双击启动​​nginx.exe​​​,访问​​http://www.brucenacos.com/​​​ 出现如下界面说明nginx配置OK,启动成功。
《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_nginx_07

7.集群模式启动nacos

注意: 在Windwos环境下,默认是以单例启动的,如果nacos做了集群节点配置,不能够使用默认的启动方式双击startup.cmd,这种方式默认是单例启动的,不是以集群节点方式启动,所以启动nacos-8848、nacos-8849、nacos-8850这三台节点是,以以下命令启动:

startup.cmd -m cluster

从控制台启动可以看出,是以集群模式启动​​nacos-8848​​​《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_微服务_08
从控制台启动可以看出,是以集群模式启动​​nacos-8849​《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_微服务_09
从控制台启动可以看出,是以集群模式启动​​nacos-8850​《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_微服务_10
访问Nginx: ​​http://www.brucenacos.com/nacos/​《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_spring_11

8.小结

总结1: 发现存在一个​​LEADER​​​和两个​​FOLLOWER​​​节点,也就意味着当其中一台挂掉了之后,会重新有一个选举的过程,选出适合的​​LEADER​​节点;

总结2: 集群环境下,在​​SpringCloud​​​微服务项目中,服务注册无需变动,只需注册单个​​nacos​​即可,当一个服务注册到某台节点上去了之后,会自动同步到其他节点,其底层通过Raft算法去实现保持数据的一致性问题。

总结3:

nacos在windows版本下运行默认是单机模式,集群运行需要指定执行命令:​​startup.cmd -m cluster​

nacos在linux版本下运行默认是集群模式,如果想以单机启动,需要指定执行命令: ​​startup.cmd –m standalone​

注意: 无需用逗号隔开多个注册地址,只需注册一个即可;
《SpringCloud Alibaba 微服务架构》专题(八)-Spring Cloud Alibaba之Nacos高可用集群环境搭建_spring_12