Nacos 学习笔记2 - 搭建 Nacos 集群

2021-12-06 17:00:31 浏览数 (1)

1. 背景

生产环境中往往采用集群的方式保证Nacos的高可用,本文记录了搭建的过程。

Nacos集群的搭建时要注意:1.xx 版本和 2.xx 版本有区别。从2.0开始Nacos使用了 gRPC ,需要开放额外的端口。我就遇到了 各个 Nacos 节点无法互相复制,注册的服务不一致的情况。

2. 安装Nacos

集群模式部署 这个快速开始手册是帮忙您快速在你的电脑上,下载安装并使用Nacos,部署生产使用的集群模式。

集群部署架构图

image.png

因此开源的时候推荐用户把所有服务列表放到一个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 ,命令如下:

代码语言:javascript复制
vi cluster.conf

内容如下:

代码语言:javascript复制
# 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

代码语言:javascript复制
sh startup.sh -m standalone

(2) 集群模式

代码语言:javascript复制
sh startup.sh

6. 配置 Nginx 代理

编辑文件nginx.conf, 命令:

代码语言:javascript复制
$ cd /usr/local/nginx/conf
$ vi nginx.conf

内容修改:

代码语言:javascript复制
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 文件,内容如下:

代码语言:javascript复制
#!/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 文件的尾部加上下面的内容即可。

代码语言:javascript复制
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集群 服务列表不一致&spm=1000.2123.3001.4430

0 人点赞