企业级使用docker实现负载均衡

news2024/11/15 17:41:20

利用Docker容器编排完成haproxy和nginx负载均衡架构实施

利用 Docker 编排实现 HAProxy 和 Nginx 负载均衡架构的介绍:

        首先,使用 Docker Compose 进行容器编排。创建一个 haproxy.yml 文件,定义 HAProxy 和 Nginx 服务。HAProxy 容器作为前端负载均衡器,监听特定端口,如 80 端口。它配置了后端服务器组,将请求分发到多个 Nginx 容器。每个 Nginx 容器作为后端服务器,负责处理实际的请求。 通过配置 HAProxy,可以设置负载均衡算法,如轮询或最少连接数等。同时,可以配置健康检查,确保只有正常运行的 Nginx 实例接收请求。 启动容器编排后,请求首先到达 HAProxy,它根据配置的策略将请求转发给 Nginx 容器。这样可以实现高可用和高性能的负载均衡架构,提高系统的可靠性和扩展性。利用 Docker 编排简化了部署过程,方便管理和维护。

准备工作

主机名IP
docker.exam.com172.25.254.100

软件需要准备docker,haproxy和nginx

实验过程

利用docker compose来配置yml文件

[root@docker-node1 test]# vim haproxy.yml 
services:
  web1:
    image: nginx:latest
    restart: always
    container_name: webserver1
    networks:
      - mynet1
    expose:
      - 80
    volumes:
      - data_web1:/usr/share/nginx/html

  web2:
    image: nginx:latest
    restart: always
    container_name: webserver2
    networks:
      - mynet1
    expose:
      - 80
    volumes:
      - data_web2:/usr/share/nginx/html

  haproxy:
    image: haproxy:2.3
    restart: always
    container_name: haproxy
    networks:
      - mynet1
      - mynet2
    volumes:
      - /var/lib/docker/volumes/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
    ports:
      - "80:80"

networks:
  mynet1:
    driver: bridge

  mynet2:
    driver: bridge

volumes:
  data_web1:
    name: data_web1

  data_web2:
    name: data_web2

设置haproxy

 

配置haproxy文件

这里设置负载均衡算法为轮询

[root@docker-node1 ~]# cd /var/lib/docker/volumes/conf/
[root@docker-node1 conf]# vim haproxy.cfg
listen webcluster
  bind *:80
  balance roundrobin
  server web1 webserver1:80 check inter 3 fall 3 rise 5
  server web2 webserver2:80 check inter 3 fall 3 rise 5

写入网页内容,方便测试负载均衡时观测结果 

[root@docker-node1 test]# echo webserver1 > /var/lib/docker/volumes/data_web1/_data/index.html
[root@docker-node1 test]# echo webserver2 > /var/lib/docker/volumes/data_web2/_data/index.html

测试结果

[root@docker-node1 test]# docker compose -f haproxy.yml up -d
[+] Running 5/5
 ✔ Network test_mynet1   Created                                                   0.1s 
 ✔ Network test_mynet2   Created                                                   0.1s 
 ✔ Container haproxy     Started                                                   1.0s 
 ✔ Container webserver1  Started                                                   0.9s 
 ✔ Container webserver2  Started                                                   0.8s 
 
 
 [root@docker-node1 test]# docker compose ps
NAME         IMAGE          COMMAND                  SERVICE   CREATED         STATUS         PORTS
haproxy      haproxy:2.3    "docker-entrypoint.s…"   haproxy   5 seconds ago   Up 4 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp
webserver1   nginx:latest   "/docker-entrypoint.…"   web1      5 seconds ago   Up 5 seconds   80/tcp
webserver2   nginx:latest   "/docker-entrypoint.…"   web2      5 seconds ago   Up 5 seconds   80/tcp
[root@docker-node1 test]# curl 172.25.254.100
webserver1
[root@docker-node1 test]# curl 172.25.254.100
webserver2

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

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

相关文章

线性回归算法详解

目录 线性回归算法 线性回归方程 误差项分析 似然函数求解 线性回归求解 梯度下降算法 下山方向选择 梯度下降优化 梯度下降策略对比 学习率对结果的影响 代码实现 线性回归算法 线性回归是回归算法中最简单、实用的算法之一,在机器学习中很多知识点都是…

深入探讨Java JSON解析与HTML标签清除:详解与实例

“在Java开发中,解析和处理JSON文件是一项常见任务,尤其是当数据中包含大量HTML标签时,去除这些标签又是一项挑战。本文将详细讲解如何在Java中解析JSON文件,创建对应的实体类,并介绍去除HTML标签的方法,最…

RK3588开发板利用udp发送和接收数据

目录 1 send.cpp 2 receive.cpp 3 编译运行 4 测试 1 send.cpp #include <iostream> #include <string> #include <cstring> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> //…

【网络安全】Instagram 和 Meta 2FA 绕过漏洞

未经许可,不得转载。 文章目录 漏洞概述技术细节Meta 2FA 绕过步骤Instagram 2FA 绕过步骤总结漏洞概述 该漏洞允许攻击者在具有受害者Facabook账户权限的情况下,绕过 Meta 的双重身份验证 (2FA) 机制,实现账户接管;并且也能够绕过 Instagram 的双重身份验证 (2FA) 机制,…

堆排序的例题

答案&#xff1a;D C 知识点&#xff1a; 堆排序是把数组排成大顶堆或者小顶堆&#xff0c;选择根结点的最大值或者最小值&#xff0c;因此它是选择排序的方法 堆排序的方法是&#xff1a; 先把数组所有数据组成一个二叉树&#xff0c;然后调整结点与左右孩子树之间的位置&…

【Hot100】LeetCode—35. 搜索插入位置

目录 1- 思路二分 2- 实现⭐35. 搜索插入位置——题解思路 3- ACM 实现 题目连接&#xff1a;35. 搜索插入位置 1- 思路 二分 二分左区间的三种情况。由于目标值不一定在数组中&#xff0c;因此二分的过程中有三种情况判断 2- 实现 ⭐35. 搜索插入位置——题解思路 class So…

大模型参数高效微调技术原理综述(四)-Prompt Tuning

紧接着Stanford的Prefix Tuning论文&#xff0c;Google迅速发表了Prompt Tuning技术论文。Google声称该技术比Prefix Tuning更易上手且成本更低&#xff0c;因此该技术随后也成为了微调技术中的一个重要分支。 本文解读论文**《The Power of Scale for Parameter-Efficient Pr…

Java类加载器双亲委托模型概述

类加载器的双亲委派模型 模型图 加载原理 双亲委派模型的工作过程是&#xff1a;如果一个类加载器收到了类加载的请求&#xff0c;它首先不会自己去尝试加载这个类&#xff0c;而是把这个请求委派给父类加载器去完成&#xff0c;每一个层次的类加载器都是如此&#xff0c;因此所…

C/C++逆向:寻找mian函数(其他编译配置特征)

在上篇文章中写了在逆向中定位main函数几种方法&#xff0c;其中有一种方法是通过编译器特征定位 main 函数&#xff08;使用IDA分析简单demo程序获取特征&#xff0c;根据得到的特征可以定位相同编译器编译程序的main函数&#xff09;。在上一篇文章中我们提取了VS环境(VS2017…

【软件测试专栏】软件测试 — 概念篇

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;软件测试专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 软件测试 — 概念篇 关键词&#xff1a;软件需求、用户需求、开发…

从混乱到秩序:产品经理在需求变更中的关键角色

在软件开发过程中&#xff0c;需求是驱动整个项目的核心。需求的来源多种多样&#xff0c;包括客户、市场、领导等&#xff0c;产品经理的职责是将这些需求收集、整理并转化为可行的开发计划。本文将探讨需求的来源、产品经理的角色、软件开发中的挑战以及应对变化的策略。 需求…

Java小白一文讲清Java中集合相关的知识点(一)

集合 诞生缘由 数组 长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改保存的必须为同一类型元素使用数组进行增/删元素所需要编写的代码–比较麻烦 Person[] pers new Person[1]; pers[0] new Person(); //此时增加新的Person对象呢&#xff1f; Person[…

【学习笔记】卫星通信NTN 3GPP标准化进展分析(一)-基本信息

一、引言&#xff1a; 本文来自3GPP Joern Krause, 3GPP MCC (May 14,2024) Non-Terrestrial Networks (NTN) (3gpp.org) 本文总结了NTN标准化进程以及后续的研究计划&#xff0c;是学习NTN协议的入门。 【学习笔记】卫星通信NTN 3GPP标准化进展分析&#xff08;一&#xf…

前端开发第二节课

HTML常用的标签 文本格式化标签 在网页中&#xff0c;有时需要为文字设置粗体、斜体或下划线等效果&#xff0c;这时就需要用到HTML中的文本格式化标签使文字以特殊的方式显示。 标签语义&#xff1a;突出重要性&#xff0c;比普通文字更重要。 加粗 <strong></st…

Spring框架;Spring中IOC简介及搭建;Spring中AOP简介;

一&#xff0c;Spring介绍 Spring 的全称&#xff1a; Spring Framework Spring是一个优秀的开源的轻量级的企业应用开发框架&#xff0c;是为了解决企业应用程序开发复杂性而创建的。它大大简化了java企业级开发的复杂性&#xff0c;提供了强大&#xff0c;稳定的功能&#xf…

XR-Frame 实现 始终朝向屏幕(相机)的面片与模型

wxml&#xff0c;xr-frame中plane平面默认是趴在场景中的&#xff0c;需要先绕x轴渲染90度&#xff0c; // 面片 <xr-node id"l" position"-3.0 0 0.0"><xr-mesh rotation"90 0 0" geometry"plane" uniforms"u_base…

浅析synchronized锁升级的原理与实现 2

本文内容是继我的上篇博客 浅析synchronized锁升级的原理与实现 1-CSDN博客 目录 各状态锁的升级场景 无锁 --> 轻量级锁 偏向锁 --> 轻量级锁 偏向锁 --> 重量级锁 轻量级锁 --> 重量级锁 总结 各状态锁的升级场景 下面我们结合代码看下各状态锁的升级场景。…

VL53L1CB TOF开发(2)----多区域扫描模式

VL53L1CB TOF开发.2--多区域扫描模式 概述视频教学样品申请源码下载硬件准备主要特点生成STM32CUBEMX串口配置IIC配置XSHUTGPIO1X-CUBE-TOF1堆栈设置函数说明初始化设置预设模式 (Preset mode)VL53L1_SetPresetModeVL53L1_SetDistanceMode时间预算单个ROI&#xff08;Single R…

从 Oracle 到 TiDB 丨数据库资源评估指南

原文来源&#xff1a; https://tidb.net/blog/5058e24f 本文作者&#xff1a;柳冬冬 导读 在当今技术飞速发展的时代&#xff0c;传统单机数据库正面临着前所未有的挑战。随着人工智能、云计算和大数据的崛起&#xff0c;企业对数据库的性能、可靠性和扩展性的需求日益增…

wordcloud兼figma的词云图片python生成

文章目录 一.Figma1.简介2.特点 二.代码构成1.详细代码2.word.py代码详解3.成果图 一.Figma 1.简介 Figma是一款全平台可使用的使用软件&#xff0c;和Sketch功能差不多&#xff1b;但是他可以在Mac&#xff0c;Windows PC&#xff0c;Linux计算机甚至Chromebook&#xff0c;…