写在前面
- Nacos就是注册中心+配置中心,基本等价于:Nacos = Eureka + Config + Bus。
- 支持独立和集群两种模式。
- 支持自带数据库derby和mysql之间的切换
- 作为配置中心可以通过三种方式进行管理dateId,Group,Namespace
1:Nacos中的匹配规则
dataId的组成格式,以及SpringBoot配置文件中的匹配规则如下:
之所以yml文件中需要配置Spring.application.name,是因为它是构成Nacos配置管理dataId字段的一部分。
Nacos中dataId完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
- prefix默认为Spring.application.name的值,也可以通过配置spring.cloud.nacos.config.prefix来配置
- spring.profile.active就是当前环境下对应的produle。
- file-extension可以通过spring.cloud.nacos.config.file-exetension来配置。目前只支持properties和yaml类型
最后公式如下:
${Spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-exetension}
2:作为服务配置中心---分类配置
Nacos的图形化管理界面对配置有很多管理:
- namespace(命名空间)
- Group
- DataId
这三者之间的关系:
类似于java里面的package名和类名。最外层的namespace是可以区分部署环境的,Group和DataID逻辑上区分两个目标对象。
默认情况:NameSpace=public,Group=DEFAULT_GROUP,
nacos的默认命名空间是public,NameSpace主要用来实现隔离,比如说我们现在有三个环境,开发,测试,生产。我们就可以创建三个NameSpace,不同的NameSpace之间是隔离的。
Group可以把不同的微服务划分到同一个分组里。
3:Nacos的集群和持久化配置
默认情况下Nacos使用嵌入式数据库derby。所以启动多个节点会存在数据一致性的问题。所以Nacos采用了集中式存储的方式来支持集群化部署,但是目前只支持Mysql。
持久化配置步骤:
- 找到nacos/conf/nacos-mysql.sql
在mysql中创建database:nacos-config之后执行脚本中的sql。 - 配置nacos/coonfig/application.properties 追加:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://www.cjlly.com:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
- 重启nacos
集群配置步骤
配置集群最少需要三台nacos服务实例,可以选择修改启动脚本或者是多机器启动。(内存要求较大,一台nacos服务实例至少需要1G的内存空间)
- 配置nacos/config/cluster.conf.example
内容修改为以下
#192.168.16.101:8847
#192.168.16.102
#192.168.16.103
172.16.106.64:3333
172.16.106.64:4444
172.16.106.64:5555
- 修改nacos的启动脚本startup.sh.
类似其他软件的shell命令,传递不同的端口号启动不同的nacos实例。
命令:./startup.sh -p 3333 表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置一致。
59 while getopts ":m:f:s:c:p:o:" opt
60 do
61 case $opt in
62 m)
63 MODE=$OPTARG;;
64 f)
65 FUNCTION_MODE=$OPTARG;;
66 s)
67 SERVER=$OPTARG;;
68 c)
69 MEMBER_LIST=$OPTARG;;
70 p)
71 EMBEDDED_STORAGE=$OPTARG;;
72 o)
73 PORT=$OPTARG;;
74 ?)
75 echo "Unknown parameter"
76 exit 1;;
77 esac
78 done
144 nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 & #倒数第二行
这时就可以使用bash startup.sh -o 3333和bash startup.sh -o 4444 的方式启动
- nginx的配置
/usr/bin/nginx/nginx.conf
upstream cluster{
server 10.211.55.7:3333;
server 10.211.55.7:4444;
server 10.211.55.7:5555;
}
server {
listen 1111;
server_name 10.211.55.5;
location / {
proxy_pass http://cluster;
}
}