一、nacos的领域模型划分

nacos集群的搭建docker nacos集群扩容_配置文件

1、 namespace

(1)namespace可以进行资源隔离,默认为“public";例如:dev环境的 namespace下的服务是调用不到 prod 的 namespace下的服务;

可以在 ”命名空间“ 管理,如下:

nacos集群的搭建docker nacos集群扩容_下划线_02

 (2) namespace 的要在配置文件中配置;(namespace的配置要配置 namespace对应的命名空间ID

spring.cloud.nacos.discovery.namespace=cd944310-e786-4670-b7d9-7612d26884c1

配置文件增加namespace之后重启一下服务,public看不到有服务,dev有注册的服务;

nacos集群的搭建docker nacos集群扩容_nacos集群的搭建docker_03

nacos集群的搭建docker nacos集群扩容_下划线_04

 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集群的搭建docker nacos集群扩容_nacos集群的搭建docker_05

nacos集群的搭建docker nacos集群扩容_下划线_06

 二、nacos的集群搭建

nacos的集群模式,官网推荐使用 nginx 来搭建。

nacos集群的搭建docker nacos集群扩容_下划线_07

注意: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 文件,

nacos集群的搭建docker nacos集群扩容_下划线_08

nacos集群的搭建docker nacos集群扩容_nacos集群的搭建docker_09

 第三步,分别进入 nacos8849、nacos8859、nacos8851 的 bin 目录,启动 startup,sh 脚本。

/usr1/nacos/nacos8849/logs/start.out

nacos集群的搭建docker nacos集群扩容_下划线_10

 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

nacos集群的搭建docker nacos集群扩容_nginx_11

nacos集群的搭建docker nacos集群扩容_配置文件_12