SpringCloud2020.0版本Nacos集群配置以及踩到的坑

版本说明

我用的版本为springboot2.5.5+springcloud2020.0.4。

nacos集群配置

相关依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>

(2020.0版本的springcloud配置bootstrap.yml需要引入第三个依赖)

1.修改nacos/conf下的cluster.conf.example文件,去掉example后缀名,更改为cluster.conf
2.修改cluster.conf中的集群的ip地址以及端口(我是在本地搭的集群,如果是在服务器上搭建就把ip地址改一下)

3.修改nacos/conf下的application.properties中的端口server.port修改为该机器的端口

在这里插入图片描述
去掉关于数据库的注释并修改数据库名称、用户和密码。
在这里插入图片描述
4.修改完成后复制两份nacos文件并修改端口
5.进入各自的nacos/bin目录下打开cmd,直接输入 start.up.cmd启动

配置nginx负载均衡

打开nginx/conf下的nginx.conf文件
在http{}中加入

	upstream nacos-cluster{
	server localhost:8845;
	server localhost:8847;
	server localhost:8849;
}

server{
	listen 8003;
	server_name localhost;
	
	location /nacos{
		proxy_pass http://nacos-cluster;
	}		
}

把端口改成各个nacos配置中的端口
启动nginx
访问localhost:8003/nacos即可负载均衡到nacos中

idea修改配置文件

在这里插入图片描述
把server-addr:改为nginx中配置的端口
启动服务后即可在nacos中找到该服务


记录一个小坑

利用openfeign调用远程服务时发现了这个错

Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer

2020.0版本的springcloud中把spring-cloud-starter-netflix-ribbon换成了 spring-cloud-loadbalancer
既然他说我忘记引入loadbalancer,我就引入,引入后如下

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>

再次启动,他又报了这个错

java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;

最后发现是由于导入 spring-cloud-loadbalancer后nacos中 spring-cloud-starter-netflix-ribbon会与它冲突,造成loadbalanc包失效
于是在最后,在nacos依赖中排除掉netfix-ribbon包就好了,依赖如下

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

参考这篇博文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值