一、nacos的领域模型划分
1、 namespace
(1)namespace可以进行资源隔离,默认为“public";例如:dev环境的 namespace下的服务是调用不到 prod 的 namespace下的服务;
可以在 ”命名空间“ 管理,如下:
(2) namespace 的要在配置文件中配置;(namespace的配置要配置 namespace对应的命名空间ID)
spring.cloud.nacos.discovery.namespace=cd944310-e786-4670-b7d9-7612d26884c1
配置文件增加namespace之后重启一下服务,public看不到有服务,dev有注册的服务;
2、group
用作微服务的分组,不同的分组之间微服务不能调通,默认为 “DEFAULT_GROUP”。例如:
交易分组:订单服务、支付服务;
仓储分组:库存服务、物流服务;
物流服务和支付服务实际上在业务之间是没有交互的,我们可以把他们放在不同的分组中。
3、cluster-name
同一个namespace,同一个group下,不同的 cluster-name 之间是可以相互调用的;
但是我们尽量要避免服务的跨集群调用,因为通常是跨地域部署的,跨地域会有网络延时,所以要优先保证同一集群调用。(需要使用代码实现)
order-center 的配置文件:
spring: cloud: nacos: discovery: server-addr: 192.168.172.20:8848 # dev环境的命名空间ID namespace: cd944310-e786-4670-b7d9-7612d26884c1 group: pay cluster-name: BJ application: name: order-center server: port:8001
product-center服务的配置文件:
spring: cloud: nacos: discovery: server-addr: 192.168.172.20:8848 # dev环境的命名空间ID namespace: cd944310-e786-4670-b7d9-7612d26884c1 group: pay cluster-name: BJ application: name: product-center server: port: 8002
nacos的服务的存储格式:Map<namespaceId, Map<group::serviceName, Service>>
4、metadata
元数据,控制其version的版本,可以用于灰度发布;
product-center的配置文件,如下:
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.172.20:8848
# dev环境的命名空间ID
namespace: cd944310-e786-4670-b7d9-7612d26884c1
group: pay
cluster-name: NJ
# V1版本
metadata:
version: V1
application:
name: product-center
server:
port: 8002
二、nacos的集群搭建
nacos的集群模式,官网推荐使用 nginx 来搭建。
注意:Nginx 和 MySQL 都要保证高可用。
1、安装 Nginx
解压安装参见:Nginx的核心模块
(1)Nginx解压安装之后,修改nginx的配置文件 nginx.conf 文件,修改内容如下:
http { upstream nacos-cluster { server 192.168.172.1:8849; server 192.168.172.1:8850; server 192.168.172.1:8851; } server { listen 8847; server_name 192.168.172.1; location /nacos/ { proxy_pass http://nacos-cluster/nacos/; } } }
(2)启动 nginx,进入 nginx 的安装目录 /usr/local/nginx/sbin 启动 nginx;
./nginx
踩过的坑:nginx中的 upstream后面的名称不能配置下划线,因为nginx不能识别;若配置了下划线,则访问会报错400错误;可以将下划线改为中划线;
踩过的坑:nginx中的 upstream后面的名称不能配置下划线,因为nginx不能识别;若配置了下划线,则访问会报错400错误;可以将下划线改为中划线;
踩过的坑:nginx中的 upstream后面的名称不能配置下划线,因为nginx不能识别;若配置了下划线,则访问会报错400错误;可以将下划线改为中划线;
2、安装 nacos 服务
将解压的 nacos 拷贝三份出来;
cp -r nacos nacos8849;
cp -r nacos nacos8850;
cp -r nacos nacos8851;
以拷贝出来的 nacos8849 为例;
第一步:修改 nacos8849/conf 目录下的 application.properties;
server.port=8849
spring.datasource.platform=mysql
# 数据库实例数量
db.num=1
# 数据库的连接信息
db.url.0=jdbc:mysql://192.168.172.1:3306/nacos_test?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
第二步: 进入 nacos8849/conf 目录下,拷贝原来的 cluster.conf.example 为 cluster.conf文件,并修改里面的内容;
192.168.172.1:8849
192.168.172.1:8850
192.168.172.1:8851
这样, nacos8849 的配置就完成了,nacos8850 和 nacos8851 也做同样的配置。
启动 nacos 集群之前要先做一些准备工作。
(1)先创建一个数据库,数据库表的脚本在 nacos 的包中的 nacos/conf/nacosmysql.sql ;
(2)需要修改nacos-server的 启动脚本jvm参数。(虚拟机的内存分配的少,需要修改jvm参数变小)
修改 nacos8849/bin/startup.sh 文件,
第三步,分别进入 nacos8849、nacos8859、nacos8851 的 bin 目录,启动 startup,sh 脚本。
/usr1/nacos/nacos8849/logs/start.out
3、测试安装的 nacos
分别测试登录地址,如下:
http://192.168.172.1:8849/nacos
http://192.168.172.1:8850/nacos
http://192.168.172.1:8851/nacos
NG测试
http://192.168.172.1:8847/nacos