当前位置: 首页 > news >正文

使用docker 搭建nginx + tomcat 集群

  • 创建3个Tomcat容器,端口分别映射到 8080,8081,8082,使用数据卷挂载,分别将宿主机目录下的
    /opt/module/docker/tomcat3/ROOT1/,/opt/module/docker/tomcat3/ROOT2/,/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部的tomcat目录下的webapps目录。实现挂载的好处如下:
  1. 数据共享: 同一份数据可以被挂载到多个容器
  2. 容器删除了但是数据还在,更安全。

docker run -d --name tomcat-8080 -p8080:8080 -v /opt/module/docker/tomcat3/ROOT1/:/usr/local/tomcat/webapps/ tomcat

docker run -d --name tomcat-8081 -p8081:8080 -v /opt/module/docker/tomcat3/ROOT2/:/usr/local/tomcat/webapps/ tomcat

docker run -d --name tomcat-8082 -p8082:8080 -v /opt/module/docker/tomcat3/ROOT3/:/usr/local/tomcat/webapps/ tomcat

分别访问三个端口

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • docker 启动nginx

docker run -d --name nginx-8000 -p 8000:80 ngxin

访问

在这里插入图片描述

进入到nginx容器内部,找到Nginx的配置文件

在这里插入图片描述

使用cp命令,将容器中的nginx配置文件复制到宿主机上

docker cp 9s2:/etc/nginx/nginx.conf /opt/module/docker/nginx/

修改配置文件,做负载均衡


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;upstream backend {  server 192.168.240.131:8080;  server 192.168.240.131:8081;  server 192.168.240.131:8082;  }server {  listen 80;  location / {  proxy_pass http://backend;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  proxy_set_header X-Forwarded-Proto $scheme;  }  }  	#include /etc/nginx/conf.d/*.conf;
}

此时重启nginx,将ngxin的配置文件挂载到宿主机

docker run -d --name ngxin-8000 -p 8000:80 -v /opt/module/docker/nginx/nginx.conf:/etc/nginx/nginx.conf nginx

由于nginx的端口映射到了宿主机的8000,此时访问8000,就相当于在负载均衡的访问3台tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Docker创建一个容器是秒级启动,同时支持挂载,端口映射等,通过此也可以发现Docker的强大,尤其是搭建负载均衡,快速扩容和缩容等。

相关文章:

使用docker 搭建nginx + tomcat 集群

创建3个Tomcat容器,端口分别映射到 8080,8081,8082,使用数据卷挂载,分别将宿主机目录下的 /opt/module/docker/tomcat3/ROOT1/,/opt/module/docker/tomcat3/ROOT2/,/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部…...

从Spring的角度看Memcached和Redis及操作

目录 Memcached和Redis的区别 适用场景 Memcached配置使用 Redis配置使用 在SpringBoot的框架里,有直连Redis的SDK却没有Memcached的,可见相比地位。不过各有各的适应场景,Redis这个单线程模型确实非常强。 Memcached和Redis的区别 共同…...

【C语言学习】C语言的基础数据类型

一、数据类型 1.整型 short(短整型) int(整型 long(长整型) long long(长整型)2.浮点型 float(单精度型) double(双精度型) long double3.字符类型 char…...

使用AIGC工具提升安全工作效率

新钛云服已累计为您分享760篇技术干货 在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于: 开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、…...

HBase概述

HBase 一 HBase简介与环境部署 1.1 HBase简介&在Hadoop生态中的地位 1.1.1 什么是HBase HBase是一个分布式的、面向列的开源数据库HBase是Google BigTable的开源实现HBase不同于一般的关系数据库, 适合非结构化数据存储 1.1.2 BigTable BigTable是Google设计的分布式…...

el-popover全屏不显示(bug记录)

我做了一个el-table全屏展示的功能, 然后里面的el-popover在全屏后无法展示, 刚开始以为是写唯一的key或者ref, 发现写了也不行, 后来以为要写’:append-to-body“false”, 最后发现是我的外层的层级写得太高了; position: fixed; z-index: 9999; <div class"box"…...

react中使用redux-persist做持久化储存

某天下午折腾着玩的 – 笔记 安装相关依赖 npm install reduxjs/toolkit redux-persist redux react-redux// store.jsx import { configureStore, getDefaultMiddleware } from "reduxjs/toolkit"; import { persistStore, persistReducer } from "redux-per…...

【leetcode】203. 移除链表元素(easy)

给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* Lis…...

InfiniBand、UCIe相关思考

InfiniBand、UCIe相关思考 内容1、InfiniBandInfiniBand是什么&#xff1f;InfiniBand的来历是什么&#xff1f;InfiniBand为什么重要&#xff1f;InfiniBand相较于Ethernet区别&#xff1f;同领域内还有其他哪些技术&#xff1f;InfiniBand中RDMA是种什么技术&#xff1f; 内容…...

[C++项目] Boost文档 站内搜索引擎(3): 建立文档及其关键字的正排 倒排索引、jieba库的安装与使用...

之前的两篇文章: 第一篇文章介绍了本项目的背景, 获取了Boost库文档 &#x1fae6;[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…第二篇文章 分析实现了parser模块. 此模块的作用是 对所有文档html文件, 进行清理并汇总 &#x1fae6;[C项目] …...

el-date-picker回显问题解决记录

el-date-picker回显问题记录 组件结构 <el-date-pickerv-model"time"type"datetimerange"range-separator"至"start-placeholder"开始日期"end-placeholder"结束日期"value-format"yyyy-MM-dd HH:mm:ss":defau…...

Linux中的特殊进程(孤儿进程、僵尸进程、守护进程)

一、孤儿进程 1&#xff09;父进程退出&#xff0c;子进程不退出&#xff0c;此时子进程被1号&#xff08;init&#xff09;进程收养&#xff0c;变成孤儿进程。 2&#xff09;孤儿进程会脱离终端控制&#xff0c;且运行在后端&#xff0c;不能用ctrlc杀死后端进程&#xff0c;…...

【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、数据、讲解 &#x1f4a5;1 概述 由于能源的日益匮乏&#xff0c;电力需求的不断增长等&#xff0c;配电网中分布式能源渗透率不断提高&#xff0c;且逐渐向主动配电网方…...

《cuda c编程权威指南》04 - 使用块和线程索引映射矩阵索引

目录 1. 解决的问题 2. 分析 3. 方法 4. 代码示例 1. 解决的问题 利用块和线程索引&#xff0c;从全局内存中访问指定的数据。 2. 分析 通常情况下&#xff0c;矩阵是用行优先的方法在全局内存中线性存储的。如下。 8列6行矩阵&#xff08;nx,ny&#xff09;&#xff08;…...

mysql 、sql server 常见的区别

&#xff2e;&#xff35;&#xff2c;&#xff2c;   处理 MySQL IFNULL(col , val) SQL Server ISNULL(col,val) 表名、列名等 一般不推荐用保留字 &#xff0c;如果非要保留字 MySQL 用用着重号&#xff0c;即 反引号 包括 select col from GROUP SQL Server 用用着重号…...

查找特定元素——C++ 算法库(std::find_if)

std::find_if函数在C++中的实际使用案例非常广泛,以下是一些常见的用法示例: 1、在容器中查找满足特定条件的元素: #include <iostream> #include <vector> #include <algorithm>bool isOdd(int num) {...

D3JS教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 D3是Data-Driven Documents的缩写&#xff0c;D3.js是一个基于数据管理文档的资源JavaScript库。 D3 是最有效的数据可视化框架之一。它允许开发人员在 HTML、CSS 和 SVG 的帮助下在浏览器中创建动态的交互式数据可视化。数据可视化是将过滤后的数据以图片和图形的形…...

Android入门教程||Android 架构||Android 应用程序组件

Android 架构 Android 操作系统是一个软件组件的栈&#xff0c;在架构图中它大致可以分为五个部分和四个主要层。 Linux内核 在所有层的最底下是 Linux - 包括大约115个补丁的 Linux 3.6。它提供了基本的系统功能&#xff0c;比如进程管理&#xff0c;内存管理&#xff0c;设…...

C语言二进制数据和16进制字符串互转

知识点&#xff1a;结构体中的“伸缩型数组成员”(C99新增) C99新增了一个特性&#xff1a;伸缩型数组成员&#xff08;flexible array member&#xff09;&#xff0c;利用这项特性声明的结构&#xff0c;其最后一个数组成员具有一些特性。第1个特性是&#xff0c;该数组不会…...

技术复盘(5)--git

技术复盘--git 资料地址原理图安装配置基本命令分支命令对接gitee练习:远程仓库操作 资料地址 学习地址-B站黑马&#xff1a;https://www.bilibili.com/video/BV1MU4y1Y7h5 git官方&#xff1a;https://git-scm.com/ gitee官网&#xff1a;https://gitee.com/ 原理图 说明&am…...

Poppler for Windows:让PDF处理不再成为开发瓶颈

Poppler for Windows&#xff1a;让PDF处理不再成为开发瓶颈 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 你是否曾因PDF处理功能的复杂配置而推…...

Windows热键冲突终极排查指南:3分钟快速定位问题应用

Windows热键冲突终极排查指南&#xff1a;3分钟快速定位问题应用 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…...

实战演练:如何利用SQLMap快速检测银行储物柜管理系统的CVE-2023-0562漏洞

实战指南&#xff1a;SQLMap在银行储物柜管理系统漏洞检测中的高效应用 银行储物柜管理系统作为金融机构关键基础设施&#xff0c;其安全性直接关系到客户资产安全。近年来曝光的CVE-2023-0562漏洞再次提醒我们&#xff0c;即使是基础防护措施也可能存在致命缺陷。本文将手把手…...

寻音捉影·侠客行从零开始:基于ModelScope FunASR的私有化语音检索实践

寻音捉影侠客行&#xff1a;从零开始基于ModelScope FunASR的私有化语音检索实践 1. 什么是“寻音捉影侠客行”&#xff1f; 在信息爆炸的时代&#xff0c;我们每天面对大量语音内容——会议录音、课程回放、采访素材、客服对话……但想从中快速找到一句关键话&#xff0c;却…...

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

从PX4的FRD到Mavros的FLU&#xff1a;无人机坐标系转换实战指南 当你在ROS环境下通过Mavros向PX4飞控发送位置指令时&#xff0c;是否遇到过无人机朝完全相反方向飞行的情况&#xff1f;这种"方向错乱"的根源往往在于坐标系理解的偏差。本文将彻底解开PX4与Mavros之间…...

双模型混搭方案:OpenClaw同时接入千问3.5-27B与Llama3

双模型混搭方案&#xff1a;OpenClaw同时接入千问3.5-27B与Llama3 1. 为什么需要多模型混搭 去年我在尝试用AI自动化处理技术文档时&#xff0c;发现单一模型总是存在能力短板。比如用纯文本模型生成示意图说明时&#xff0c;要么需要手动补充描述&#xff0c;要么得额外调用…...

Bloaty二进制大小分析器:10个常见问题解决技巧

Bloaty二进制大小分析器&#xff1a;10个常见问题解决技巧 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty Bloaty是一款强大的二进制大小分析工具&#xff0c;能够帮助开发者深入了解二进制文件的大…...

OpenClaw故障排查大全:Gemma-3-12b-it接口连接失败解决方案

OpenClaw故障排查大全&#xff1a;Gemma-3-12b-it接口连接失败解决方案 1. 问题背景与典型场景 上周我在本地部署Gemma-3-12b-it模型时&#xff0c;遭遇了OpenClaw连接失败的经典问题。明明模型服务已经启动&#xff0c;OpenClaw网关也显示运行正常&#xff0c;但每次发起请求…...

OpenClaw场景合集:Qwen3-4B在10个日常任务中的高效应用

OpenClaw场景合集&#xff1a;Qwen3-4B在10个日常任务中的高效应用 1. 为什么选择OpenClawQwen3-4B组合 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理堆积如山的邮件时&#xff0c;这个组合就成了我的效率利器。OpenClaw作为本地化智能体框架&#xff0c;配合Qwe…...

大数据可视化

1. 传播分析评估维度&#xff1a;包含认知&#xff08;知晓、记忆&#xff09;、行动&#xff08;点击、搜索&#xff09;、情感&#xff08;喜好、美誉&#xff09;三个层面传统评估&#xff1a;主要关注广告点击率和观看次数等表面指标深度评估&#xff1a;需要分析广告观看后…...