Spring Cloud Alibaba组件之--搭建生产可用的Nacos集群

2,213 阅读4分钟

一、前言

1、本文主要内容

​ 单机版的Nacos Server,安装非常简单,但一般不适用于生产,本文主要介绍下如何搭建生产可用的Nacos集群。

  • 使用Mysql存储持久化数据;
  • 如何搭建Nacos集群;

2、Nacos介绍

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

具体介绍可查看官网:https://nacos.io/zh-cn/docs/what-is-nacos.html

3、本篇环境信息

  • 服务器

    操作系统 硬件配置 IP 说明
    CentOS 7 4C16G 10.133.1.3 安装Nacos

    Tips:3个或3个以上Nacos节点才能构成集群,正常应该用三台服务器来搭建,本文使用一台服务器,三个端口号来实现。

  • 软件

    工具/环境 版本
    Nacos 1.1.4
    Mysql 5.7+
    Nginx 1.6.3

二、准备工作

1、安装Mysql

具体安装过程不在展开了,生产环境肯定是需要高可用的数据库来支撑。

2、下载Nacos

可以在https://github.com/alibaba/nacos/releases获取到最新稳定的版本。目前有两种格式tar.gz或者zip

# 下载完成后,通过如下命令解压
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin 

3、主机节点规划

节点 端口
10.133.1.3 8848
10.133.1.3 8849
10.133.1.3 8850

Tips:3个或3个以上Nacos节点才能构成集群,正常应该用三台服务器来搭建,本文使用一台服务器,三个端口号来实现。实际项目中,需要将Nacos的节点部署在不同机器中,从而实现更好的容灾与隔离。

4、开放对应端口号

#开放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来实现负载均衡的功能,由于使用集群所以建议使用域名进行绑定,这样后期就算更换服务器也无需调整代码,下面是官方的集群架构图:

1、初始化 MySQL 数据库

进入Nacos/conf目录,可以找到 nacos-mysql.sql ,将其导入到Mysql数据库中。

2、配置Nacos数据库连接

同样,进入Nacos/conf目录,可以找到application.properties,打开并编辑:

# 使用Mysql作为存储
spring.datasource.platform=mysql

有几个数据库实例



db.num=2



第1个实例的地址



db.url.0=jdbc:mysql://192.168.1.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true



第2个实例的地址



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

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

1、生产环境Mysql至少要一主一从,所以要配置两个节点;

2、这个配置文件还有很多配置项,具体可以查看官网配置示例:https://github.com/alibaba/nacos/blob/master/distribution/conf/application.properties

3、配置集群配置文件

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

4、修改端口号

Nacos的默认端口号是8848,我们修改完上面的配置信息后,复制三份Nacos安装包,将其中两份安装包中的conf/application.properties 文件中的中的server.port=8848分别改为:

server.port=8849
server.port=8850

这样用端口号模拟的三个节点就准备完成了

5、启动Nacos

启动命令(在没有参数模式,是集群模式):

# 进入目录
cd Nacos/bin
# 启动
sh startup.sh

6、配置Nginx

为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/;
}
}

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/

7、访问

访问 http://nacos.hughpro.com/nacos 可看到Nacos的登录页,登录后即可正常使用Nacos。

8、Spring Cloud Alibaba 连接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

有任何问题欢迎关注公众号【Hugh的白板】私信我,一起探讨,一起学习