服务注册不到Nginx代理的Nacos集群上的问题(已解决)

本文详细介绍了如何配置Nacos集群,包括修改cluster.conf和application.properties文件,调整端口,并启动Nacos实例。接着,讲述了如何通过Nginx进行代理设置,以实现对Nacos集群的访问。针对Nacos2.0.0引入的gRPC通信方式,更新了Nginx的配置,解决了服务注册时的错误。最终,成功实现了服务在Nacos集群上的注册。

准备工作:

1. 数据库(mysq8.0)

2. nacos 2.2.0(三台)

3. nginx 1.9.9(用于代理nacos)

所需依赖的版本信息如下:

<java.version>17</java.version>
<spring-boot.version>2.7.6</spring-boot.version>

<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>

<spring-cloud.version>2021.0.3</spring-cloud.version>

这里我的mysql和nginx放在了windows下,三台nacos放在了一台虚拟机上(通过修改端口号来区分)

它们的安装这里就不在细讲,只是讲一下nacos集群的配置以及nginx的代理。

nacos的配置:

1. cluster.conf文件

三个nacos的cluster.conf文件都是相同的的配置,上面是三台nacos的 ip+port。

2. application.properties文件

 修改nacos的端口,这里我的端口分别是 8848,8850,8852(注意端口不要连续)

 上面标记的是需要配置的关键点,注意首先要创建名为 nacos的数据库,然后再把nacos中提供的sql文件访问navicate(mysql客户端)中运行,生成一些表结构。

运行这个以mysql开头的sql文件。

3. nacos启动文件 startup.sh

 如果虚拟机内存较小可以修改一下上面的三个参数。

4. 进入到startup.sh所在的目录下,启动nacos, 使用  ./startup.sh 命令,如果出现启动失败,可能需要nacos下的data目录删除(其中一种启动失败原因的解决办法)。

5. 访问路径 http://192.168.193.104:8848/nacos/ ,查看集群是否搭建成功。

 出现上图结果说明,nacos集群搭建成功。

nginx的配置:

1. 修改nginx.conf文件

 以上就配置好了 nginx对nacos集群的代理。

然后访问 http://127.0.0.1:8999/nacos/  ,这里ip地址和端口是nginx的ip和监听的端口。

如果能够正常访问到nacos的客户端,就说明代理成功了。

服务的注册:

springboot程序中 application.yml的配置信息

server:
  port: 8001
spring:
  application:
    name: order-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8999  # 注册到nginx的代理地址
        username: nacos
        password: nacos

启动项目,这是会报下面的错误。

报错信息如下:

 这是由于nacos 2.0.0 新增了gRPC的通信方式。官网说明如下:

所以nginx 对nacos集群的代理方式有所改变,对 nginx.conf 文件的修改如下:

# nacos的grpc协议配置
stream {
	upstream nacoscluster-grpc{
		# nacos2版本,grpc端口与要比主端口多1000,主端口为8140、8550、8960
		server 192.168.193.104:9848 weight=1;
		server 192.168.193.104:9850 weight=1;
		server 192.168.193.104:9852 weight=1;
	}
	server{
		listen 9999;
		proxy_pass nacoscluster-grpc;
	}
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	upstream nacos-cluster { 
		server 192.168.193.104:8848;
		server 192.168.193.104:8850;
		server 192.168.193.104:8852;
   }
   
    server {
	
        listen       8999;
        server_name  localhost;
		
        location /nacos/ {
            proxy_pass http://nacos-cluster;
        }
	}

}

注意这里的stream模块只有在 nginx1.9.0 之后才能使用。

最后我们重新启动nginx,再次访问    http://127.0.0.1:8999/nacos/

  

 服务列表出现我们注册的服务,访问成功。

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值