如何搭建Nacos集群

笔者在本地使用 VMware 创建了 3 台虚拟机,这里要注意,虚拟机的内存不能太小,如果内存较小的话,Nacos 集群启动 logs/start.out 会一直报 INFO Nacos is starting...
虚拟机环境准备好后,从 github 上下载 Nacos 服务,可以从 https://github.com/alibaba/nacos/tags 下载你需要的版本。

这里我选择的是 2.3.0 版本,使用如下命令下载 Nacos 服务,并解压。

wget https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.gz

tar -zxvf nacos-server-2.3.0.tar.gz

配置使用外部 MySQL 数据源

进入到 nacos 目录中,目录结构如下所示:
在这里插入图片描述
搭建 Nacos 集群,这里推荐使用外部 MySQL 作为其数据源,初始化的 SQL 文件为 conf/mysql-schema.sql,在 MySQL 中创建 database,并执行该 SQL 脚本文件进行初始化操作。

之后复制 conf/application.properties.example 并重命名文件为 conf/application.properties 修改配置内容如下:

spring.sql.init.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.2.11:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=12345678

上面的配置主要就是 MySQL 的配置,这里可以指定多数据源,db.num=1 既表示只使用一个数据源。

配置鉴权

修改配置文件 conf/application.properties,内容如下:

# 开启鉴权功能
nacos.core.auth.enabled=true

# 用于替换useragent白名单的身份识别key,使用默认值有安全风险,这里可以自己随意指定
nacos.core.auth.server.identity.key=test_xxx
# 用于替换useragent白名单的身份识别value,使用默认值有安全风险,这里可以自己随意指定
nacos.core.auth.server.identity.value=test_ooo

# 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,使用默认值有安全风险
### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=dsfjjsaofljslsfjhsklfhsk187979790o9879sfsfhjsafklhsaf898s7f=

官方文档地址:https://nacos.io/docs/latest/guide/user/auth/

配置集群模式并启动服务

复制 conf/cluster.conf.example 并重命名文件为 conf/cluster.conf,修改 cluster.conf 文件内容:

centos7-001:8848
centos7-002:8848
centos7-003:8848

上面的配置是指定 Nacos 服务的地址,这里 centos7-001,centos7-002,centos7-003 表示服务的 IP 地址或域名。之后保存配置文件,将 nacos 服务目录复制到其他两个虚拟机上,之后分别在 3 台虚拟机上启动 Nacos 服务,启动命令为:bin/startup.sh 如果要停止服务,运行 bin/shutdown.sh

使用 Nginx 配置负载均衡

在其中一台虚拟机上我们安装 Nginx 服务,之后进行负载均衡配置。

修改 Nginx 配置文件,我的配置文件在 /usr/local/nginx/conf/nginx.conf 目录下,增加如下配置内容:

# HTTP 负载均衡配置
http {
    # 负载均衡配置
    upstream nacos-cluster {
        # 第一个服务的地址
        server centos7-001:8848;
        # 第二个服务的地址
        server centos7-002:8848;
        # 第三个服务的地址
        server centos7-003:8848;
    }
    # nacos服务配置
    server {
        listen 18848;
        server_name localhost;
        location / {
            # 反向代理
            proxy_pass http://nacos-cluster;
        }
    }
}

# gRPC(TCP长连接)负载均衡配置
stream {
   # 负载均衡配置(TCP长连接配置)
   upstream nacos-cluster-tcp {
     server centos7-001:9848;
     server centos7-002:9848;
     server centos7-003:9848;
   }

    # 监听端口号
    server {
      listen 19848;
      proxy_pass nacos-cluster-tcp;
    }
}

Nacos 2.0 版本相比 1.x 新增了 gRPC 的通信方式,如下所示:
在这里插入图片描述
如果存在防火墙或者nginx端口转发问题,需要进行相应的端口暴露配置。如在nginx中,在已经暴露8848(x)的基础上,需要额外暴露9848(x+1000)。注意,如果要使用集群方式部署的话,需要防火墙放开 9849 端口,否则会导致集群下各nacos节点注册服务不一致问题。

在上面的配置中,我们使用 18848 端口进行服务的转发,所以需要额外暴漏 19848 端口,并设置负载均衡,这样服务注册就不会报错了。

需要注意 3 台虚拟机的防火墙端口的设置。

本地访问 http://centos7-001:18848/nacos/#/login 可以看到如下页面:
在这里插入图片描述
用户名和密码默认都是 nacos

在项目中可以如下配置进行服务的注册:
在这里插入图片描述


其他问题

Q1: nginx: [emerg] unknown directive “stream” 错误

如果 Nginx 配置完报错,如:User nginx: [emerg] unknown directive “stream” in /usr/local/nginx/conf/nginx.conf:138

遇到 nginx: [emerg] unknown directive "stream" in /usr/local/nginx/conf/nginx.conf:138 错误,通常意味着 Nginx 不支持 stream 指令。这个问题可能由以下几个原因导致:

1. Nginx 版本过低

stream 模块在 Nginx 1.9.0(2015年发布的一个主要版本)及以后的版本中引入。如果你使用的 Nginx 版本低于 1.9.0,那么它将不支持 stream 指令。可以通过执行 nginx -v 命令来检查你当前的 Nginx 版本。

解决方案

  • 如果你的 Nginx 版本低于 1.9.0,建议升级到最新的稳定版本。可以访问 Nginx 官网 或使用系统的包管理器来进行升级。

2. 编译时未包含 stream 模块

在某些情况下,即使 Nginx 版本支持 stream 模块,如果在编译时没有包含该模块,也会导致这个错误。stream 模块不是默认编译进 Nginx 的,需要在编译时通过 --with-stream 选项显式指定。

解决方案

  • 你可能需要重新编译 Nginx,并在配置阶段加入 --with-stream 参数。以下是一个编译 Nginx 的示例命令:

    ./configure --with-stream ...
    make
    sudo make install
    

    确保替换 ... 为你的其他配置选项。

Q2. 如何知晓请求被分发到了哪个服务上?

在 Nginx 配置文件中,你可以定制 access_log 指令来记录每个请求的详细信息,包括它被转发到的后端服务器。通过添加自定义日志格式,你可以包含代理到的后端服务器地址。

  1. 定义日志格式:首先,在 http 块中定义一个自定义的日志格式,加入 $upstream_addr 变量来记录后端服务器地址。
http {
    log_format upstreamlog '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent" "$http_x_forwarded_for" '
                           '-> $upstream_addr';
}
  1. 应用自定义日志格式:然后,在你的 server 块或 location 块中使用这个自定义的日志格式。
access_log /var/log/nginx/access.log upstreamlog;

这样在 /var/log/nginx/access.log 就可以知道请求转发到哪个后端服务器的地址了。

### 回答1: 要搭建Nacos集群,需要以下步骤: 1. 安装Java环境和MySQL数据库。 2. 下载Nacos的安装包,并解压到指定目录。 3. 修改Nacos配置文件,包括数据库连接信息、集群节点信息等。 4. 启动Nacos服务,并检查日志文件,确保服务正常启动。 5. 配置Nacos集群,包括节点间的通信、负载均衡等。 6. 启动Nacos集群,并检查各节点的日志文件,确保集群正常运行。 7. 配置Nacos客户端,使其能够连接到Nacos集群。 8. 测试Nacos集群的功能,包括服务注册、发现、配置管理等。 以上是搭建Nacos集群的基本步骤,具体操作可以参考Nacos官方文档或相关教程。 ### 回答2: Nacos是一个基于云原生的动态服务发现、配置管理和服务管理平台。它可以提供轻巧的分布式服务注册和配置管理解决方案,可以帮助开发团队快速搭建微服务架构。 在Linux操作系统上搭建Nacos集群需要以下步骤: 1. 安装Java环境 Nacos需要Java环境来运行,因此需要先安装Java环境。可以从Oracle官网下载Java安装包,选择对应的Linux版本进行安装。 2. 下载Nacos服务端 从Nacos官网下载Nacos服务端的tar.gz版本,解压到本地目录。 3. 配置Nacos集群 在每个节点上的conf文件夹下创建cluster.conf文件,将所有Nacos节点的IP地址和端口号写入其中,每个节点占一行。例如: 192.168.0.1:8848 192.168.0.2:8848 192.168.0.3:8848 4. 启动Nacos节点 在每个Nacos节点上运行startup.sh脚本,即可启动Nacos节点。 5. 确认集群状态 在任意一个节点上运行命令: sh ${nacos_home}/bin/nacos-cli.sh switch -t 30000 -g config 如果返回集群状态为OK,则说明集群已经搭建成功。 6. 访问Nacos Web控制台 在任意一个节点的浏览器中输入http://localhost:8848/nacos即可进入Nacos Web控制台,开始配置Nacos服务。 除此之外,还需要关注Nacos节点之间的通信是否正常,可以通过ping命令或者telnet命令进行测试。还可以对Nacos进行集群监控和故障排除,以确保Nacos服务的稳定性和可靠性。 ### 回答3: Nacos是阿里巴巴开源的一款服务发现和配置管理平台,而Linux是一个非常流行的开源操作系统。下面我们就来了解一下如何在Linux上搭建Nacos集群。 在搭建Nacos集群之前,我们需要准备以下环境: 1.三台Linux服务器 2.JDK1.8及以上 3.Nacos安装包 具体步骤如下: 1.安装JDK 在每台服务器上安装JDK,并设置JAVA_HOME环境变量。 2.下载Nacos 从官网或者镜像网站上下载Nacos的安装包。 3.解压Nacos 将下载好的Nacos安装包解压到各自的服务器上,可以使用命令tar -xvf xxx.tar.gz来解压。 4.修改配置文件 进入解压后的Nacos目录,修改conf文件夹下的nacos-server-cluster.conf和cluster.conf文件,其中nacos-server-cluster.conf配置每个节点的ip地址、端口、用户名、密码等信息;cluster.conf配置集群中所有节点的信息。 5.启动节点 在每个节点上分别使用命令bin/startup.sh start来启动Nacos节点。 6.查看集群状态 使用curl命令来查看集群状态,如curl http://localhost:8848/nacos/v1/ns/raft/state,如果返回结果为"state":2,则表示集群状态正常。 通过以上步骤,就可以在Linux上搭建一个Nacos集群,并实现服务发现和配置管理功能。总之,搭建Nacos集群还是比较简单的,只需要按照上面几个步骤进行操作即可。在实际项目中,Nacos集群还可以实现多节点负载均衡,提高系统的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stack Stone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值