Nacos 集群部署

本文将介绍如何在 Windows 下单机部署 Nacos 伪集群(和真实集群类似)。

环境准备

准备一个 nginx 和三个 nacos 安装包(版本信息 nacos-server-2.2.3,nacos 至少需要三个节点),然后分别对 nacos 进行重命名,如下图:

Nacos 集群部署

三个 nacos 的端口分别为:

  • nacos-server-2.2.3-1 端口为 8748

  • nacos-server-2.2.3-2 端口为 8848

  • nacos-server-2.2.3-3 端口为 8948

配置 Nacos

Nacos 数据外置

Nacos 默认使用 Apache Derby 作为保存 Nacos 数据的数据库,我们需要修改配置,让 Nacos 使用 MySQL 来保存 Nacos 数据。

请参考 “Nacos 数据外部化”。

创建 cluster.conf 配置

进入 nacos 安装目录的 conf 目录,拷贝 cluster.conf.example 重命名为 cluster.conf:

(1)nacos-server-2.2.3-1/conf/cluster.conf

10.87.10.89:8748
10.87.10.89:8848
10.87.10.89:8948

(2)nacos-server-2.2.3-2/conf/cluster.conf

10.87.10.89:8748
10.87.10.89:8848
10.87.10.89:8948

(3)nacos-server-2.2.3-3/conf/cluster.conf

10.87.10.89:8748
10.87.10.89:8848
10.87.10.89:8948

注意:cluster.conf 文件用来配置 nacos 的集群信息,其中每一行表示一个集群节点地址,上面配置了三个集群节点信息。

修改 Nacos 端口

进入 nacos 安装目录的 conf 目录,编辑 application.properties 配置文件的 server.port 选项,修改 Nacos 端口。

注意:Nacos 默认端口是 8848,2.0 版本后另外还占用 9848,9849 两个端口,这两个是 gRPC 端口,用于服务端与客户端通讯,所以在单机上配置集群节点,节点要配置的端口不能连续,否则在启动时报端口占用的错误。

9848 端口:与主端口(8848)偏移量为 1000,用来客户端gRPC请求服务端口,用户客户端向服务端发起连接和请求

9849 端口:与主端口(8848)偏移量为 1001,用来服务端gRPC请求服务端口,用于服务间同步等

(1)nacos-server-2.2.3-1/conf/application.properties

#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port: 看这里
server.port=8748

(2)nacos-server-2.2.3-2/conf/application.properties

#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port: 看这里
server.port=8848

(3)nacos-server-2.2.3-3/conf/application.properties

#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port: 看这里
server.port=8948

启动 Nacos 集群

现在分别执行 Nacos 的 bin/startup.cmd 脚本,启动 Nacos 集群,如下:

(1)nacos-server-2.2.3-1

"nacos is starting with cluster"
         ,--.
       ,--.'|
   ,--,:  : |                                           Nacos 2.2.3
,`--.'`|  ' :                       ,---.               Running in cluster mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8748
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 15128
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://10.87.10.89:8748/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'
2023-10-30 12:58:15,562 INFO The server IP list of Nacos is [10.87.10.89:8748, 10.87.10.89:8848, 10.87.10.89:8948]
...
2023-10-30 12:59:28,024 INFO Nacos is starting...
2023-10-30 12:59:28,806 INFO Nacos started successfully in cluster mode. use external storage

(2)nacos-server-2.2.3-2

"nacos is starting with cluster"
         ,--.
       ,--.'|
   ,--,:  : |                                           Nacos 2.2.3
,`--.'`|  ' :                       ,---.               Running in cluster mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8848
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 12068
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://10.87.10.89:8848/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'
2023-10-30 12:58:32,780 INFO The server IP list of Nacos is [10.87.10.89:8748, 10.87.10.89:8848, 10.87.10.89:8948]
...
2023-10-30 12:59:46,519 INFO Nacos is starting...
2023-10-30 12:59:47,263 INFO Nacos started successfully in cluster mode. use external storage

(3)nacos-server-2.2.3-3

"nacos is starting with cluster"
         ,--.
       ,--.'|
   ,--,:  : |                                           Nacos 2.2.3
,`--.'`|  ' :                       ,---.               Running in cluster mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8948
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 12988
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://10.87.10.89:8948/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'
2023-10-30 12:58:39,599 INFO The server IP list of Nacos is [10.87.10.89:8748, 10.87.10.89:8848, 10.87.10.89:8948]
...
2023-10-30 12:59:44,699 INFO Nacos is starting...
2023-10-30 12:59:45,699 INFO Nacos started successfully in cluster mode. use external storage

集群启动成功后,访问 http://127.0.0.1:8848/nacos 查看集群信息(注意,http://127.0.0.1:8748/nacos  和 http://127.0.0.1:8948/nacos  也能正常访问),如下图:

Nacos 集群部署

负载均衡配置

上面已经成功搭建了 Nacos 集群,在正式场景中不可能配置三个 Nacos 地址(127.0.0.1:8748、127.0.0.1:8848 和 127.0.0.1:8948),此时我们为了高可用,可以通过 Nginx 暴露一个端口,然后通过 Nginx 的配置实现负载均衡。如下图:

Nacos 集群部署

客户端请求 Nginx,然后 Nginx 通过负载均衡策略将请求路由到任何一台 Nacos 服务器。

Nginx 配置(nginx.conf)如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    upstream nacoscluster {
        server 10.87.10.89:8748;
        server 10.87.10.89:8848;
        server 10.87.10.89:8948;
    }
    server {
        listen          8080;
        server_name     localhost;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://nacoscluster;
        }
    }
}

注意,上面虽然配置了负载均衡高可用,但是还是不足。因为,nginx 是单机的,也有可能会宕机,最总的解决办法是 nginx + keepalived + nacos,读者可以自行尝试。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号