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

相关文章

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技