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

2023-10-23 15:28

本文主要是介绍Docker搭建nacos2.x集群+nginx代理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明: 如果只需要搭建单节点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,出现如下界面表示搭建成功。

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

这篇关于Docker搭建nacos2.x集群+nginx代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/268699

相关文章

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优