当前位置: 首页 > 知识库问答 >
问题:

负载均衡 - 请教一下,spring boot下,如何获取加网关代理的nacos配置?

闻人飞白
2023-12-01

基本环境:

  1. 根据手册,本地搭建一个nacos server, 版本 2.2.3, standalone
  2. 利用apisix,给nacos server加一层网关代理

     {  "uri": "/nacos/*",  "name": "local.8848",  "upstream_id": "xx",  "enable_websocket": true,  "status": 1}{  "nodes": [ {   "host": "host.docker.internal",   "port": 8848,   "weight": 100 }  ],  "type": "roundrobin",  "pass_host": "pass",  "name": "local.nacos"}

    访问:
    http://localhost:9080/nacos/index.html
    都很正常的,也可以用

    curl -X GET "http://localhost:9080/nacos/v1/cs/configs?dataId=nacos.cfg.dataId"

配置了值:

namespace=publicdataId=nacos.cfg.dataId group=DEFAULT_GROUPvalue: // properties    time.pattern=yyyy-mm-dd

目前问题是:

  1. 用spring boot读取不到配置

spring boot里的配置就非常简单,

nacos.config.server-addr=http://localhost:9080

spring boot代码:

// 版本<nacos-config-spring-boot.version>0.2.12</nacos-config-spring-boot.version>
@SpringBootApplication@NacosPropertySource(dataId = "nacos.cfg.dataId", type = ConfigType.PROPERTIES, autoRefreshed = true)public class NacosConfigApplication {    public static void main(String[] args) {        SpringApplication.run(NacosConfigApplication.class, args);    }}@Controllerpublic class ConfigController {    @NacosValue(value = "${time.pattern}", autoRefreshed = true)    private String value;    @RequestMapping(value = "/config/get", method = GET)    @ResponseBody    public String get() {        return value;    }}

直接用sdk也不行

<dependency>    <groupId>com.alibaba.nacos</groupId>    <artifactId>nacos-client</artifactId>    <version>2.3.0</version> // 2.2.3, 2.2.4都试过</dependency>
public static void main(String[] args) throws Exception {    String serverAddr = "http://localhost:9080"; 就可以了    String dataId = "nacos.cfg.dataId";    String group = "DEFAULT_GROUP";    Properties properties = new Properties();    properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);    ConfigService configService = NacosFactory.createConfigService(properties);    String content = configService.getConfig(dataId, group, 5000);    // 换成 serverAddr=http://localhost:8848, content就是配置的值了    System.out.println(content); // content=null, }

共有1个答案

经骁
2023-12-01

解决问题了:

  1. nacos client 2.x版本问题,最直接的方式,把nacos client版本换成:1.x,如:1.4.6
  2. 增加代理的端口监听,9848

基本原因是:

9848 1000 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求

参考:https://nacos.io/zh-cn/docs/next/v2/upgrading/2.0.0-compatibi...

 类似资料:
  • 这一小节中,我们将实战 Nginx 的四层和七层负载均衡功能。条件有限,使用一台公网主机,在上面搭建好 Nginx 服务。公网 IP 为 180.76.152.113。 首先会进行简单的四层负载均衡实验,不会涉及多种负载均衡算法,只使用默认的 Round-Robin算法。在后续的七层负载均衡实验中,会重点测试不同的负载均衡策略,完成相关实验。 1. Nginx的四层负载均衡实验 首先在 nginx

  • tcp_proxy_server 主要是为需要负载均衡的场景准备的。 它既能做四层tcp负载均衡,也能作七层http负载均衡。内置负载均衡算法为轮询法。 HTTP 七层负载均衡 来看一个http反向代理的例子: #include <unistd.h> #include <sys/wait.h> #include <sys/signal.h> #include <sys/prctl.h> #in

  • 本文向大家介绍Nginx如何配置负载均衡,包括了Nginx如何配置负载均衡的使用技巧和注意事项,需要的朋友参考一下 Nginx配置负载均衡 使用nginx来配置负载均衡也是比较简单的 首先在http块中配置虚拟域名所对应的地址 然后在server块中配置监听 这样在使用9000端口访问服务器的时候就会进行8080和8082的负载调用 Nginx 负载均衡策略 轮询(默认) 按照时间顺序逐一的分配到

  • 本文向大家介绍linux下Nginx+Tomcat负载均衡配置方法,包括了linux下Nginx+Tomcat负载均衡配置方法的使用技巧和注意事项,需要的朋友参考一下 Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1、JAVA JDK安装: 2、Nginx安装: 3

  • 本文向大家介绍windows下nginx+tomcat配置负载均衡的方法,包括了windows下nginx+tomcat配置负载均衡的方法的使用技巧和注意事项,需要的朋友参考一下 目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡。 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7。 1、安装Nginx 安装Ngin

  • 本文向大家介绍Windows下Apache+Tomcat7负载均衡配置方法详解,包括了Windows下Apache+Tomcat7负载均衡配置方法详解的使用技巧和注意事项,需要的朋友参考一下 准备工作 Windows Server 2008 R2 Enterprise(2.40GH,8GB,64Bit,192.168.10.212) 2台Ubuntu 10.04.4(192.168.10.98,1