1. 背景
生产环境中往往采用集群的方式保证Nacos的高可用,本文记录了搭建的过程。
Nacos集群的搭建时要注意:1.xx 版本和 2.xx 版本有区别。从2.0开始Nacos使用了 gRPC ,需要开放额外的端口。我就遇到了 各个 Nacos 节点无法互相复制,注册的服务不一致的情况。
2. 安装Nacos
集群模式部署
这个快速开始手册是帮忙您快速在你的电脑上,下载安装并使用Nacos,部署生产使用的集群模式。
集群部署架构图
因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面
http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。
http://SLB:port/openAPI 挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。
http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式
2.1. 预备环境准备
请确保是在环境中安装使用:
64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
64 bit JDK 1.8+;下载.配置。
Maven 3.2.x+;下载.配置。
3个或3个以上Nacos节点才能构成集群。
2.2. 下载安装包
下载编译后压缩包方式
unzip nacos-server-1.3.0.zip 或者 tar -xvf nacos-server-1.3.0.tar.gz
cd nacos/bin
2.3. 配置集群配置文件
在nacos的解压目录nacos/的conf目录下,有配置文件 cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)
修改 cluster.conf ,命令如下:
vi cluster.conf
内容如下:
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848
2.4. 确定数据源
使用外置数据源
生产使用建议至少主备模式,或者采用高可用数据库。
(1) 初始化 MySQL 数据库
● 进入nacos/conf目录,找到nacos-mysql.sql。
● 登入数据库,创建一个新的数据库,比如叫做 nacos_config。
● 并在 mysql 中执行刚刚的找到的 nacos-mysql.sql 文件的语句来创建表。
(2) application.properties 配置
修改 application.properties配置文件中的数据源描述
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://ip:3306/nacos_config?characterEncoding=u
tf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=root
db.password=数据库密码
2.5. 启动服务器
在 Linux/Unix/Mac 下安装
(1) 单机模式 Stand-alone mode
sh startup.sh -m standalone
(2) 集群模式
sh startup.sh
6. 配置 Nginx 代理
编辑文件nginx.conf, 命令:
$ cd /usr/local/nginx/conf
$ vi nginx.conf
内容修改:
upstream serverList {
server 172.17.0.112:8847;
server 172.17.0.111:8847;
server 172.17.0.110:8847;
}
server {
location / {
proxy_pass http://serverList;
}
}
3. Nacos 开机自启的设置
编辑一个服务文件
命名为 start-nacos.sh 文件,内容如下:
#!/bin/bash
export JAVA_HOME=/opt/data/jdk1.8/jdk1.8.0_161
nohup nacos_home/bin/startup.sh -m standalone &
在操作系统启动后 /etc/profile 还未加载,所以这里要先 设置 JAVA_HOME 的环境变量,改成你实际的java jdk 路径。 然后正常启动 nacos 即可。
在 /etc/rc.local 文件的尾部加上下面的内容即可。
sh start-nacos.sh
4. Nacos 2.0.0 和 1.x 的区别
注意 开放gRPC端口
Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。
端口 | 与主端口的偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。
5.参考
https://nacos.io/zh-cn/docs/2.0.0-compatibility.html
https://blog.csdn.net/lzzyok/article/details/118057217?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_aggregation-1-118057217.pc_agg_rank_aggregation&utm_term=nacos%E9%9B%86%E7%BE%A4+%E6%9C%8D%E5%8A%A1%E5%88%97%E8%A1%A8%E4%B8%8D%E4%B8%80%E8%87%B4&spm=1000.2123.3001.4430