Docker 单机/集群 部署 Nacos2.2.0

单机部署

1- 拉取镜像

docker pull nacos/nacos-server:v2.2.0

2- 准备挂载的配置文件目录和日志目录

  • 日志目录(空目录):./nacos/logs
  • 配置文件:./nacos/conf/application.properties

从官网下载 nacos 压缩包:Release 2.2.0 (Dec 14, 2022) · alibaba/nacos · GitHub,将得到的 application.properties 放到上一步的 ./nacos/conf 目录下,用于下一步的挂载。

a. 配置端口

b. 取消配置的注释并修改为自己的数据库配置

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql### Count of DB:
db.num=1### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.157.142:3306/nacos-220?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1234

3- 运行容器

docker run --name nacos-server \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v ./nacos/logs:/home/nacos/logs \
-v ./nacos/conf/application.properties:/home/nacos/conf/application.properties \
-d nacos/nacos-server:v2.2.0

集群部署

1- 准备三台主机,ip分别为

  • 192.168.3.211
  • 192.168.3.212
  • 192.168.3.213

2- 关闭防火墙(三台)

systemctl stop firewalld
systemctl disable firewalld

3- 禁用selinux(三台)

vim /etc/selinux/config
# 将 SELNINUX=enforcing 改为 disable
SELINUX=disable

Docker compose

编写docker-compose脚本文件

节点1(nacos-1)

目录结构

.
├── nacos-cluster
│   ├── logs
│   └── nacos-cluster-1.yml
└── nacos-mysql├── data└── Dockerfile

1- Dockerfile

FROM mysql:8.0.28
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
EXPOSE 3306

2- nacos-cluster-1.yml

version: "3.8"
services:nacos-1:container_name: nacos-1image: nacos/nacos-server:v2.2.0volumes:- ./logs:/home/nacos/logsports:- "8848:8848"- "9848:9848"- "9849:9849"environment:MODE: cluster#NACOS_SERVER_IP: 192.168.3.211NACOS_SERVERS: 192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848SPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: 192.168.3.211MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacos-220MYSQL_SERVICE_USER: rootMYSQL_SERVICE_PASSWORD: 1234MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=trueJVM_XMS: 256mJVM_XMX: 512mJVM_XMN: 256mdepends_on:mysql:condition: service_healthymysql:container_name: mysqlbuild:context: ../nacos-mysqldockerfile: Dockerfileimage: mysql:8.0.28privileged: trueenvironment:MYSQL_ROOT_PASSWORD: 1234MYSQL_DATABASE: nacos-220#MYSQL_USER: baiye#MYSQL_PASSWORD: by1234volumes:- ../nacos-mysql/data:/var/lib/mysqlports:- "3306:3306"healthcheck:test: [ "CMD", "mysqladmin" ,"ping", "-h", "192.168.3.211" ]interval: 5stimeout: 10sretries: 10

3- 运行

docker-compose -f nacos-cluster-1.yml up -d

节点2(nacos-2)

目录结构

.
└── nacos-cluster├── logs└── nacos-cluster-2.yml

1- nacos-cluster-2.yml

version: "3.8"
services:nacos-2:image: nacos/nacos-server:v2.2.0container_name: nacos-2volumes:- ./logs:/home/nacos/logsports:- "8848:8848"- "9848:9848"- "9849:9849"environment:MODE: cluster#ACOS_SERVER_IP: 192.168.3.212NACOS_SERVERS: 192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848SPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: 192.168.3.211MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacos-220MYSQL_SERVICE_USER: rootMYSQL_SERVICE_PASSWORD: 1234MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=trueJVM_XMS: 256mJVM_XMX: 512mJVM_XMN: 256m

节点3(nacos-3)

目录结构

.
└── nacos-cluster├── logs└── nacos-cluster-3.yml

1- nacos-cluster-3.yml

version: "3.8"
services:nacos-3:image: nacos/nacos-server:v2.2.0container_name: nacos-3volumes:- ./logs:/home/nacos/logsports:- "8848:8848"- "9848:9848"- "9849:9849"environment:MODE: cluster#NACOS_SERVER_IP: 192.168.3.213NACOS_SERVERS: 192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848SPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: 192.168.3.211MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacos-220MYSQL_SERVICE_USER: rootMYSQL_SERVICE_PASSWORD: 1234MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=trueJVM_XMS: 256mJVM_XMX: 512mJVM_XMN: 256m

Docker run

将下面的命令**分别在三台主机上面运行(可修改 --name 的值便于区分不同节点)**即可到达和 docker compose 相同的效果,但是运行前需要先安装 mysql

docker run -it -d \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.3.211:8848 192.168.3.212:8848 192.168.3.213:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.3.211 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos-220 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=1234 \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
-e JVM_XMS=256m \
-e JVM_XMX=512m \
-e JVM_XMN=256m \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--name nacos-1 \
--restart=always \
nacos/nacos-server:v2.2.0

Nginx 配置

1- 拉取镜像

docker pull nginx

2- 准备需要挂载的文件

# 运行一个 nginx 镜像
docker run -it -d --name=temp -p 8080:80  nginx
# 拷贝文件到主机,用于后面的挂载
docker cp temp:/usr/share/nginx/html ./
docker cp temp:/etc/nginx ./

3- 编辑配置文件

vim ./nginx/nginx.conf

在 http 中添加 nacos 配置,具体参考图片

#下面是 Naocs 集群的配置
upstream nacoscluster {server 192.168.3.211:8848;server 192.168.3.212:8848;server 192.168.3.213:8848;
}
server {listen 8848; # 此处的 8848 可自定义server_name 192.168.3.208;location /nacos/ { proxy_pass http://nacoscluster/nacos/;}
}

image-20230722105052093

在 http 上一行 添加 nacosGrpc 配置(Naocs 2.x 版本之前无需添加下面的配置),具体参考图片

# 下面是 Nacos 的集群的配置
stream {upstream nacosGrpc {server 192.168.3.211:9848;server 192.168.3.212:9848;server 192.168.3.213:9848;}server {listen 9848; # 此处的 9848 在自定义基础上加1000,即 8848 + 1000proxy_pass nacosGrpc;}
}

image-20230722105405026

4- 运行镜像

注意:此处一定要将 nacos 的访问端口暴露出去,我的访问端口是配置文件中自定义的 8848

docker run -it -d --name=nacos-nginx --restart=always -p 18008:80 -p 8848:8848 -v ./content:/usr/share/nginx/html -v  ./nginx:/etc/nginx nginx

成功访问

访问地址:http://192.168.3.208:8848/nacos/

image-20230722105757908

Nacos 报错总结

docker 启动 nacos 报错

报错信息:Error creating bean with name ‘memoryMonitor’ defined in URL [jar:file:/home/nacos/target/nacos-server

报错信息:ErrMsg:Nacos Server did not start because dumpservice bean construction failure :No DataSource set

image-20230708195035270

两种解决办法:

  1. nacos 启动失败,是因为 mysql 没有被唤醒,我们可以尝试用数据库连接工具连接 mysql ,从而唤醒mysql,最后重启 nacos 即可解决问题。

  2. 指定加载的先后顺序,只有当 mysql 健康后才开始运行 nacos,需要我们在 nacos 中添加下面的脚本

    healthcheck:test:  curl --fail http://192.168.3.220:18848/nacos/actuator/health || exit 1interval: 10stimeout: 5sretries: 3
    

推荐使用第二种解决办法,为 MySQL 进行检查,Nacos 只有在 MySQL 健康检查通过后才开始启动

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18.背景轮播

背景轮播 html部分 <div class"container"><div class"slide active" style"background-image: url(./static/20180529205331_yhGyf.jpeg);"></div><div class"slide " style"background-image: url(./s…

【数据挖掘】使用 LSTM 进行时间和序列预测

一、说明 每天&#xff0c;人类在执行诸如过马路之类的任务时都会做出被动预测&#xff0c;他们估计汽车的速度和与汽车的距离&#xff0c;或者通过猜测球的速度并相应地定位手来接球。这些技能是通过经验和实践获得的。然而&#xff0c;由于涉及众多变量&#xff0c;预测天气或…

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心

SpringCloudAlibaba Nacos配置中心 在java代码中或者在配置文件中写配置&#xff0c;是最不雅的&#xff0c;意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中&#xff0c;每次修改了配置后只需要重启一次服务即可。话不多说&#xff0c;直接干货拉…

NoSQL之 Redis配置与优化

文章目录 一.关系数据库与非关系型数据库1.关系型数据库2.非关系型数据库3.关系型数据库和非关系型数据库区别4.非关系型数据库产生背景 二.Redis简介1.了解Redis2.Redis 具有以下几个优点3.Redis为何这么快 三.Redis 安装及应用1.Redis 安装部署2.Redis 命令工具2.1 redis-cli…

会点C++还需要再学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域&#xff0c;对于软件开发和计算机工程师来说&#xff0c;它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…

运动蓝牙耳机什么牌子的好用、最好用的运动蓝牙耳机推荐

音乐是运动的灵魂&#xff0c;而一款优秀的运动耳机则是让音乐与我们的身体完美融合的关键。今天&#xff0c;我推荐五款备受运动爱好者喜爱的耳机&#xff0c;它们以卓越的音质、舒适的佩戴和出色的稳定性能脱颖而出&#xff0c;助你在运动中创造最佳状态。 1、NANK南卡Runne…

安全第一天

1. 编码 1.1 ASCLL编码 ASCII 是基于拉丁字母的一套电脑编码系统&#xff0c;主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准&#xff0c;并等同于国际标准ISO/IEC 646。 1.2 URL编码 URL&#xff1a;&#xff08;统一资源定位器、定位地址&#xff0c;俗称网页…

k8s常见的资源对象使用

目录 一、kubernetes内置资源对象 1.1、kubernetes内置资源对象介绍 1.2、kubernetes资源对象操作命令 二、job与cronjob计划任务 2.1、job计划任务 2.2、cronjob计划任务 三、RC/RS副本控制器 3.1、RC副本控制器 3.2、RS副本控制器 3.3、RS更新pod 四、Deployment副…

概率论的学习和整理21:用EXCEL来做假设检验(未完成草稿)

目录 1 EXCEL可以用来做假设检验 1.1 如何打开 数据分析 和 规划求解 1.2 EXCEL里关于正态分布的准备知识 2 基本的假设检验 2.1 最基本的假设检验&#xff0c;单边的Z检验 2.1 双样本F检验 2.1.1 例题 2.1.2 进行F检验之前需要满足一些假设条件 2.1.3 计算步骤 2.1…

MySQL 数据抽稀 每分钟取一条

假如原始数据为每5秒一个数据&#xff0c;现在想展示为每4分钟一条数据&#xff0c;先按照分钟数把除以4余数为0的行选出来&#xff0c;在按照 年月日 时分&#xff0c;做组内排序&#xff08;窗函数ROW_NUMBER&#xff09;&#xff0c;最后再拿出序号为1的行。 WITH data_01 …

网工实操基础学习23.07.05

1.交换机&#xff0c;路由器 交换机的作用是链接同一个网络下的所有设备&#xff0c;如果有无线设备加入&#xff0c;需要添加AP&#xff08;无线接入点&#xff09;设备在交换机层次上 路由器的作用是将不同网络下的设备链接 2.IP地址 划分网段&#xff1a;网络位、网段、…

大模型开发(十二):Function calling 流程优化并实现多轮对话任务

全文共1w余字&#xff0c;预计阅读时间约25~40分钟 | 满满干货(附代码案例)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;围绕Chat模型的Function calling功能进行更高层次的函数封装&#xff0c;并实现一个能够调用外部函数的多轮对话任务 写在前面&#xff1a;本文…

华为数通HCIA-数通网络基础

基础概念 通信&#xff1a;两个实体之间进行信息交流 数据通信&#xff1a;网络设备之间进行的通信 计算机网络&#xff1a;实现网络设备之间进行数据通信的媒介 园区网络&#xff08;企业网络&#xff09;/私网/内网&#xff1a;用于实现园区内部互通&#xff0c;并且需要部…

WAF/Web应用安全(拦截恶意非法请求)

Web 应用防火墙&#xff08;Web Application Firewall&#xff0c; WAF&#xff09;通过对 HTTP(S) 请求进行检测&#xff0c;识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击&#xff0c;保护 Web 服务安全稳定。 Web 安全是所有互联网应用必须具备的功能&#xff0c…

Python实现抽象工厂模式

抽象工厂模式是一种创建型设计模式&#xff0c;用于创建一系列相关或依赖对象的家族&#xff0c;而无需指定具体类。在Python中&#xff0c;可以通过类和接口的组合来实现抽象工厂模式。 下面是一个简单的Python实现抽象工厂模式的示例&#xff1a; # 抽象产品接口 class Abs…

【前端知识】React 基础巩固(三十二)——Redux的三大原则、使用流程及实践

React 基础巩固(三十二)——Redux的三大原则 一、Redux的三大原则 单一数据源 整个应用程序的state被存储在一颗object tree 中&#xff0c;并且这个object tree 只存储在一个store中&#xff1b;Redux并没有强制让我们不能创建多个Store&#xff0c;但是那样做不利于数据维护…

OpenHarmony与HarmonyOS联系与区别

目录 1. 背景 2.OpenHarmony 3.HarmonyOS 4.鸿蒙生态 5.OpenHarmony与HarmonyOS的技术上实现区别 1.语言支持 2.SDK 的不同 3.运行调测方式不同 4.对APK的兼容性不同 5.包含关系 6.调试命令 6.何时选择OpenHarmony或是HarmonyOS&#xff1f; 1. 背景 开篇就说“关于…

RabbitMQ集群搭建

说明&#xff1a;集群&#xff0c;不管是Redis集群&#xff0c;还是MQ集群&#xff0c;都是为了提高系统的可用性&#xff0c;使系统不至于因为Redis、MQ宕机而崩溃。本文介绍RabbitMQ集群搭建&#xff0c;RabbitMQ集群分为以下三类&#xff1a; 普通集群 镜像集群 仲裁队列 …

C语言中指针(简略复习)

一、指针 1. 指针运算 设p为指针&#xff0c;T为类型&#xff0c;n为整型数字&#xff0c;则pn表示&#xff0c;指针从当前位置向后移动n个数据单位&#xff0c;而不是n个字节。 数据类型不同&#xff0c;移动的数据单位字节数也不同&#xff0c;实际上移动的字节数为n*sizeo…

3DVR全景旅游,最新数字化智慧文旅

导语&#xff1a; 随着科技的飞速发展&#xff0c;3DVR全景旅游正以其独特的特点和无限的优势&#xff0c;成为当今智慧文旅的领航者。穿戴上VR设备&#xff0c;只需一个轻轻的点击&#xff0c;你将被带入一个全新的数字世界&#xff0c;领略美景、探索奇迹。让我们一起深入了…