学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)

Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)

  • Docker 启动 Nacos
  • 服务注册
  • 注册权限控制

Docker 启动 Nacos

初次使用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
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第1张图片
哇塞~~这个界面看着有点高级,,,还不错,第一步应该就完成啦
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第2张图片

服务注册

那就先简单试试吧,整了一个简单的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启动),再次启动项目注册,本以为会被拒绝
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第3张图片
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第4张图片居然注册成功了?
在这里插入图片描述
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第5张图片
可能是我用法不对。。。。于是乎百度了一个小时,大家基本都是说这么用。。。为啥我就不行捏
所以只能去官网看看,但看了一眼github nacos的issue,感觉找到了救星
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第6张图片
于是乎我有打开了docker容器内的目录 看到一个target/nacos-server.jar。。。。。诶?这不是跟我们自己写的差不多么,那是不是说明可能jar包里也有个application.yml文件。。
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第7张图片学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第8张图片
难道这里面也有个开启权限的配置?
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第9张图片
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第10张图片可能改成true会有效,于是再来一次
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第11张图片
这次终于被拒绝了,哈哈哈,看来生效了,但问题来了,为啥config里面那个不生效呢?(有待研究)但终究小问题还是解决了。
那下一步就该配置注册信息的时候填写一些信息了
application.yml

server:
  port: 8760
  
spring:
  application:
    name: test
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: test1

学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第12张图片是不是已经知道发生什么了,对!没用。。。然后后续接着是一系列调整版本问题,类似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.usernamediscovery.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及其他相关的测试,希望保佑顺利嘞
学习Nacos1.3.0 docker 及注册Spring Cloud服务(初次尝试)_第13张图片
如果有问题希望大家及时指正,也欢迎Nacos踩坑者多交流!

你可能感兴趣的:(Docker,Nacos)