nacos配置集群属性
在使用nacos做注册中心时若想要配置该服务属于哪个集群,可以在springboot的yml配置文件中配置nacos.discovery.cluster-name: 集群名字
spring:
cloud:
nacos:
discovery:
cluster-name: 集群名
nacos配置中心设置
nacos控制端可以添加配置文件,配置文件命名规则为服务名称-profiles运行环境(可以不设置命名环境为全环境配置).yaml
(也可以用properties文件,这里统一用yml文件了)
在服务的bootstrap.yml文件中设置配置中心(需要导入启用nacos配置中心的依赖)
<!--nacos的配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
spring:
application:
name: userservice
profiles:
active: dev
cloud:
nacos:
server-addr: 192.168.67.101:8848 # nacos地址
#配置中心
config:
file-extension: yaml # 读取的配置文件后缀名
但此时无法做到配置的热更新(在nacos控制端修改配置文件的同时,服务应用程序中的配置也修改了)
此时有两种方式开启配置的热更新
- 在用
@Value
注入配置属性的类上加入@RefreshScope
注解 - 注入配置属性的类中使用
@ConfigurationProperties
注入配置属性
nacos配置文件优先级
服务名-环境名.yaml > 服务名.yaml > 本地配置
nacos集群搭建
nacos若像采用集群搭建的方式启动,则需要修改nacos的conf目录下的cluster.conf文件和application.properties文件。
在cluster.conf文件中添加集群信息(集群中的每台nacos服务器都要配置)
#example
#nacos服务端主机名:nacos服务端端口号
192.168.67.101:8847
192.168.67.102:8847
192.168.67.103:8847
在application.properties文件中添加mysql信息(集群中的每台nacos服务器都要配置)
#*************** Config Module Related Configurations ***************#
#打开数据源
### If use MySQL as datasource:
spring.datasource.platform=mysql
#集群中的数据库数量
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/库名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
启动nacos集群中的每台nacos服务(这里可以直接用startup.cmd
命令启动不需要加参数)
用nginx做反向代理和负载均衡到nacos集群
upstream nacos-cluster {
server 192.168.67.101:8847;
server 192.168.67.102:8847;
server 192.168.67.103:8847;
}
server {
listen 80;
server_name localhost;
location /nacos {
proxy_pass http://nacos-cluster;
}
}
而后在浏览器访问:192.168.67.101/nacos
即可。
这里我开启的服务有:
- 192.168.67.101:80的nginx
- 192.168.67.101:8847的nacos1
- 192.168.67.102:8847的nacos2
- 192.168.67.103:8847的nacos3