Nginx代理Nacos集群部署

Nginx代理Nacos集群部署

一、环境

操作系统:Centos7及以上或Mac
Nginx版本:1.21.6
Nacos版本:2.0.4
Nginx网址Nginx中文文档
Nacos网址

二、Nacos集群部署
  • bin目录下的【start.sh】文件配置内容如下:
export SERVER="nacos-server"
export MODE="cluster"
export FUNCTION_MODE="all"

说明:

  1. 下载后直接解压,不需要进行调整Nacos默认就是集群启动:
  2. 如有修改单机运行的小伙伴,需要把单机启动改回集群启动
  • conf目录下的【application.properties】文件配置

集群端口配置: 由于Nacos2.x增加了gRPC的通讯且端口和服务端口不一致(详见Nacos兼容性文档说明),所有集群各服务之间的端口配置需要至少间隔1个,如:8848、8850、8852等。

#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=8850

数据源配置: 数据源是Nacos集群信息共享的载体。默认仅支持MySql数据,其他数据库小伙伴们可以通过源码自行实现。

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
# 数据库类型
spring.datasource.platform=mysql

### Count of DB:
# 数据源索引,nacos可以支持多数据源
db.num=1

### Connect URL of DB:
# 数据源配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=Root@1234

### Connection pool configuration: hikariCP
# 数据连接池配置,nacos默认使用hikariCP JDBC连接池
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
  • conf目录下的【cluster.conf】文件配置,需要将各集群节点的IP+端口配置,如下代码:
# 三个节点的集群
192.168.0.28:8850
192.168.0.28:8852
192.168.0.28:8854
  • 启动nacos集群节点服务,启动命令相对还是比较简单的,其实就是启动一个springboot的jar包服务。
&> sh /bin/start.sh
三、Nginx配置

由于Nacos2.x相比1.x新增了gRPC通信方式,因此需要增加2个端口。所有在使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。
在Nginx中的配置有两种方式,每种的配置方式如下:

  • 第一种配置方式,此种方式进行可访问nacos控制台,无法集成到项目中。
# tpc服务
stream {
  # tcp负载均衡
  upstream nacos-tcp-9848 {
    server 127.0.0.1:9850 weight=1;
    server 127.0.0.1:9852 weight=1;
    server 127.0.0.1:9854 weight=1;
  }
  # Nacos客户端gRPC请求服务端端口
  server {
    listen 9848;
    proxy_pass nacos-tcp;
  }
  # tcp负载均衡
  upstream nacos-tcp-9849 {
    server 127.0.0.1:9851 weight=1;
    server 127.0.0.1:9853 weight=1;
    server 127.0.0.1:9855 weight=1;
  }
  # Nacos服务端gRPC请求服务端端口
  server {
    listen 9849;
    proxy_pass nacos-tcp-9849;
  }
}
# http请求服务
http {
  ……
  # 负责均衡
  upstream nacos-cluster {
    server 127.0.0.1:8850 weight=1;
    server 127.0.0.1:8852 weight=1;
    server 127.0.0.1:8854 weight=1;
  }
  # 服务
  server {
    listen     8848;
    server_name localhost;
    # 拦截所有请求并通过负载均衡转发
    location / {
      proxy_pass http://nacos-cluster/;
    }
  }
}

在这里插入图片描述

  • 第二种配置方式,此种方式配置上稍有繁琐,但可以和项目集成按照nacos原有集群方式配置
# tcp服务
stream {
  # Nacos客户端gRPC请求服务端端口 start
  upstream name-tcp-9850 {
    server 127.0.0.1:9850 weight=1;
  }
  server {
    listen 9844;
    proxy_pass name-tcp-9850;
  }
  upstream name-tcp-9852 {
    server 127.0.0.1:9852 weight=1;
  }
  server {
    listen 9846;
    proxy_pass name-tcp-9852;
  }
  upstream name-tcp-9854 {
    server 127.0.0.1:9854 weight=1;
  }
  server {
    listen 9848;
    proxy_pass name-tcp-9854;
  }
  # Nacos客户端gRPC请求服务端端口 end
  # Nacos服务端gRPC请求服务端端口 start
  upstream name-tcp-9851 {
    server 127.0.0.1:9851 weight=1;
  }
  server {
    listen 9845;
    proxy_pass name-tcp-9851;
  }
  upstream name-tcp-9853 {
    server 127.0.0.1:9853 weight=1;
  }
  server {
    listen 9847;
    proxy_pass name-tcp-9853;
  }
  upstream name-tcp-9855 {
    server 127.0.0.1:9855 weight=1;
  }
  server {
    listen 9849;
    proxy_pass name-tcp-9855;
  }
  # Nacos服务端gRPC请求服务端端口 end
}
# http请求服务
http {
  # 第一个节点服务
  server {
    listen     8844;
    server_name localhost;
    location / {
      proxy_pass http://127.0.0.1:8850/;
    }
  }
  # 第二个节点服务
  server {
    listen     8846;
    server_name localhost;
    location / {
      proxy_pass http://127.0.0.1:8852/;
    }
  }
  # 第三个节点服务
  server {
    listen     8846;
    server_name localhost;
    location / {
      proxy_pass http://127.0.0.1:8854/;
    }
  }
}

在这里插入图片描述

四、总结

通过在Nginx中配置Nacos集群的来看,2.x和1.x配置差异还是蛮大的。主要是2.x引入了gRPC通讯新增了2个端口,而且必须在naginx上要配置上这两个端口,否则无法完美集成到项目中。

  • 整体部署图如下
    在这里插入图片描述
  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了实现nginxnacos集群的反向代理和负载均衡,您需要按照以下步骤进行配置: 1. 首先,您需要将nacos集群的节点配置nginx配置文件中。在文件`/etc/nginx/nginx.conf`中,添加以下代码段来定义nacos集群的节点: ``` upstream nacoscluster{ server 127.0.0.1:8848; server 127.0.0.1:8850; server 127.0.0.1:8852; } ``` 这里的三个节点分别是nacos集群中的三个实例的IP和端口。您可以根据实际情况进行修改。 2. 接下来,在同一个文件中,在`server`块中添加以下代码段来配置反向代理和负载均衡: ``` server { listen 8090; // 配置nginx监听的端口号 server_name localhost; // 配置nginx的域名或IP location /nacos/ { proxy_pass http://nacoscluster/nacos/; // 配置代理nacos集群的路径 } } ``` 请确保`listen`指令中的端口号与您实际使用的端口号一致,并根据需要修改`server_name`指令。`location`指令中的路径 `/nacos/` 是您希望代理nacos集群的路径,您可以根据实际情况进行修改。 3. 保存并关闭文件后,重启nginx服务以使配置生效。您可以使用以下命令来启动或停止nginx服务: ``` 启动:systemctl start nginx.service 停止:systemctl stop nginx.service ``` 现在,您已经成功配置nginx反向代理和负载均衡到nacos集群。您可以通过访问`http://localhost:8090/nacos/`来访问nacos集群。 请注意,以上配置仅供参考,您需要根据您的实际情况进行修改。另外,请确保您已经正确安装并配置nacosnginx,并且端口号和IP地址等信息正确无误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [(1)nacos搭建集群模式,利用nginx做反向代理和负载均衡](https://blog.csdn.net/weixin_46855885/article/details/123957842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [nacos集群部署+nginx做负载均衡反向代理](https://blog.csdn.net/ljfgyy0205/article/details/128149586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值