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