nacos使用原因
Spring cloud自带的有配置中心config;但是它更多的支持git同步;在公网上搭建git,不太现实,所以,不使用;
Nacos使用的mysql存储配置文件,集群模式也比较简单,所以,推荐使用。
搭建步骤
下载最新的nacos服务
https://github.com/alibaba/nacos/releases 从这里下载最新的包;
修改配置
1.解压缩之后,修改conf目录下的application.properties;把数据库相关的配置打开:
If use MySQL as datasource:
spring.datasource.platform=mysql
Count of DB:
db.num=1
Connect URL of DB:
db.url.0=jdbc:mysql://192.168.194.174:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
2.修改cluster.conf文件中的ip和端口号
这个文件指定的是集群中的ip和端口
启动服务
Bin目录执行startup.sh;启动服务,默认端口号是:8848
Pc端添加配置
通过ip+端口+/nacos 进行访问;
默认用户名密码:nacos nacos
登陆之后,添加命名空间:dev test product
然后在命名空间,添加配置文件: 需要注意 dataId要自己填写: application-{dev/test/product}.yml
这个不是重点!!!!!!!!!!!!
nacos使用endpoint
如果按照上面的使用,会出现一个问题:配置文件中需要一个nacos的服务器地址,这个地址在各个环境可能并不相同,所以,服务器地址也需要根据环境生成;
nacos支持Endpoint方式,它在没有设置spring.cloud.nacos.config.server-addr时,会去查找spring.cloud.nacos.config.endpoint,然后调用:http://{spring.cloud.nacos.config.endpoint}/nacos/serverlist?namespace=test 来获取服务器地址,
这时有一个重点:它只支持http,https则无法使用;
为了spring.cloud.nacos.config.endpoint可以根据环境返回不同的服务器ip,需要spring.cloud.nacos.config.endpoint可以接收到请求,并且根据环境(使用ip作为隔离手段)返回,需要使用nginx,并且在nginx上配置geo;
具体如下:
1.在nginx.conf 文件http模块配置geo;
2.然后在域名的配置文件中,使用#env,进行转发请求;
这样配置之后,在springcloud的配置文件bootstrap.properties中直接使用即可,
spring.cloud.nacos.config.endpoint=testadmin.baidu.com:7777
这样,nacos先去testadmin.baidu.com:7777拉取服务器ip,然后拿着服务器ip去找具体的配置文件,到此,nacos和springcloud的配置中心结合就算是完成了。