Nacos高可用集群搭建与使用

参考:https://blog.csdn.net/Alwayszmx/article/details/122291741

一、Nacos 简介
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

nacos官网:https://nacos.io/zh-cn/docs/what-is-nacos.html

二、Nacos 安装
2.1 Nacos 环境依赖
Nacos 基于 java 开发的,运行依赖于64 bit JDK 1.8+环境。

前往官网下载JDK: Java Downloads | Oracle

2.2 Nacos 服务端安装
由于Nacos是开源的,可以从github下载源码编译后安装,也可以直接从github下载官方编译好的安装包进行安装,本文直接使用官方编译好的包进行安装,基于目前官方最新release2.0.3版本。请勿使用2.x以下的版本,之前爆出过漏洞。2.x版本相对于1.x版本,性能也提升了10倍。

下载地址:https://github.com/alibaba/nacos/releases

 

三、Nacos 部署
3.1 单实例部署
单实例部署不适合生产环境,单点故障是致命的。

Linux 单实例非集群模式启动命令:

startup.sh -m standalone

Linux 单实例非集群模式关闭命令:

shutdown.sh

访问 nacos 管理页面,初始化用户名密码均为 nacos

访问地址:http://127.0.0.1:8848/nacos/index.html

端口默认为8848,ip需要替换为部署服务器实例的ip

3.2 集群部署
3.2.1 集群架构

 

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

环境信息:

系统版本

机器IP

部署应用

应用版本

CentOS8.5

192.168.230.1

Nginx

nginx-1.18.0

CentOS8.5

192.168.230.129

Nacos

2.0.3

CentOS8.5

192.168.230.130

Nacos

2.0.3

CentOS8.5

192.168.230.131

Nacos

2.0.3

CentOS8.5

192.168.230.1

MySQL

5.7.32

使用vmware虚拟机模拟以上不同机器环境。

搭建步骤:

1)初始化 nacos数据库

解压下载的安装包nacos-server-2.0.3.tar.gz至/usr/local目录,找到/nacos/conf下的nacos-mysql.sql脚本

 

在MySQL实例创建 nacos库并执行sql脚本

 

修改修改 Nacos 配置文件,指向MySQL实例,替换其内嵌数据库

 

在application.properties中找到如下配置,该配置默认为注释掉的,取消注释即可,修改数据库信息为实际的数据库信息后保存。其他nacos服务实例也需要做同样的修改

 

为了达到高可用,通常会有多个MySQL数据库实例,nacos的配置文件也需要指定每一个MySQL实例的信息,例如:

 

2)集群配置

在/nacos/conf下找到cluster.conf.example文件,将其重命名为cluster.conf

 

修改cluster.conf文件,将其中的默认的ip信息删除,将nacos集群中每一台nacos实例的ip添加进去。集群中所有nacos实例都需要做以上集群配置,至此关于 nacos 的配置结束了,可以尝试以集群模式启动三个nacos实例了。

 

切换到/nacos/bin目录下,执行./startup.sh & tail -f /usr/local/nacos/logs/start.out

启动nacos,并查看启动日志,出现下面提示说明启动成功

 

 

此时可以通过浏览器访问每个nacos实例的控制台,例如:http://192.168.230.131:8848/nacos

说明:如果三个实例以集群模式正常启动,那么分别访问三个实例的管理页就是展示以上登录页了。如果不能访问,则可能防火墙未开放 nacos 服务的端口,可执行如下命令。

[root@localhost bin]# firewall-cmd --add-port=8848/tcp --permanent

success

[root@localhost bin]# firewall-cmd --reload

success
如果nacos启动时报已下异常,有以下三种原因:

 

原因一:连不上MySQL数据库,通常是由于MySQL数据库所在的宿主机没有开放3306端口导致的,在MySQL宿主机执行以下命令即可

[root@localhost bin]# firewall-cmd --add-port=3306/tcp --permanent
success
[root@localhost bin]# firewall-cmd --reload
Success
原因二:由于nacos配置文件application.properties中默认的数据库连接超时时间设置较短,如下图,因为网络延时等原因,MySQL可能会连接超时导致nacos启动报错,因此只需要将超时时间适当设置长一些即可

 

原因三:虚拟机内存不足,由于在vmvare创建虚拟机时,只给每个虚拟分配了1G的内存,从nacos的启动脚本startup.sh中可知,nacos以集群模式启动时,默认分配的java堆内存空间为2G,因此可判断是由于虚拟机内存不足导致nacos启动报错,修改虚拟机内存为2G后可以正常启动。

 

3)Nginx 配置

修改 Nginx 配置文件 nginx.conf如下:

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

#nacos集群负载均衡
upstream nacos-cluster {
server 192.168.230.129:8848;
server 192.168.230.130:8848;
server 192.168.230.131:8848;
}

server {
listen 80;
server_name 192.168.230.1;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://nacos-cluster;
}

error_page 500 502 503 504 /50x.html;

location = /50x.html {
root html;
}
}
}
4)访问控制台

在浏览器输入Nginx服务所在宿主机的ip即可访问:

http://192.168.230.1/nacos/#/login

默认用户名/密码:nacos/nacos

 

切换至【集群管理】-【节点列表】,可查看nacos集群节点信息:


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/Alwayszmx/article/details/122291741

posted @ 2024-04-16 10:32  GaoYanbing  阅读(170)  评论(0编辑  收藏  举报