单机版的Nacos Server,安装非常简单,但一般不适用于生产,本文主要介绍下如何搭建生产可用的Nacos集群。
使用Mysql存储持久化数据;
如何搭建Nacos集群;
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
具体介绍可查看官网:https://nacos.io/zh-cn/docs/what-is-nacos.html
服务器
| 操作系统 | 硬件配置 | IP | 说明 |
|---|---|---|---|
| CentOS 7 | 4C16G | 10.133.1.3 | 安装Nacos |
Tips:3个或3个以上Nacos节点才能构成集群,正常应该用三台服务器来搭建,本文使用一台服务器,三个端口号来实现。
软件
| 工具/环境 | 版本 |
|---|---|
| Nacos | 1.1.4 |
| Mysql | 5.7+ |
| Nginx | 1.6.3 |
具体安装过程不在展开了,生产环境肯定是需要高可用的数据库来支撑。
可以在https://github.com/alibaba/nacos/releases获取到最新稳定的版本。目前有两种格式 tar.gz 或者 zip
# 下载完成后,通过如下命令解压 unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin 复制代码
| 节点 | 端口 |
|---|---|
| 10.133.1.3 | 8848 |
| 10.133.1.3 | 8849 |
| 10.133.1.3 | 8850 |
Tips:3个或3个以上Nacos节点才能构成集群,正常应该用三台服务器来搭建,本文使用一台服务器,三个端口号来实现。实际项目中,需要将Nacos的节点部署在不同机器中,从而实现更好的容灾与隔离。
#开放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来实现负载均衡的功能,由于使用集群所以建议使用域名进行绑定,这样后期就算更换服务器也无需调整代码,下面是官方的集群架构图:
进入 Nacos/conf 目录,可以找到 nacos-mysql.sql ,将其导入到Mysql数据库中。
同样,进入 Nacos/conf 目录,可以找到 application.properties ,打开并编辑:
# 使用Mysql作为存储 spring.datasource.platform=mysql
db.num=2
db.url.0=jdbc:mysql://192.168.1.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
复制代码
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 <span>复制代码</span>
1、生产环境Mysql至少要一主一从,所以要配置两个节点; 2、这个配置文件还有很多配置项,具体可以查看官网配置示例:https://github.com/alibaba/nacos/blob/master/distribution/conf/application.properties
在 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 复制代码
Nacos的默认端口号是 8848 ,我们修改完上面的配置信息后,复制三份Nacos安装包,将其中两份安装包中的 conf/application.properties 文件中的中的 server.port=8848 分别改为:
server.port=8849 server.port=8850 复制代码
这样用端口号模拟的三个节点就准备完成了
启动命令(在没有参数模式,是集群模式):
# 进入目录 cd Nacos/bin # 启动 sh startup.sh 复制代码
为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/; } } 复制代码
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/
访问 http://nacos.hughpro.com/nacos 可看到Nacos的登录页,登录后即可正常使用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