一、前言
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的白板】私信我,一起探讨,一起学习