Docker搭建nacos2.x集群+nginx代理

news2024/12/23 7:24:51

说明: 如果只需要搭建单节点nacos,请参照我的这篇文章

一、环境准备

资源版本说明
docker1.17+用于安装nacos及mysql等依赖
nacos2.1.1nacos
mysql5.6+用于数据持久化,本文使用mysql8.0.34

二、安装mysql

说明: 本次安装mysql将以docker的形式安装,如若需要使用二进制的方式安装,请参照我如下这篇CentOS7.x的mysql8.0.21离线安装的文章,如果你的mysql需要二进制且为主从安装,则可以参考我如下这篇linux(CentOS7.x)搭建mysql8.x主从的文章。

1. mysql本地目录创建

mkdir /data

2.执行运行脚本

docker run -d -p 3306:3306 \
--name mysql8034 --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql8034:/var/lib/mysql \
mysql:8.0.34

三、nacos目录准备

说明: 本次搭建均在同一台服务器上,以IP 172.23.144.1为例,以目录/data目录为例,且目录下创建3个文件夹分别对应3个nacos应用数据目录

mkdir /data/{nacos8848,nacos8858,nacos8868}
IP服务端口gRpc端口
172.23.144.188489848
172.23.144.188589858
172.23.144.188689868

1. 8848端口的nacos脚本

docker run -d --link mysql8034 --restart=always \
-v /data/nacos8848:/home/nacos/data \
--privileged=true \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8034 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_cluster \
-e NACOS_SERVER_IP=172.23.144.1 \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--name nacos-cluster-8848 nacos/nacos-server:v2.1.1

执行参数说明:

参数说明
–link mysql8034Docker运行的mysql容器且该容器名称为mysql8034,链接到本容器当中,作为本容器到上述容器的主机名映射,意思就是:本容器所需用到mysql的IP的地方,均可以使用mysql8034作为替代。
MYSQL_SERVICE_HOST=mysql8034参考上述示意,此上述作用的具体实现
JVM_XMS=512m JVM_XMX=2048m指定运行的jvm大小
MYSQL_SERVICE_DB_PARAM连接mysql的连接参数
MODE=cluster表示该nacos为集群启动
NACOS_APPLICATION_PORT=8848nacos服务的端口
MYSQL_SERVICE_PORT=3306连接mysql的端口
SPRING_DATASOURCE_PLATFORM=mysql指定连接的数据库平台为mysql
MYSQL_SERVICE_USER=root指定连接的数据库用户名为root
MYSQL_SERVICE_PASSWORD=123456指定连接的数据库密码为123456
MYSQL_SERVICE_DB_NAME=nacos_cluster指定连接的数据库库名为nacos_cluster
NACOS_SERVER_IP=172.23.144.1指定nacos集群注册到服务器上的IP地址为172.23.144.1
-p 8848:8848 -p 9848:9848 -p 9849:9849指定将所需的8848,9848,9849端口开放出来
nacos/nacos-server:v2.1.1指定nacos镜像的版本为v2.1.1

2. 8858端口的nacos脚本

docker run -d --link mysql8034 --restart=always \
-v /data/nacos8858:/home/nacos/data \
--privileged=true \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8858 \
-e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8034 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_cluster \
-e NACOS_SERVER_IP=172.23.144.1 \
-p 8858:8858 -p 9858:9858 -p 9859:9859 \
--name nacos-cluster-8858 nacos/nacos-server:v2.1.1

3. 8868端口的nacos脚本

docker run -d --link mysql8034 --restart=always \
-v /data/nacos8868:/home/nacos/data \
--privileged=true \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8868 \
-e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8034 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_cluster \
-e NACOS_SERVER_IP=172.23.144.1 \
-p 8868:8868 -p 9868:9868 -p 9869:9869 \
--name nacos-cluster-8868 nacos/nacos-server:v2.1.1

说明: 执行如下命令即可看到下图所示:

docker ps

在这里插入图片描述

4. 测试

说明: 打开浏览器访问http://172.23.144.1:8848/nacos或者http://172.23.144.1:8858/nacos或者http://172.23.144.1:8868/nacos,如若出现如下界面表示搭建成功!
在这里插入图片描述

四、运行nginx容器

1. 首先需要在/data目录创建一个配置文件nginx.conf

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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;
#1这里是需要添加的
  #命名时需要注意,名称不能带下划线"_",否则会报错
  upstream nacosCluster {
    server 172.23.144.1:8848;
    server 172.23.144.1:8858;
    server 172.23.144.1:8868;
  }
  server {
    listen 8878;
    server_name localhost;
    location / {
      proxy_pass http://nacosCluster/;
    }
  }
  #1到这里结束
}
#2这里是需要添加的,与http同级
stream {
#命名时需要注意,名称不能带下划线"_",否则会报错
  upstream nacosGrpc {
    server 172.23.144.1:9848;
    server 172.23.144.1:9858;
    server 172.23.144.1:9868;
  }
  server {
    listen 9878; #nginx监听偏移1000的端口,因为nacos客户端会链接 8878+1000 这个端口,代理的是nacos服务端偏移后的端口
    proxy_pass nacosGrpc;
  }
}
#2到这里结束

2. 创建nginx容器(对外代理端口为8878,提供给客户端的端口为9878

docker run -d -p 8878:8878 -p 9878:9878 \
-v /data/nginx.conf:/etc/nginx/nginx.conf \
--name nacos_proxy --restart=always nginx:1.18.0

3. 测试

说明: 打开浏览器访问http://172.23.144.1:8878/nacos,出现如下界面表示搭建成功。

在这里插入图片描述
集群搭建工作,到此圆满结束!喜欢的朋友留个赞再走吧~,欢迎收藏、评论。

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

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

相关文章

CorelDRAW和InDesign软件的功能区别

Corel和Ilustrator都是基于矢量的排版软件。另一方面,InDesign的主要目的是基于包含不同基本网格设计,以及标题和段落样式信息的母版页来制作多页面布局,例如杂志或书籍,这为了使出版物保持一致。 CorelDRAW图形套件是加拿大Core…

ME1W隐式增强 增加字段学习

需要增加 eina-IDNLF字段 而ME1W中原本是没有的,所以需要改动这个结构 改动后会在这里加入 同时如果程序本身不会输出的话,需要自己加,可以用增强 光标放在 ENHANCEMENT-SECTION 上,然后点击增强按钮 创建完后,你的增强…

【软件测试】自动化测试selenium

目录 一、什么是自动化测试 二、Selenium介绍 1、Selenium是什么 2、Selenium的原理 三、了解Selenium的常用API 1、webDriver API 1.1、元素定位 1.1.1、CSS选择器 1.1.2、Xpath元素定位 1.1.3、面试题 1.2、操作测试对象 1.3、添加等待 1.4、打印信息 1.5、浏览…

数学预备知识

函数篇: 一次函数、反比例函数、二次函数、指数函数、对数函数、幂函数、三角函数、反三角函数、极点坐标等等 初中数学 【a,b】:开区间 (a,b):闭区间 ∞ :无穷大 ∞&#xff1…

webpack类似的工具还有哪些?

一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割,组织和打包应用。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体(bundle) 在前端领域中,并非只有webpack这一款…

Selenium+Pytest自动化测试框架详解

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承;一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 一、测试框架简介 测试框架有什么优点 代码复用率高&…

ZKP6.1 Discrete-log-based Polynomial Commitments (Preliminary)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 6: Discrete-log-based Polynomial Commitments (Yupeng Zhang) Recall How to build an efficient SNARK? A polynomial commitment scheme A polynomial interactive oracle proof (IOP) SNARK for general circuits Plo…

【推荐】一个国内免费体验的AI论文写作网站-「智元兔 AI」

在当今技术飞速发展的时代,越来越多的领域开始应用人工智能(Artificial Intelligence,简称AI)。其中,AI写作工具备受瞩目,备受推崇。在众多的选择中,智元兔AI是一款在笔者使用过程中非常有帮助的…

会议邀请 | 思腾合力邀您共赴CNCC 2023中国计算机大会

CNCC 2023于10月26日-28日将在沈阳的沈阳新世界博览馆举办。思腾合力作为行业领先的人工智能基础架构解决方案商,受邀参加本次盛会。在会上展出思腾AI算力服务器,诚挚邀请众多参会嘉宾莅临展位,共同探讨人工智能与智能算力的产业趋势&#xf…

VS的使用时遇到了basePath不能是相对路径的问题,如何处理?

使用VS,当你编译运行代码时出现以下的问题 解决方法 原因:文件库的路径存在问题,需要把相对路径改为绝对路径。 如何解决:去右键点击解决方案,选择属性-》调试-》命令中的参数被设置为相对路径。就可以解决以上的问题…

UE5 ChaosVehicles载具 增加方向盘动画 (连载三)

掌握该流程就能实现方向盘、码表指针、按钮等动画制作 1.复制一个骨骼,位置在方向盘的旋转中心,注意骨骼角度要与方向盘倾角一样,我这里是11.9,然后绑定权重 2.打开动画蓝图,把前车轮的角度值x转向比(通…

泛型的使用案例,以及年月日的定制排序,传入Comparator对象

简易版&#xff1a;传送门&#xff1a;过关展将之——birthday排序&#xff08;年月日排序&#xff09;-CSDN博客 实现过程; public static void main(String[] args) {ArrayList<Employee> arrayList new ArrayList<>();Employee grace new Employee("G…

面对“双十一”这样的大促,品牌方还能多做些什么?

小编叨叨&#xff1a;当前市场环境不佳&#xff0c;经济下行时用户对于商品价格最敏感&#xff0c;当然价格也是决定企业经营利润&#xff0c;市场竞争力及用户口碑的重要核心影响因素&#xff0c;所以我们特地为企业准备了商品智能定价咨询及数据运营咨询服务&#xff0c;有需…

英语——分享篇——每日200词——3201-3400

3201——air-conditioning——[eərkəndɪʃnɪŋ]——n.空调设备&#xff1b;vt.给…装上空调——air-conditioning——air-condition空调(熟词)ing鹰(谐音)——空调设备的噪音让鹰不得安宁——The trains dont even have proper air-conditioning, grumbles Mr So. ——地铁…

深度学习_5_模型拟合_梯度下降原理

需求: 想要找到一条直线&#xff0c;能更好的拟合这一些点 如何确定上述直线就是最优解呢&#xff1f; 由计算机算出所有点与我们拟合直线的误差&#xff0c;常见的是均方误差 例如&#xff1a;P1与直线之间的误差为e1 将P1坐标带入直线并求误差得&#xff1a; 推广到所有点&a…

买充电桩你必须要知道三件事

分享一套开源充电桩云平台&#xff08;v2.5.1&#xff09;-- 支持二轮(电动自行车)、四轮(电动汽车) 中国电动汽车充电基础设施促进联盟的信息部主任&#xff0c;仝宗旗&#xff0c;在2022年接受了《中国汽车报》采访的时候&#xff0c;提到过一个数据。 电动车主在小区成功安…

计算机考研自命题(5)

1、C语言–求和 1、展开式求和。输入一个实数x&#xff0c;计算并输出下式的和&#xff0c;直到最后一项的绝对值小于0.00001.计算结果保留2位小数&#xff0c;试编程。 S x x/2&#xff01; x/3&#xff01; … /* 算法思想&#xff1a;定义一个求阶乘的函数fact(), 头文件调…

未能为 SSL/TLS 安全通道建立信任关系

在 Windows早期版本&#xff08;Windows server 2008&#xff09;上运行web请求相关代码&#xff0c;提示错误&#xff1a;未能为 SSL/TLS 安全通道建立信任关系。 打开IE直接访问相关网址&#xff0c;按照提示信任网站&#xff0c;安装证书&#xff1a; 选择&#xff1a;将所有…

【IO】JavaIO流:字节流、字符流、缓冲流、转换流、序列化流等

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ IO流 Java IO1. 认识IO2. FileOutputStream(写…

基于springboot+vue网吧管理系统52

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…