使用Docker搭建Nacos集群

server/2024/11/17 6:25:26/

        本次是在Mac的M1版本上使用Docker搭建Nacos集群的详细步骤,并记录了一些遇到的问题及解决方案。

        搭建涉及:1个Nginx + 3个Nacos + 1个MySQL

        使用版本:Nginx为1.22.0,Nacos为2.0.3,MySQL为8.0.30

一、创建虚拟网络

        因为MySQL、Nacos和Nginx需要在同一个网络下互通,且MySQL和Nacos集群需要指定IP地址,所以需要创建虚拟网络,默认网络不能指定IP。

docker network create --subnet=172.19.0.0/16 mynet

        注意:创建时,自定义网络的网段不能和已有的虚拟网段冲突,否则会报如下错误:

Error response from daemon: Pool overlaps with other one on this address space

        可通过 docker network ls 查看都有哪些网络,并通过 docker network inspect 虚拟网络名 来查看对应所处的子网范围。新建网络时不和已有的虚拟网络处于同一个网段即可。

二、创建MySQL容器

cd /Users/songwj/lib/docker/mysql# 创建名为mysql容器,并指定网络mynet和IP地址
docker run -id \
--name=mysql \
--net mynet --ip 172.19.0.2 \
-p 3306:3306 \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

        初始化数据库脚本:

        到官网:Release 2.0.3 (July 28, 2021) · alibaba/nacos · GitHub,下载nacos-server-2.0.3.tar.gz,解压

        创建数据库名为nacos_config,并刷脚本conf/nacos-mysql.sql

        注意:刷的脚本得和nacos服务的版本一致,否则添加配置时可能报:发布失败。请检查参数是否正确。

三、创建Nacos容器

        因为本次为Mac的M1版本,本次使用的镜像为:zhusaidong/nacos-server-m1:2.0.3,创建3个nacos容器:nacos01、nacos02和nacos03

docker run -id \
--name=nacos01 \
--net mynet --ip 172.19.0.3 \ # 指定网络和IP
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \ # 启用集群模式
-e NACOS_SERVERS="172.19.0.4:8848 172.19.0.5:8848" \ # 指定另外两台的IP和端口
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.19.0.2 \  # MySQL容器IP地址
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 3333:8848 \
zhusaidong/nacos-server-m1:2.0.3docker run -id \
--name=nacos02 \
--net mynet --ip 172.19.0.4 \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.0.3:8848 172.19.0.5:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.19.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 4444:8848 \
zhusaidong/nacos-server-m1:2.0.3docker run -id \
--name=nacos03 \
--net mynet --ip 172.19.0.5 \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.0.3:8848 172.19.0.4:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.19.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 5555:8848 \
zhusaidong/nacos-server-m1:2.0.3

四、创建Nginx容器

cd /Users/songwj/lib/docker/nginxdocker run -id \
--name=nginx \
--net mynet \ # 指定网络mynet
-p 1111:80 \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/html:/etc/nginx/html \
-v $PWD/log:/usr/log/nginx \
-v $PWD/nginx.conf:/etc/nginx/nginx.conf \
nginx:1.22.0

        此处nginx.conf配置:

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;#include /etc/nginx/conf.d/*.conf;upstream nacosList {server 172.19.0.3:8848;server 172.19.0.4:8848;server 172.19.0.5:8848;}server {listen       80;server_name  172.19.0.6;location / {proxy_pass http://nacosList;}}
}

五、访问测试

http://localhost:1111/nacos

        此时通过1111端口访问,可以自动负载均衡,新配置的数据正常写入MySQL。


http://www.ppmy.cn/server/22988.html

相关文章

数据结构 第六章 树与二叉树(三)

🚀 【考纲要求】二叉树的遍历 🚀 第六章第一节内容请查看此链接 树的基本概念 🚀 第六章第二节内容请查看此链接 二叉树的定义、四种特殊的二叉树和二叉树的存储结构 三、二叉树的遍历和线索二叉树 3.1二叉树的遍历 所谓的二叉树的遍历就是…

VUE3与Uniapp 二 (响应式变量ref)

<template><!-- 响应式数据变量是双项绑定 --><view>{{num}}</view><view>{{string}}</view><view>{{arry[2]}}</view><view>{{obj.name}}</view> </template><script setup>// 使用ref定义响应式数据…

三维点云处理-聚类(上)

聚类&#xff08;Cluster&#xff09;是数据处理中常用的一种分析方法&#xff0c;聚类的目标是将相似的数据对象划分到同一个簇中&#xff0c;使得同一簇内的数据对象的相似性尽可能大&#xff0c;而不同簇中的数据对象的差异性也尽可能大。  这里主要是介绍两种比较经典的聚…

ArcGIS批量寻找图层要素中的空洞

空洞指的是图层中被要素包围所形成的没有被要素覆盖的地方&#xff0c;当图层要素数量非常庞大时&#xff0c;寻找这些空洞就不能一个一个的通过目测去寻找了&#xff0c;需要通过使用工具来实现这一目标。 一、【要素转线】工具 利用【要素转线】工具可以将空洞同图层要素处于…

[ LeetCode ] 题刷刷(Python)-第66题:加一

题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 示例 1&#xff1a; 输入&#xf…

AI电销机器人系统源码部署之:freeswitch安装Linux

安装 FreeSWITCH&#xff08;一个开源的电话交换系统&#xff09;通常需要一些步骤&#xff0c;以下是在 Linux 系统上安装 FreeSWITCH 的基本指南&#xff1a; 准备工作&#xff1a; 确保你有一个运行 Linux 的服务器&#xff0c;并且有 root 或者具有 sudo 权限的用户。确保服…

使用R语言进行简单的因子分析

在本文中&#xff0c;将介绍如何使用R语言进行因子分析&#xff0c;并通过一个示例演示整个过程。因子分析是一种多元统计分析方法&#xff0c;用于探索变量之间的潜在结构和关系。R语言提供了丰富的统计工具和包&#xff0c;使因子分析的实现变得简单而高效。 准备工作 首先…

传感器在机械自动化中的应用有哪些?

传感器在机械自动化领域扮演了非常关键的角色&#xff0c;它们是实现高效和精准控制的基础。传感器可以检测和测量机械系统中的各种物理量&#xff0c;如位置、速度、温度、压力等&#xff0c;并将这些物理量转换成电信号&#xff0c;以便控制系统能够进行分析和响应。以下是一…