初次使用Nacos ,使用docker来启动,感觉一切都是那么顺利~
启动Nacaos
docker run --env MODE=standalone --name nacos -d -p 8848:8848 -v --privileged=true --restart always nacos/nacos-server
访问127.0.0.1:8848/nacos ,默认账号密码 nacos nacos
哇塞~~这个界面看着有点高级,,,还不错,第一步应该就完成啦
那就先简单试试吧,整了一个简单的spring boot项目 注册上去瞧瞧
application.yml
server:
port: 8760
spring:
application:
name: test
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
pom文件
com.alibaba.cloud</groupId>
spring-cloud-starter-alibaba-nacos-discovery</artifactId>
2.1.0.RELEASE</version>
</dependency>
Application启动文件
@SpringBootApplication()
@EnableDiscoveryClient
public class TestApplication{
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
到这简单注册也就完成了,也做了其他稍微复杂的测试基本没有问题,到这基本就完啦,哈哈哈
类似多节点集群还有更换数据库相关的因为暂时实测,就先不写啦,有需要的可以自行百度,哈哈哈哈哈哈哈哈哈哈,刚查阅的时候 有不少小伙伴都有分享,接下来是重点懵逼的地方
当大体用完之后,就jio着应该搞个去测试环境试两天跑跑看看,但发现一个问题,不知道是我用法不对还是有点问题:如何做注册鉴权?
其实一百度还是挺多的,主要就是修改nacos目录下的conf/application.yml中:
nacos.core.auth.enabled=true
于是乎照做,重启容器(因为我是docker启动),再次启动项目注册,本以为会被拒绝
居然注册成功了?
可能是我用法不对。。。。于是乎百度了一个小时,大家基本都是说这么用。。。为啥我就不行捏
所以只能去官网看看,但看了一眼github nacos的issue,感觉找到了救星
于是乎我有打开了docker容器内的目录 看到一个target/nacos-server.jar。。。。。诶?这不是跟我们自己写的差不多么,那是不是说明可能jar包里也有个application.yml文件。。
难道这里面也有个开启权限的配置?
可能改成true会有效,于是再来一次
这次终于被拒绝了,哈哈哈,看来生效了,但问题来了,为啥config里面那个不生效呢?(有待研究)但终究小问题还是解决了。
那下一步就该配置注册信息的时候填写一些信息了
application.yml
server:
port: 8760
spring:
application:
name: test
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: test1
是不是已经知道发生什么了,对!没用。。。然后后续接着是一系列调整版本问题,类似ReactiveDiscoveryClient或者 Configration忘记全名了,,经过查阅Spring Cloud版本和Spring boot版本也有影响
所以对应版本调整如下:
#Spring Cloud版本
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
#Spring boot 版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
</parent>
#nacos Client端版本
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
经过测试发现密码不对或者没有配置discovery.username和discovery.password的注册依旧是403,如果配置了就可以正常注册。
到这里大体流程已经符合公司使用的要求了,小结一下:
1.nacos-server端如果是版本因素或者其他因素导致nacos.core.auth.enabled=true不生效,可以直接去改jar包中的application.yml (虽然不推荐,但解燃眉之急)相信后续会调整(也可能是我用法有问题)
2.开启后 client端版本过低是无法携带username和password的,所以2.2.1才有(2.2.0我没有测试)
3.当client版本至2.2.1会需要spring boot 2.2.x中的部分类,所以需要调整相关引用的版本
后续会继续调试集群和连接mysql及其他相关的测试,希望保佑顺利嘞
如果有问题希望大家及时指正,也欢迎Nacos踩坑者多交流!