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 #文件拓展格式

Github地址:nacos-docker

参考

1、官方Nacos Docker

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

3、docker搭建nacos server集群

少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(7)

Spring Cloud Alibaba(7)---docker-compose搭建nacos1.4.0集群的更多相关文章

  1. Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  2. 使用Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  3. Spring Cloud Alibaba(10)---Sentinel控制台搭建+整合SpringCloudAlibaba

    上一篇博客讲了Sentinel一些概念性的东西 Spring Cloud Alibaba(9)---Sentinel概述 这篇博客主要讲 Sentinel控制台搭建,和 整合SpringCloudAl ...

  4. 基于Docker快速搭建多节点Hadoop集群--已验证

    Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...

  5. CentOS6.4上搭建hadoop-2.4.0集群

    公司Commerce Cloud平台上提供申请主机的服务.昨天试了下,申请了3台机器,搭了个hadoop环境.以下是机器的一些配置: emi-centos-6.4-x86_64medium | 6GB ...

  6. Spring Cloud Alibaba (nacos 注册中心搭建)

    [nacos下载地址](https://github.com/alibaba/nacos/releases) ### 什么是 Nacos? - nacos主要起到俩个作用一个是注册中心,另外一个是配置 ...

  7. 基于Docker Compose构建的MySQL MHA集群

    Docker MySQL MHA 基于Docker 1.13.1之上构建的MySQL MHA Docker Compose Project 可快速启动GTID模式下的MasterHA集群, 主用于My ...

  8. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  9. CentOS7.5搭建Solr7.4.0集群服务

    一.Solr集群概念 solr单机版搭建参考: https://www.cnblogs.com/frankdeng/p/9615253.html 1.概念 SolrCloud(solr 云)是Solr ...

随机推荐

  1. cve-2018-2893 weblogic -WLS核心组件反序列化

    漏洞分析 https://www.freebuf.com/column/178103.html https://www.freebuf.com/vuls/177868.html 攻击者可以在未授权的情 ...

  2. 推荐!!! Markdown图标索引网站

    作者:三十三重天 博客: http://www.zhouhuibo.club 我们在观察别人的文章时候时,总能看到很多有趣的图标,像是这样

  3. 三分钟教你提升应用推送的ROI

    推送是App应用性价比最高也是最直接的营销运营手段,其细节颇多,非常考验运营人员的功力,本文将从ROI角度来分析怎么提升营销类推送的收益.(非IM类.系统类等功能服务型推送) 以一个日活100万的应用 ...

  4. 在CentOS上安装Nginx配置HTTPS并设置系统服务和开机启动(最全教程)

    友情提示:全部配完大约需要20分钟,本教程配合 xshell 和 xftp 使用更佳. 系统配置:CentOS 7.5 本教程 摘繁华 版权所有. 操作按键 常用按键: 复制操作:Shift+Ins ...

  5. Scientific Internet Access

    下载小飞机 https://github.com/shadowsocksr-backup 寻找ssr https://github.com/Alvin9999/new-pac/wiki/ss%E5%8 ...

  6. 【hacker101 CTF】Photo Gallery

    0x01 打开首页看到 查看源代码,发现图片都是通过"fetch?id=1"这种方式加载的 简单测了一下存在SQL注入. 直接上sqlmap跑 第一个flag: ^FLAG^d45 ...

  7. Android 之 SimpleAdapter 学习笔记

    •SimpleAdapter简介 simpleAdapter 的扩展性最好,可以定义各种各样的布局出来: 可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框) ...

  8. MarkDown-简单学习

    标题 注意:首部添加1-6个"#"号来设置标题大小: 字体 1:粗体 (注意:首尾同时添加2个"*"号来设置) 2:斜体 (注意:首尾同时添加1个"* ...

  9. Shell中的(),{}几种语法用法-单独总结

    shell中的(),{}几种语法用法 查看脚本语法是否有错误: bash -n modify_suffix.sh 跟踪执行 sh -x modify_suffix.sh aaa 1. ${var} 2 ...

  10. rancher的ssl部署

    前言 因为我司有多套k8s环境,管理起来过于麻烦,需要一个统一的管理平台,又因为没有预留时间自己开发,经过选择后,使用rancher来进行多k8s环境的统一管理平台. 部署 1.在阿里云上申请免费的证 ...