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

准备工作:

1. 数据库(mysq8.0)

2. nacos 2.2.0(三台)

3. nginx 1.9.9(用于代理nacos)

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

17
2.7.6

2021.0.5.0

2021.0.3

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

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

nacos的配置:

1. cluster.conf文件

服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第1张图片

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

2. application.properties文件

服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第2张图片

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

服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第3张图片

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

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

3. nacos启动文件 startup.sh

服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第4张图片

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

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

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

服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第5张图片

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

nginx的配置:

1. 修改nginx.conf文件服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第6张图片

 以上就配置好了 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集群上的问题(已解决)_第7张图片

所以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;
        }
	}

}

服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第8张图片

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

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

  服务注册不到Nginx代理的Nacos集群上的问题(已解决)_第9张图片

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

 

你可能感兴趣的:(nginx,java,数据库,spring,cloud)