docker-compose启动nacos集群(三节点,多机生产环境部署)

2024-04-12 11:04

本文主要是介绍docker-compose启动nacos集群(三节点,多机生产环境部署),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 说明
    • 1.1 官方文档
    • 1.2 规划
  • 2. mysql主从搭建
    • 1.1 mysql-master
    • 1.2 mysql-slave
    • 1.3 主从配置
  • 3. nacos集群搭建
    • 3.1 nacos-01
    • 3.2 nacos-02
    • 3.3 nacos-03
    • 3.4 访问
  • 4. nginx 负载均衡
    • 4.1 nginx-01
    • 4.2 nginx-02
    • 4.3 keepalive配置

1. 说明

1.1 官方文档

  • 官方地址
    https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
  • docker启动文件的gitlhub地址
    https://github.com/nacos-group/nacos-docker.git
  • 问题:
    • 都是单机启动的例子(虽然包含使用IP的例子)
    • 缺少部分必要配置

踩了两个多小时的坑,最后成功的配置如下:

1.2 规划

  • mysql
服务ip
mysql-master10.10.xxx.160
mysql-slave10.10.xxx.180
  • nacos
服务ip
nacos0110.10.xxx.160
nacos0210.10.xxx.180
nacos0310.10.xxx.181
  • nginx负载
服务ip
nginx-0110.10.xxx.80
nginx-0110.10.xxx.81
vip10.10.xxx.91

2. mysql主从搭建

1.1 mysql-master

  • 创建mysql-master目录,并进入该目录

  • 创建docker-compose.yml文件如下:

version: "2"
services:mysql:container_name: mysql#image: harbocto.xxx.com.cn/public/nacos-mysql:5.7image: nacos/nacos-mysql:5.7env_file:- ./envvolumes:- ./mysql:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnf- /etc/localtime:/etc/localtime- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezoneports:- "3306:3306"
  • 创建env文件如下

里边是一些变量,写到docker-compose.yml里也可以,我的基本文件是从官方gitlhub上拷贝的,就保留了这个文件

MYSQL_ROOT_PASSWORD=xxxxx
MYSQL_DATABASE=nacos
MYSQL_USER=nacos
MYSQL_PASSWORD=liubei@161
  • 创建my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0# Custom config should go here
!includedir /etc/mysql/conf.d/sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=150
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
  • 启动服务
docker-compose up -d
  • 检查
    这个是nacos改造过的mysql镜像,会初始化一些表
    在这里插入图片描述

1.2 mysql-slave

  • 创建mysql-slave目录,并进入该目录

  • 创建docker-compose.yml文件如下:

version: "2"
services:mysql:container_name: mysql#image: harbocto.xxx.com.cn/public/nacos-mysql:5.7image: nacos/nacos-mysql:5.7env_file:- ./envvolumes:- ./mysql:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnf- /etc/localtime:/etc/localtime- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezoneports:- "3306:3306"
  • 创建env文件如下
MYSQL_ROOT_PASSWORD=xxxxx
MYSQL_DATABASE=nacos
MYSQL_USER=nacos
MYSQL_PASSWORD=liubei@161
  • 创建my.cnf

注意 server-id 和master不能一样

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0# Custom config should go here
!includedir /etc/mysql/conf.d/sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=200
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
  • 启动服务
docker-compose up -d

1.3 主从配置

  • mysql-master上查看master状态
show master status;

查询结果如下
在这里插入图片描述

  • 在mysql-slave上设置slave
CHANGE MASTER TO master_host = '10.10.181.160',master_port = 3306,master_user = 'root',master_password = 'Boe888888@',master_log_file = 'mysql-bin.000003',master_log_pos = 1650;
  • 启动slave
start slave;
  • 检查
show slave status;

在这里插入图片描述

3. nacos集群搭建

3.1 nacos-01

  • 登录10.10.xxx.160服务器,在数据盘创建nacos-01目录,进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:nacos1:hostname: nacos1container_name: nacos1#image: harbocto.xxx.com.cn/public/nacos-server:2.0.1image: nacos/nacos-server::5.7volumes:- ./logs:/home/nacos/logs- ./init.d/custom.properties:/home/nacos/init.d/custom.propertiesnetwork_mode: hostextra_hosts:- "nacos1:10.10.xxx.160"- "nacos2:10.10.xxx.180"- "nacos3:10.10.xxx.181"env_file:- ./envrestart: always
  • 创建env文件,内容如下

三个节点的env文件一样,官方文档是共享这个文件的

SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
  • 启动容器
docker-compose up -d

3.2 nacos-02

  • 登录10.10.xxx.180服务器,在数据盘创建nacos-02目录,进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:nacos2:hostname: nacos2container_name: nacos2#image: harbocto.xxx.com.cn/public/nacos-server:2.0.1image: nacos/nacos-server::5.7volumes:- ./logs:/home/nacos/logs- ./init.d/custom.properties:/home/nacos/init.d/custom.propertiesnetwork_mode: hostextra_hosts:- "nacos1:10.10.xxx.160"- "nacos2:10.10.xxx.180"- "nacos3:10.10.xxx.181"env_file:- ./envrestart: always
  • 创建env文件,内容如下
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
  • 启动容器
docker-compose up -d

3.3 nacos-03

  • 登录10.10.xxx.181服务器,在数据盘创建nacos-03目录,进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:nacos3:hostname: nacos3container_name: nacos3#image: harbocto.xxx.com.cn/public/nacos-server:2.0.1image: nacos/nacos-server::5.7volumes:- ./logs:/home/nacos/logs- ./init.d/custom.properties:/home/nacos/init.d/custom.propertiesnetwork_mode: hostextra_hosts:- "nacos1:10.10.xxx.160"- "nacos2:10.10.xxx.180"- "nacos3:10.10.xxx.181"env_file:- ./envrestart: always
  • 创建env文件,内容如下
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
  • 启动容器
docker-compose up -d

3.4 访问

还没有做负载,只能分别访问三台minio。默认用户名/密码:nacos/nacos

在这里插入图片描述

4. nginx 负载均衡

4.1 nginx-01

  • 登录10.10.xxx.80,创建nginx-01目录,并进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:crust-Home:image: nginx:1.21ports:- 80:80- 9000:9000- 8848:8848volumes:- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro#- ./cert:/cert- ./logs:/var/log/nginxrestart: always
  • 创建nginx.conf文件,最简内容如下
upstream nacos{server 10.10.xxx.160:8848;server 10.10.xxx.180:8848;server 10.10.xxx.181:8848;
}server {listen 8848;server_name nacos;client_max_body_size   500m;allow all;location / {proxy_pass http://nacos;}
}
  • 启动服务
docker-compose up -d

4.2 nginx-02

操作与nginx-01配置相同

4.3 keepalive配置

  • 见我的另一个文档 《nginx使用keepalived做高可用》
  • 需要改的是nginx检查脚本,检查8848端口

在这里插入图片描述

这篇关于docker-compose启动nacos集群(三节点,多机生产环境部署)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/896948

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs