前言
从微服务兴起后,服务治理问题已经成为其最大问题。起初有eureka,zookeeper、consul同台竞争,本人也使用过eureka+config-server作为注册中心和配置中心,使用上没有问题,就是涉及到一些业务场景,比较麻烦,如配置动态修改、配置发生变更后,config-server要重启。使用阿里开源的nacos后,再也不想用其他工具了。
nacos 本身自带了注册中心、配置中心功能。可以单点、集群启动,完整的生态圈,阿里开源的产品较多,质量也较高,对于微服务的产品:分部署事务seata、服务流控sentinel集成度都很好。以此奉上官网nacos生态图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-onnh5hRO-1625477292956)(img/nacos生态.png)]
1 软件下载
配置
nacos数据持久化支持内存数据库与mysql数据库,默认内存数据库,如果需要配置mysql数据库,请修改conf/application.properties,然后初始化数据库脚本
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://10.0.0.0:10001/lcfc_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root!
集群设置
startup.sh
set "JAVA_OPT=%JAVA_OPT% -Dnacos.server.ip=10.159.133.176"
修改conf/cluster.conf
10.159.110.177:8848
10.159.110.178:8848
查看
nacos 集群访问需要用NG来做负载均衡 NG配置如下
upstream nacos_server{
server 10.1.2.37:8848;
server 10.1.2.96:8848;
server 10.1.2.56:8848;
}
location /nacos {
proxy_set_header Host $http_host;
proxy_pass http://nacos_server;
}
记住一定要加入proxy_set_header Host $http_host,不然会报400的错
访问 localhost:19200,用户名/密码:nacos/nacos
配置查看
查看服务
集群查看
spring cloud集成nacos
maven依赖
<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>
bootstrap.yml 增加nacos配置
spring:
cloud:
nacos:
discovery:
server-addr: 10.1.2.37:19200
config:
server-addr: 10.1.2.37:19200
file-extension: yml
refresh-enabled: true
shared-configs:
- data-id: application.${spring.cloud.nacos.config.file-extension}
group: DEFAULT_GROUP
refresh: true
- data-id: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: DEFAULT_GROUP
refresh: true
main class 增加 @EnableDiscoveryClient