nacos集群搭建以及与springcloud整合
1.服务器环境准备
-
64 bit JDK 1.8+ Maven 3.2.x+
2.集群搭建
- 下载最新稳定版本
- 解压下载的zip包
unzip nacos-server-2.1.0.zip #解压安装包
- 配置外部mysql的数据源(本次是单数据源)
cd nacos/conf/ #进入到解压的nacos的conf目录下 vim application.properties #编辑application.properties文件
- 将nacos相关的表和数据导入配置的外部数据库中的指定库中(nacos) 执行nacos/conf下面的nacos-mysql.sql脚本即可
- 修改搭建集群的配置
mv cluster.conf.example cluster.conf #将模板重命名 vi cluster.conf #编辑该文件,将集群信息写入该文件
192.168.175.143:8848 192.168.175.144:8848 192.168.175.145:8848
- 启动三台服务器
cd nacos/bin/ #到安装的bin目录下 ./startup.sh #执行startup.sh脚本(只针对集群使用外部数据源启动)
-
查看下结果(默认账号/密码 nacos/nacos) 访问nacos的页面: http://ip:8848/nacos (ip是任意一个节点都可以)
3.springboot连接集群
1.服务的注册和发现
-
导入依赖
<!-- 引入nacos注册中心的依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 添加spring-cloud-alibaba微服务版本控制 --> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
-
设置配置源和开启服务的注册和发现 在application.properties文件添加以下配置
# 配置nacos集群的服务的注册和发现 spring.cloud.nacos.discovery.server-addr=192.168.175.143:8848,192.168.175.144:8848,192.168.175.145:8848 spring.application.name=product
在启动类上添加@EnableDiscoveryClient注解即可
-
查看效果
2.配置中心
-
导入依赖
<!-- 引入nacos配置中心的依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- springboot 4.0版本以上需要引入,不然不会加载bootstrap.properties配置文件--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.1</version> </dependency>
-
设置配置源 在bootstrap.properties文件添加以下配置
# 添加nacos配置中心的信息 spring.application.name=product spring.cloud.nacos.config.server-addr=192.168.175.143:8848,192.168.175.147:8848,192.168.175.148:8848
-
在nacos里面编写配置信息 测试读取
@RestController @RefreshScope public class NacosTestController { @Value("${product.user.name}") private String nacosName; @GetMapping("config") public R nacosConfig() { return R.ok().put("nacosName", nacosName); } }
参考文档: 参考文档: