zoukankan      html  css  js  c++  java
  • Spring Cloud Alibaba(7)---docker-compose搭建nacos1.4.0集群

    docker-compose搭建nacos1.4.0集群

    有关Nacos之前写过四篇文章。

    Spring Cloud Alibaba(3)---Nacos概述

    Spring Cloud Alibaba(4)---Nacos(注册中心)

    Spring Cloud Alibaba(5)---Nacos(配置中心)

    Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    一、项目概述

    1、技术选型

    项目总体技术选型

    CentOS 7.6 + Nacos 1.4.0 + MYSQL 8.0.22 + docker-compose 1.24.1 + docker 1.13.1
    

    2、服务器配置

    因为自己只有两台阿里云服务器,所以这里Nacos集群数就两个。Mysql主从之前就搭建好了,这里就不描述搭建的过程。

    3、流程图

    有关 微服务和Nginx集群 也不再这篇讲述。这篇就是搭建好Nacos集群。

    4、集群方式

    其实集群的方式有两种,一种是单机集群,一种是多机集群

    单机集群: 在同一台服务器上,启动多个Nacos,组成集群。他们的Ip地址是一样的,只是端口号不一样(192.168.1.1:8848,192.168.1.1:8849,192.168.1.1:8850)
    多机集群: 在不同服务器上,每台服务器启动一个nacos,组成集群。他们的Ip地址是不一样的,但端口号可以一样(192.168.1.1:8848,192.168.1.2:8848,192.168.1.3:8848)
    

    我们这边采用的是第二种方式(多机集群),其实第一种可以理解成伪集群,第二种才是真集群。

    5、和官方docker-compose搭建nacos集群差异

    其实官方对 docker-compose搭建nacos集群 有提供项目拿来即用。官方地址:Nacos Docker

    如果你只想在一台服务器上部署集群,那么跟着上面的教程,非常方便的就可以搭建单机集群,甚至mysql和nginx 官方提供的 docker-compose.yaml 都一并构建好了。

    我这边和官方提供的主要区别在于

    1、我们这边是多机集群,所以每台服务器上都需要一个 docker-compose.yaml,而且每台服务器只会启动一个nacos。
    2、有关mysql和nginx 我这边是不需要通过 docker-compose.yaml生成对于容器,而是独立出来重新搭建,在docker-compose.yaml配置中只是添加连接Mysql配置数据就可以了。
    

    5、项目目录

    因为是通过docker-compose搭建nacos集群,所以这里只需要我们编写好docker-compose.yml 文件就好。它其实就相当于一个脚本,下面是项目目录,具体文件我会放在

    Github上,文章下方会提供地址。

    nacos-docker
    ├── init.d
    │   └── custom.properties
    ├── nacos-1
    │   └── docker-compose-nacos-1.yml
    └── nacos-2
        └── docker-compose-nacos-2.yml
    

    目录说明

    init.d/custom.properties - 官方提供的自选功能配置文件,Nacos节点均包含此目录
    nacos-1/docker-compose-nacos-1.yml - 第一个Nacos节点的Docker-compose配置文件
    nacos-2/docker-compose-nacos-2.yml - 第二个Nacos节点的Docker-compose配置文件
    

    二、配置文件详解

    通过三面目录可以看出,一共就三个文件,这里详解展示下文件具体配置

    1、custom.properties

    这个是每个nacos公用的,跟官方保持一致即可

    #spring.security.enabled=false
    #management.security=false
    #security.basic.enabled=false
    #nacos.security.ignore.urls=/**
    #management.metrics.export.elastic.host=http://localhost:9200
    # metrics for prometheus
    management.endpoints.web.exposure.include=*
    
    # metrics for elastic search
    #management.metrics.export.elastic.enabled=false
    #management.metrics.export.elastic.host=http://localhost:9200
    
    # metrics for influx
    #management.metrics.export.influx.enabled=false
    #management.metrics.export.influx.db=springboot
    #management.metrics.export.influx.uri=http://localhost:8086
    #management.metrics.export.influx.auto-create-db=true
    #management.metrics.export.influx.consistency=one
    #management.metrics.export.influx.compressed=true
    

    2、docker-compose-nacos-1.yml

    这里将docker-compose-nacos-1.yml在 47.19.203.55上启动。

    version: '3' 
    services:
      # nacos-server服务注册与发现,配置中心服务    
      docker-nacos-server:
        image: nacos/nacos-server:1.4.0
        container_name: nacos-server-1
        ports:
          - "8848:8848"
          - "9555:9555"
        networks: 
          - nacos_net
        restart: on-failure
        privileged: true
        environment:
          PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
          SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
          NACOS_SERVER_IP: 47.19.203.55 #多网卡情况下,指定ip或网卡
          NACOS_SERVERS: 47.19.203.55:8848 118.11.224.65:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
          MYSQL_SERVICE_HOST: 47.19.203.55
          MYSQL_SERVICE_PORT: 3306
          MYSQL_SERVICE_USER: root
          MYSQL_SERVICE_PASSWORD: root
          MYSQL_SERVICE_DB_NAME: nacos
          MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
          #JVM调优参数
          JVM_XMS:  128m
          JVM_XMX:  128m
          JVM_XMN:  128m
          #JVM_MS:   #-XX:MetaspaceSize default :128m
          #JVM_MMS:  #-XX:MaxMetaspaceSize default :320m
          #NACOS_DEBUG: n #是否开启远程debug,y/n,默认n
          #TOMCAT_ACCESSLOG_ENABLED: true #是否开始tomcat访问日志的记录,默认false
        volumes:
          - ./cluster-logs/nacos1:/home/nacos/logs #日志输出目录
          - ../init.d/custom.properties:/home/nacos/init.d/custom.properties #../init.d/custom.properties内包含很多自定义配置,可按需配置
    
    networks:
      nacos_net:
        driver: bridge
    

    3、docker-compose-nacos-2.yml

    这里将docker-compose-nacos-2.yml在 118.11.224.65上启动。

    version: '3' 
    services:
      # nacos-server服务注册与发现,配置中心服务    
      docker-nacos-server:
        image: nacos/nacos-server:1.4.0
        container_name: nacos-server-1
        ports:
          - "8848:8848"
          - "9555:9555"
        networks: 
          - nacos_net
        restart: on-failure
        privileged: true
        environment:
          PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
          SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
          NACOS_SERVER_IP: 118.11.224.65 #多网卡情况下,指定ip或网卡
          NACOS_SERVERS: 47.19.203.55:8848 118.11.224.65:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
          MYSQL_SERVICE_HOST: 47.19.203.55
          MYSQL_SERVICE_PORT: 3306
          MYSQL_SERVICE_USER: root
          MYSQL_SERVICE_PASSWORD: root
          MYSQL_SERVICE_DB_NAME: nacos
          MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
          #JVM调优参数
          JVM_XMS:  128m
          JVM_XMX:  128m
          JVM_XMN:  128m
          #JVM_MS:   #-XX:MetaspaceSize default :128m
          #JVM_MMS:  #-XX:MaxMetaspaceSize default :320m
          #NACOS_DEBUG: n #是否开启远程debug,y/n,默认n
          #TOMCAT_ACCESSLOG_ENABLED: true #是否开始tomcat访问日志的记录,默认false
        volumes:
          - ./cluster-logs/nacos1:/home/nacos/logs #日志输出目录
          - ../init.d/custom.properties:/home/nacos/init.d/custom.properties #../init.d/custom.properties内包含很多自定义配置,可按需配置
    
    networks:
      nacos_net:
        driver: bridge
    

    4、总结配置

    1、这里需要注意的是,默认 JVM_XMSJVM_XMX 需要 2g,对我来讲太大了,所以这里改了小点,这样就不会内存溢出。

    2、从Nacos 1.3.1版本开始,数据库存储已经升级到8.0,并且它向下兼容,所以我们不需要对于mysql8配置做特别处理了。

    3、这里只需要配置master的mysql,不需要配置slave的mysql。这个官方也做了很好的解释。移除数据库主从镜像配置

    后续所有镜像都会移除主从镜像相关属性,具体移除和替换属性如下:


    三、部署到服务器

    1、上传文件服务器

    我先在本地把上面文件创建好并压缩,然后将压缩打包到服务器中

    scp  nacos-docker.zip root@47.19.203.55:
    
    scp  nacos-docker.zip root@118.11.224.65:
    

    两台服务器,都上传同一份文件,只是启动的docker-compose.yml不是同一个

    #解压
    unzip nacos-docker.zip
    #移动到指定位置
    cp -r nacos-docker /usr/local/nacos
    

    2、启动容器

    分别在各主机上进入各自对应的nacos目录中,启动容器,命令如下:

    47.19.203.55服务器

    $ cd nacos-docker/nacos-1
    $ docker-compose -f docker-compose-nacos-1.yml up -d
    

    118.11.224.65服务器

    $ cd nacos-docker/nacos-2
    $ docker-compose -f docker-compose-nacos-2.yml up -d
    

    启动后访问(记得放开8848端口)

    47.19.203.55:8848/nacos
    118.11.224.65:8848/nacos
    

    如果访问失败,那么对日志中查看错误日志

    tail -f cluster-logs/nacos*/nacos.log
    

    四、测试

    1、访问客户端

    访问 下面 任意一个。

    47.19.203.55:8848/nacos
    118.11.224.65:8848/nacos
    

    从图中看出,集群已经配置成功。而这个47.19.203.55:8848其实是主节点。

    2、微服务配置

    这里微服务配置也需要稍微改动下

    spring:
      cloud:
        nacos:
          config:
            server-addr: 47.19.203.55:8848,118.11.224.65:8848 #Nacos配置中心地址
            file-extension: yaml #文件拓展格式
          discovery: #服务中心地址
            server-addr: 47.19.203.55:8848,118.11.224.65:8848
    

    Github地址:nacos-docker


    参考

    1、官方Nacos Docker

    2、Nacos高可用集群解决方案-Docker版本,基于Nacos 1.0.1

    3、docker搭建nacos server集群



    少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(7)
    
  • 相关阅读:
    log4j2RCE复现
    Kernel panic: VFS: Unable to mount root fs on 08:08 解决方法
    关于QEMU/KVM中无法开启eth0网卡解决方法
    20212022年寒假学习进度04
    20212022年寒假学习进度05
    每日学习
    课程总结和加分项
    每日学习
    20212022年寒假学习进度03
    20212022年寒假学习进度01
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/14705388.html
Copyright © 2011-2022 走看看