解决Nacos集群搭建,Nginx负载均衡后服务注册失败

项目场景:

搭建Nacos集群后,使用Nginx实现对Nacos集群的负载均衡后,springboot服务通过Nginx方向代理注册进Nacos集群。


问题描述

启动多个nacos集群,通过Nginx反向代理,访问Nginx提供的端口可正常访问nacos首页。
在这里插入图片描述
在这里插入图片描述
但使用springboot启动服务通过nginx提供端口进行服务注册,会发现报错,以下是错误信息。而单机启动nacos ,这可以注册的上去,由此可以判定是集群模式下会出现此问题。
在这里插入图片描述

2022-11-27 16:05:03.925 ERROR 14532 --- [  restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, nacos-payment-provider register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='localhost:9527', endpoint='', namespace='', watchDelay=30000, logName='', service='nacos-payment-provider', weight=1.0, clusterName='DEFAULT', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.155.1', networkInterface='', port=9001, secure=false, accessKey='', secretKey=''}},

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:9527]) tried: failed to req API:localhost:9527/nacos/v1/ns/instance. code:400 msg: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Sun Nov 27 16:05:03 CST 2022</div><div>There was an unexpected error (type=Bad Request, status=400).</div><div>receive invalid redirect request from peer 192.168.155.1</div></body></html>
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464) ~[nacos-client-1.1.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386) ~[nacos-client-1.1.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.registerService(NamingProxy.java:188) ~[nacos-client-1.1.1.jar:na]
	...........................

原因分析:

应该是nacos 注册时,需要找网卡的 ip地址,但是有多个. 而注册时轮询找的第一个网卡的ip地址.
我们查看nacos的集群配置文件cluster.conf也得到了验证,发现会多出来一条不属于自己配置的ip端口。
在这里插入图片描述


解决方案:

  1. 先禁用 虚拟机的网卡
    打开“网络和Internet设置”–更改适配器选项,点击右键禁用
    在这里插入图片描述
  2. 修改每个nacos-server\conf 的cluster.conf,将多出来的配置删除掉。
  3. 删除每个nacos-server下的data文件夹
    在这里插入图片描述
  4. 重启nacos集群和微服务,访问localhost:9527,即可发现服务已注册进nacos集群
    在这里插入图片描述
    在这里插入图片描述
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程将介绍如何使用Docker搭建Nacos集群,并通过Nginx进行反向代理实现负载均衡。 准备工作: 1. 安装Docker和Docker Compose 2. 准备三台服务器,分别作为Nacos集群的三个节点 步骤一:下载Nacos镜像 在每个服务器上执行以下命令下载Nacos镜像: ``` docker pull nacos/nacos-server:latest ``` 步骤二:创建Docker Compose文件 在任意一台服务器上创建一个文件夹,命名为nacos,进入该文件夹并创建docker-compose.yml文件,内容如下: ``` version: '3' services: nacos1: image: nacos/nacos-server:latest container_name: nacos1 ports: - "8848:8848" environment: - MODE=cluster - NACOS_SERVER_IP=192.168.1.11 restart: always nacos2: image: nacos/nacos-server:latest container_name: nacos2 ports: - "8849:8848" environment: - MODE=cluster - NACOS_SERVER_IP=192.168.1.12 restart: always nacos3: image: nacos/nacos-server:latest container_name: nacos3 ports: - "8850:8848" environment: - MODE=cluster - NACOS_SERVER_IP=192.168.1.13 restart: always ``` 其中,nacos1、nacos2、nacos3分别对应三个节点,分别监听的端口分别为8848、8849、8850。NACOS_SERVER_IP指定了当前节点的IP地址,这个需要根据实际情况进行修改。 步骤三:启动Nacos集群 在nacos文件夹下执行以下命令启动Nacos集群: ``` docker-compose up -d ``` 执行完毕后,可以通过以下命令查看容器启动情况: ``` docker-compose ps ``` 步骤四:配置Nginx反向代理 在任意一台服务器上安装Nginx,并修改配置文件/etc/nginx/nginx.conf,增加如下内容: ``` http { upstream nacos { server 192.168.1.11:8848; server 192.168.1.12:8849; server 192.168.1.13:8850; } server { listen 80; server_name nacos.example.com; location / { proxy_pass http://nacos; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` 其中,nacos.example.com为Nacos的访问域名,需要根据实际情况进行修改。配置中创建了一个名为nacos的upstream,包括三个节点的IP地址和端口号。在server块中,通过proxy_pass将请求转发到nacos upstream。 重启Nginx生效。 至此,Nacos集群和Nginx反向代理已经搭建完成,可以通过访问http://nacos.example.com:80/进行验证。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值