Nacos集群部署-详细篇

目录

    • 一、官网说明:
    • 二、单机模式:
      • Windows单机模式:
      • Linux/Unix/Mac单机模式:
      • 单机模式支持mysql:
    • 三、集群部署:
      • 1. 预备环境准备:
      • 2.下载源码或者安装包:
      • 3. 完整案例演示:
        • 3.1 Nacos下载解压:
        • 3.2 linux安装mysql:
        • 3.3 linux启动mysql服务:
      • 4. 确定数据源:
      • 5. 配置集群配置文件:
      • 6. 启动三台 linux主机的nacos服务器:
      • 7. 访问测试:
      • 8. 踩坑解决方案:
    • 四、伪集群部署:
    • 五、nginx做负载均衡:

一、官网说明:

官网链接: https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html.

部署手册:https://nacos.io/zh-cn/docs/deployment.html.

集群架构:
Nacos集群部署-详细篇_第1张图片
官网图说明:vip:虚拟映射ip
Nacos集群部署-详细篇_第2张图片

高可用 Nginx 集群
Nacos 集群(至少三个实例)
高可用数据库集群(取代 Nacos 内嵌数据库)

环境要求:

请确保是在环境中安装使用:

  • 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
  • 64 bit JDK 1.8+;下载.配置。
  • Maven 3.2.x+;下载.配置。
  • 3个或3个以上Nacos节点才能构成集群。

默认的Nacos使用嵌入式数据库实现数据的存储,所以启动多个默认配置下的Nacos节点,数据存储存在一致性的问题,为了解决这个问题,Nacos采用了集中存储的方式来支持集群化部署,目前只支持Mysql的存储(5.6.5+)

Nacos支持三种部署模式:

  • 单机模式 - 用于测试和单机试用。

  • 集群模式 - 用于生产环境,确保高可用。

  • 多集群模式 - 用于多数据中心场景。

二、单机模式:

单机模式支持mysql

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

1.安装数据库,版本要求:5.6.5+
2.初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

Windows单机模式:

(1)Windows版下载Nacos:
nocos官网下载:https://nacos.io/zh-cn/index.html

Nacos集群部署-详细篇_第3张图片

到了下载页面拉到页面最底下进行下载:
Nacos集群部署-详细篇_第4张图片
(2)Windows版下解压安装Nacos:
使用我们的Windows的解压工具将nacos的zip文件进行解压。(这里解压就可以运行了,免安装的)

(3)windows单机模式下运行Nacos:
在任意目录解压后的文件内,找到nacos的bin目录,然后输入cmd:
Nacos集群部署-详细篇_第5张图片

Windows单机运行命令:

startup.cmd -m standalone

如图所示表示启动成功:
Nacos集群部署-详细篇_第6张图片
Nacos集群部署-详细篇_第7张图片
这样我们的nacos单机模式就正常启动了,我们就可以在项目中引入nacos的pom和使用它了。这里不再介绍使用项目。

Linux/Unix/Mac单机模式:

(1)Linux版下载Nacos:

Nacos集群部署-详细篇_第8张图片

(2)Linux版下解压安装Nacos:
(2.1)打开虚拟机,使用xftp上传到linux并解压:
将我们的tar压缩包直接上传到/usr/local 文件夹下,
然后切换到nacos压缩包所在的目录:

cd /usr/local

(2.2)然后使用命令去解压:

tar -zxvf nacos-server-1.4.2.tar.gz

解压后有一个nacos文件夹,如果不是文件夹不是nacos名字,则使用命令改成nacos;

(3)linux单机启动:
解压完毕后,我们可以在local文件夹看到一个解压后的nacos文件夹,然后我们进入bin目录:

cd /usr/local/nacos/bin
ll
sh startup.sh -m standalone
查看启动日志:cat /usr/local/nacos/logs/start.out

如下图表示启动成功:
Nacos集群部署-详细篇_第9张图片

单机模式支持mysql:

在这里插入图片描述

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

不论是windows还是linux都有自带的数据库初始化文件:nacos-mysql.sql ,和conf/application.properties文件,我们分别修改他们自带的即可。

1.安装数据库,版本要求:5.6.5+
mysql8.0.22安装请参考:https://blog.csdn.net/weixin_38568503/article/details/120636556.

#以下两个配置请往下拉,找配置。
2.初始化mysql数据库,数据库初始化文件:nacos-mysql.sql

3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql

三、集群部署:

Nacos集群部署-详细篇_第10张图片

Nacos集群部署-详细篇_第11张图片

1. 预备环境准备:

请确保是在环境中安装使用:

  • 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
  • 64 bit JDK 1.8+;下载.配置。
  • Maven 3.2.x+;下载.配置。
  • 3个或3个以上Nacos节点才能构成集群。

linux安装maven: 需要先安装maven环境:

先测试本机linux有没有安装maven : mvn -v
链接: https://blog.csdn.net/weixin_38568503/article/details/120639472.

Linux安装JDK::
链接: https://blog.csdn.net/weixin_38568503/article/details/120234708.

Linux安装mysql8.0.xx:
链接: https://blog.csdn.net/weixin_38568503/article/details/120636556.

2.下载源码或者安装包:

你可以通过两种方式来获取 Nacos:

方式一:从 Github 上下载源码方式:

unzip nacos-source.zip
cd nacos/
mvn -Prelease-nacos clean install -U  
cd nacos/distribution/target/nacos-server-1.3.0/nacos/bin

方式二:下载压缩包方式:
官网下载:gz是linux版本,zip是windows版本。
Nacos集群部署-详细篇_第12张图片

解压方式:

#解压方式
unzip nacos-server-1.3.0.zip 或者 tar -xvf nacos-server-1.3.0.tar.gz
#进入运行目录
  cd nacos/bin

3. 完整案例演示:

3.1 Nacos下载解压:

这里 下载nacos-server-1.4.2.tar.gz

(1)百度nacos官网,然后下载linun版本的nacos(生产环境的集群部署都在linux机器上)

(2)打开虚拟机,上传到linux并解压:
将我们的tar压缩包直接上传到/usr/local 文件夹下,
然后切换到nacos压缩包所在的目录:

cd /usr/local

然后使用命令去解压:

tar -zxvf nacos-server-1.4.2.tar.gz

解压完毕后,我们可以在local文件夹看到一个解压后的nacos文件夹,然后我们进入配置文件:

cd /usr/local/nacos/conf
ll

(3)初始化 nacos 必须的数据库表并配置:

找到 Nacos 安装目录下提供的数据库脚本文件:
Nacos集群部署-详细篇_第13张图片

3.2 linux安装mysql:

mysql8.0.22安装请参考:https://blog.csdn.net/weixin_38568503/article/details/120636556.

(1)官网下载mysql指导:
Nacos集群部署-详细篇_第14张图片

(2) 解压说明:解压命令: tar.xz:tar xvJf ***.tar.xz
比如:tar xvJf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz

(3) 解压并按照上面链接教程安装mysql.

3.3 linux启动mysql服务:

使用外置数据源
生产使用建议至少主备模式,或者采用高可用数据库。

(1) 安装完成后,先启动运行linux版本的mysql:

systemctl start mysqld.service
或者:service mysql start
会提示启动成功

mysql常用命令:

查看mysql进程:ps aux |grep mysqld

杀掉mysql进程:kill -9 进程号

查看MySQL服务是否启动:systemctl status mysql

停止服务:service mysql stop

重启mysql:service mysql restart

(2)连接数据库:

mysql -uroot -p
然后输入密码

(3)创建并使用数据库:

创建数据库:create database nacos_config;
显示数据库:mysql> show databases;
使用数据库:mysql> use nacos_config;

(4)执行sql脚本:即初始化 MySQL 数据库

mysql> source /usr/local/nacos/conf/nacos-mysql.sql
还有一个更好的方法:
使用navicat来连接linux下的mysql数据库
然后再navicat中运行sql文件!

(5)然后查看所有的表:

show tables;

Nacos集群部署-详细篇_第15张图片
打开config_info表,会发现目前为空。
exit命令退出mysql;

4. 确定数据源:

使用内置数据源,无需进行任何配置

使用外置数据源,生产使用建议至少主备模式,或者采用高可用数据库。

application.properties 配置:即数据源的配置项

1.拷贝文件作为备份使用:
进入配置文件目录,找到cluster.conf文件和application.properties文件,并拷贝

cd  /usr/local/nacos/conf

cp cluster.conf.example cluster.conf  
cp application.properties application.properties.bk

2.application.properties 配置:
Nacos集群部署-详细篇_第16张图片

在文件的最后,写明nacos集群需要使用的数据库地址,以及账号密码:,要拉到文件的最后去添加:

application.properties文件中进行数据库的配置:

vim application.properties

# 指定数据源为 MySQL
spring.datasource.platform=mysql

### Count of DB:
# 数据库实例数量
db.num=1

# 数据库连接信息,如果是 MySQL 8.0+ 版本需要添加 serverTimezone=Asia/Shanghai
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user=root
db.password=root

5. 配置集群配置文件:

1、查看linux的ip信息:

先分别在自己的三台linux主机上查看自己的linux主机ip:使用命令ifconfig
Nacos集群部署-详细篇_第17张图片
我的三台linux主机的ip为:192.168.211.202 192.168.211.203 192.168.211.204

2、在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点):

然后 在cluster.conf文件中进行集群环境配置:

vim cluster.conf

内容如下:将其他没用的删掉或者注释掉。注意三台linux机器的nacos都要配置cluster.conf成如下:

192.168.211.202:8848
192.168.211.203:8848
192.168.211.204:8848

6. 启动三台 linux主机的nacos服务器:

Nacos集群部署-详细篇_第18张图片

分别启动三个nacos的指令:

cd  /usr/local/nacos/conf
cd ../bin
ls
cp startup.sh  startup.sh.bk 

//集群启动命令:
sh startup.sh

7. 访问测试:

三个linux主机的nacos启动后,分别在windows电脑网页访问:

http://192.168.211.202:8848/nacos
http://192.168.211.203:8848/nacos
http://192.168.211.204:8848/nacos

访问地址: http://您的主机IP:8848/nacos
默认账户:nacos
默认密码:nacos

Nacos集群部署-详细篇_第19张图片
Nacos集群部署-详细篇_第20张图片
Nacos集群部署-详细篇_第21张图片

8. 踩坑解决方案:

启动有问题可以使用此命令查看启动日志:

cat /usr/local/nacos/logs/start.out

遇到问题;java.sql.SQLNonTransientConnectionException:无法创建数据库服务器连接。 尝试重新连接3次。 放弃。

一般情况下我们的每一台linux主机安装并初始化了数据库后就没有问题,那只能是连接配置信息出现问题,发现我的linux主机上安装了nacos服务,同时也安装了mysql数据库,这样我们的url一定要写127.0.0.1而不能写linux端口号。

在这里插入图片描述

四、伪集群部署:

在本地配置多个nacos实例(伪集群),一般就是配置多个nacos端口,并启动多个startup.sh脚本。网上一些博客通过修改startup.sh脚本来指定不同nacos端口,比如:./startup.sh -p 3333,但是这种方式启动,nacos版本应该是1.2.x以前的版本号

而在nacos-1.4.x后的版本中,startup.sh脚本中已经对参数 p 有了自己的定义:
Nacos集群部署-详细篇_第22张图片

方案:启动一个linux机器,然后在这个机器上布置三个nacos服务(复制出来三分nacos文件夹),来实现伪集群。这里是一个linux机器的ip和三个不同的nacos端口。

复制nacos之前的准备工作:建库/导表:(如果已经有表了,则不需要创建了):

第1步:先启动mysql服务:进入数据库:

service mysql start

mysql -uroot -p
然后输入密码即可

第2步:然后创建相应的数据库和表:

mysql> create database nacos_config;
mysql> use nacos_config;
mysql> source /usr/local/nacos/conf/nacos-mysql.sql
Query OK, 0 rows affected (0.01 sec)
...
mysql> show tables;
+------------------------+
| Tables_in_nacos_config |
+------------------------+
| config_info            |
| config_info_aggr       |
| config_info_beta       |
| config_info_tag        |
| config_tags_relation   |
| group_capacity         |
| his_config_info        |
| roles                  |
| tenant_capacity        |
| tenant_info            |
| users                  |
+------------------------+
11 rows in set (0.00 sec)
#退出mysql输入exit回车即可.

第3步:配置数据库:因为我们的数据库在我们的本地linux机器上,所以用127.0.0.1

vim /usr/local/nacos/conf/application.properties

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user=root
db.password=root

注意:在本地启动多个实例时候,一定要查看nacos所分配的内存大小,不然启动要么非常慢,要么会失败,所以我们提前修改如下启动项配置:

cd /usr/local/nacos/bin
vim startup.sh

Nacos集群部署-详细篇_第23张图片

复制出三份nacos实例副本:
第4步:在linux中拷贝三份nacos

cd /usr/local
cp -r nacos nacos1
cp -r nacos nacos2

第5步:分别修改它们的端口,三个端口号:8848,8858,8868,将server.port=进行修改成需要的

cd /usr/local/nacos/conf
vim application.properties

cd /usr/local/nacos1/conf
vim application.properties

cd /usr/local/nacos2/conf
vim application.properties

第6步:每个nacos的cluster.conf都写上它们的 ip+端口信息

cd /usr/local/nacos/conf
cp cluster.conf.example cluster.conf
vim cluster.conf

cluster.conf配置文件内容如下:192.168.211.205为我启动的那台linux的ip地址

192.168.211.205:8848
192.168.211.205.8858
192.168.211.205.8868

第7步:分别启动每台 Nacos Server:

cd /usr/local/nacos/bin
./startup.sh
cd /usr/local/nacos1/bin
./startup.sh
cd /usr/local/nacos2/bin
./startup.sh
#如果不能访问网页,请查看启动日志:
cat /usr/local/nacos/logs/start.out

第7步:网页访问测试:
注意关闭linux防火墙

widows浏览器访问地址:

http://192.168.211.205:8848/nacos
http://192.168.211.205:8858/nacos
http://192.168.211.205:8868/nacos

如果是在linux机器上网页访问,则使用:

localhost:8848/nacos
localhost:8858/nacos
localhost:8868/nacos

测试成功如下:
Nacos集群部署-详细篇_第24张图片

Nacos集群部署-详细篇_第25张图片
Nacos集群部署-详细篇_第26张图片

五、nginx做负载均衡:

Nacos集群部署-详细篇_第27张图片

nginx教程请参考链接: https://blog.csdn.net/qq_41974199/article/details/108832665.

cd /nginx-1.18.0/conf
cp nginx.conf nginx.conf.bk
vim nginx.conf

修改内容如下:
Nacos集群部署-详细篇_第28张图片

启动nginx:

cd /usr/local/nginx/sbin/
ll
./nginx -c /nginx-1.18.0/conf/nginx.conf
ps -ef|grep nginx

然后我们要启动三台nacos和nginx,测试成功:
Nacos集群部署-详细篇_第29张图片

新建一个配置测试:

Nacos集群部署-详细篇_第30张图片

Nacos集群部署-详细篇_第31张图片

mysql -uroot -p
show databases;
use nacos_config;
show tables;
select * from config_info;

文件同步了,成功:
Nacos集群部署-详细篇_第32张图片

微服务测试:
在这里插入图片描述
Nacos集群部署-详细篇_第33张图片

Nacos集群部署-详细篇_第34张图片

Nacos集群部署-详细篇_第35张图片

Nacos集群部署-详细篇_第36张图片

你可能感兴趣的:(springcloud,spring,cloud,alibaba)