一、异常问题
nacos集群的各个节点启动正常,可视化页面可以正常访问,而且集群也确实生效了
但是spring cloud网关项目启动的时候抛出异常如下:
1、 server is DOWN now, please try again later!
2、failed to req API:/nacos/v1/ns/instance after all servers([192.168.168.41:7766]) tried: ErrCode:503, ErrMsg:server is DOWN now, please try again later!
以下是集群的架构
niginx | 192.168.168.41:7766 |
nacos | 192.168.168.5:8848 |
nacos | 192.168.168.5:8848 |
nacos | 192.168.168.5:8848 |
二、定位和解决问题
1、检测nacos内置代码读取到的本机ip是192.XX.XX.XX还是127.0.0.1,因为我们的nacos/conf/cluster.conf内配置的是192.XX.XX.XX,如果读取到127.0.0.1会导致异常情况。
在每个集群节点执行hostname -i,若输出内容为127.0.0.1则执行hostname mName,输出本机内网ip则可以不用管。
2、我们知道8848是项目访问nacos的默认端口,但是nacos各个节点直接的链接使用的是7848端口。我们可以查看nacos/logs/alipay-jraft.log发现如下报错
ERROR Fail to connect 192.168.168.5:7848, remoting exception: java.util.concurrent.ExecutionException: io.grpc.StatusRuntimeException: UNAVAILABLE: io exception.
此时我们将每个节点的7848端口打开即可:
firewall-cmd --zone=public --add-port=7848/tcp --permanent
firewall-cmd --reload
3、重启nacos节点
把每个节点的nacos/data文件夹全部删除,然后重启nacos服务
三、验证
将nginx监听的端口配置到网关配置文件,启动成功
四、配置文件内容
nginx配置:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#nacos集群负载均衡
upstream nacos-cluster {
server 192.168.168.3:8848;
server 192.168.168.5:8848;
server 192.168.168.4:8848;
}
server {
listen 7766;
server_name 192.168.168.41;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://nacos-cluster;
proxy_set_header Host $http_host;
}
error_