04 Haproxy搭建Web集群

4.1 案例分析

4.1.1 案例概述

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好。Haproxy 官方网站是http://www.haproxy.org/。

4.1.2 案例前置知识点

1.http请求

通过URL访问网站使用的协议是HTTP协议,此类请求一般为HTTP请求。HTTP请求的方式分为GET方式和POST方式。当使用浏览器访问某一个URL,会根据请求URL放回状态码,通常正常的状态码为2XX,3XX(如 200,301),如果出现异常会返回4XX,5XX(如400,500)

例如,访问 http://www,test.com/a.php?Id=123,就是一个GET请求,如果访问正常,会从服务器的日志中获取 200状态码。假如此请求使用 POST 方式,那么传递给 a.php 的 Id参数依旧是 123,但是浏览器的 URL,将不会显示后面的 Id=123 字样,因此表单类或者有用户名、密码等内容提交时建议使用 POST方式。不管使用哪种方式,最终a.php 获取的值是一样的。

2.负载均衡常用调度算法LS、Haproxy、Nginx 最常用的调度算法有三种,如下所述,

(1)RR(Round Robin)。RR算法是最简单最常用的一种算法,即轮询调度

(2)LC(Least Connections)。LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求。

(3)SH(Source Hashing)。SH 即基于来源访问调度算法,此算法用于一些有 Session会话记录在服务器端的场景,可以基于来源的 IP、Cookie 等做群集调度。

3.常见的 Web 群集调度器

目前,常见的Web 群集调度器分为软件和硬件。软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是F5。也有很多人使用国内的一些产品,如梭子鱼、绿盟等。

4.1.3

1.本案例环境

本案例使用三台服务器模拟搭建一套 Web 群集,具体的拓扑如图 4.1所示。案例环境如表 4-1 所示。

2.案例需求

测试安装nginx、haproxy;Haproxy、nginx 配置。

4.2 案例实施

1.编译安装Nginx服务器

(1)搭建 Nginx-node-1,2,使用 nginx-1.12.0.tar.gz 安装包进行编译安装
[root@bogon nginx-1.12.0]#  yum -y install pcre-devel zlib-devel gcc*
[root@bogon ~]# tar zxvf nginx-1.12.0.tar.gz 
[root@bogon nginx-1.12.0]# useradd -M -s /sbin/nologin nginx
[root@bogon nginx-1.12.0]# ./configure --prefix=/usr/local/nginx  --user=nginx --group=nginx  --with-http_stub_status_module
[root@bogon nginx-1.12.0]#  make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@bogon nginx-1.12.0]# cd /usr/local/nginx/html/[root@bogon html]# vim test.html
test01
[root@bogon html]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@bogon html]# nginx 
[root@bogon html]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4027/nginx: master  
[root@bogon html]# systemctl stop firewalld
[root@bogon html]# setenforce 0
[root@bogon html]# 
(2)在客户端测试看看是否能够访问 
[root@bogon ~]# curl 192.168.10.101/test.html
test01[root@bogon ~]# tar zxvf haproxy-1.5.19.tar.gz [root@bogon ~]# curl 192.168.10.102/test.html
test02
[root@bogon ~]# 

2.编译安装 Haproxy

在 Haproxy 服务器使用 haproxy-1.5.19.tar.gz安装包进行编译安装

[root@bogon ~]# yum -y install prce-devel bzip2-devel gcc*
[root@bogon ~]# tar zxvf haproxy-1.5.19.tar.gz 
[root@bogon haproxy-1.5.19]# make TARGET=linux26
[root@bogon haproxy-1.5.19]# make install

3.Haproxy 服务器配置

下面是 Haproxy 服务器的配置步骤。

(1)建立 Haproxy 的配置文件。
[root@bogon haproxy-1.5.19]# mkdir /etc/haproxy
[root@bogon haproxy-1.5.19]# cd examples/
[root@bogon examples]# cp haproxy.cfg  /etc/haproxy/
[root@bogon examples]# cp haproxy.init  /etc/init.d/haproxy
[root@bogon examples]# vim /etc/haproxy/haproxy.cfg # this config needs haproxy-1.1.28 or haproxy-1.2.1globallog 127.0.0.1   local0log 127.0.0.1   local1 notice#log loghost    local0 infomaxconn 4096#chroot /usr/share/haproxyuid 99gid 99daemon#debug#quietdefaultslog     globalmode    httpoption  httplogoption  dontlognullretries 3
#       redispatchmaxconn 2000contimeout      5000clitimeout      50000srvtimeout      50000listen  webcluster 0.0.0.0:80option  httpchk GET /index.htmlbalance roundrobinserver  inst1 192.168.10.101:80   check inter 2000 fall 3server  inst2 192.168.10.102:81  check inter 2000 fall 3                           

4.创建自启动脚本 

[root@bogon examples]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@bogon examples]# chmod +x /etc/init.d/haproxy [root@bogon examples]# chkconfig --add /etc/init.d/haproxy 
[root@bogon examples]# /etc/init.d/haproxy start 
Starting haproxy (via systemctl):                          [  确定  ]
[root@bogon examples]# 
[root@bogon examples]# systemctl stop firewalld

 

自启动脚本命令如下:

5.测试 Web 群集

 

 

 

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

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

相关文章

html+css 实现hover 3D按钮特效

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目…

C语言实现游戏2048(超详细!!!超易懂!!!)

2048是众所周知的一款经典游戏,在曾经没有智能电脑和手机的年代,也陪伴了我们许多年。那今天就让我们用C语言来回顾一下这款游戏吧~ 一、游戏2048的思路 2048游戏的玩法是在初始的时候,给玩家一个4*4格子的,其中内容全为空的棋盘…

elementPlus中el-table的每列两行溢出隐藏怎么设置

el-table的每列两行溢出隐藏怎么设置 elementPlus中的el-table如何设置多行溢出隐藏table中的table属性中有show-overflow-tooltip属性,但是只支持单行溢出隐藏如何改成两行呢?在审查元素中我们发现.el-tooltip这个类名是溢出隐藏的样式,原本…

【Linux---08】Shell脚本

文章目录 1. 前置说明1.1 创建shell脚本1.2 执行shell脚本1.3 调试shell脚本1.4 字符冲突 2. 变量2.1 创建&使用变量2.2 位置变量2.3 引号规则 3. 数组3.1 创建数组3.2 使用数组 4. 运算符4.1 比较&数值运算4.1.1 方式一:[ ]4.1.3 方式二:(()) &…

【MongoDB】1.MongoDB下载与安装

目录 一、下载 二、安装 三、安装MongoDB Compass 四、连接 一、下载 官网地址: https://www.mongodb.com/download-center/community 二、安装 详细的安装教程可参考: MongoDB安装(超详细)_安装mongodb-CSDN博客 注意事项1&…

赛盈分销亮相AI科技大会暨亚马逊新增长大会,与企业共话跨境品牌发展新机遇!

八月开端,由知无不言与xmars和钱老师课堂联合主办的2024年AI科技大会暨亚马逊新增长大会在深圳宝安顺利开展,为期2天的跨境峰会吸引了上千位优秀的卖家朋友前来感受一场盛夏大狂欢。在本次跨境峰会里,邀请了多位不同领域的先锋人物&#xff0…

Android 文件上传与下载

在实际开发涉及文件上传不会自己写上传代码,一般 会集成第三网络库来做图片上传,比如android-async-http,okhttp等,另外还有七牛也提供 了下载和上传的API。 1.项目用到的图片上传的关键方法: 这里用到一个第三方的库…

新华三H3CNE网络工程师认证—路由基础

我们的一个个网络其实是由不同的广播域构成的,而路由器的作用就是用来连接不同的广播域。那么不同广播域之间是如何通信的呢?比如有三个网段,1.0、2.0和3.0。网段1.0和网段2.0通信需要构造数据包,源是1.1,目标去往2.1。…

Java程序的执行过程:从编译到垃圾回收,一文读懂Java程序的生命周期

你是否曾经好奇过当你编写一段Java代码并运行它时,背后究竟发生了什么?Java程序的执行过程似乎神秘而复杂,但实际上,它遵循着一系列精心设计的步骤。本文将为你揭开Java程序执行的神秘面纱,带你深入了解从源代码到最终…

SpringBoot企业人事管理系统-附源码与配套论文

1.1引言 随着计算机技术的飞速发展,计算机在各种单位机构管理中应用的普及﹐管理信息系统的开发在强调管理、强调信息的现代社会中也显得越来越重要。因此,利用计算机高效率地完成人事管理的日常事务,是适应现代各种单位机构制度要求、推动各种单位机构…

SpringBoot统一功能处理——拦截器

目录 一、什么是拦截器? 二、拦截器使用 2.1 定义拦截器 2.2 注册配置拦截器 三、拦截器详解 3.1 拦截器的拦截路径配置 3.2 拦截器执行流程 一、什么是拦截器? 拦截器是Spring框架提供的核心功能之一, 主要用来拦截用户的请求, 在指定方法前后,…

【2024年精选】分享7款国内大学ai写论文推荐网站工具

在2024年,AI技术的飞速发展为学术研究和论文写作带来了革命性的变化。众多AI论文写作工具应运而生,帮助学生和研究人员提高写作效率,提升论文质量。其中,AIPaperPass作为一款备受瞩目的国内AI写论文推荐网站工具,以其独…

CentOS7.6 HAproxy-7层负载均衡集群——实施方案

目录 1、前期环境准备 1.准备4台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 4. 全部的服务器完成时间统一 二、配置haproxy(192.168.200.11)服务器 1. 安装haproxy 2. haproxy 配置中分成五部分内容 3. 配置HAproxy(192.168.2…

Animate软件基本概念:缓动、绘图纸外观及图层

FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer:实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.co…

05_ Electron 自定义菜单、主进程与渲染进程通信

Electron 自定义菜单、主进程与渲染进程通信 一、定义顶部菜单二、Electron 自定义右键菜单1、使用 electron/remote 模块实现 三、 Electron 主进程和渲染进程通信场景1:渲染进程给主进程发送异步消息场景2:渲染进程给主进程发送异步消息,主…

数据结构--单链

#include "link.h" plink get_head() { plink pmalloc(sizeof(Link)); if(pNULL) { printf("申情节点失败\n"); return NULL; } p->len0; p->nextNULL; return p; } void head_insert(plink L,int a) {…

推荐一个uniapp选择文件上传的插件

插件地址:文件选择、文件上传组件(图片,视频,文件等) - DCloud 插件市场 支持 H5 / App / 微信小程序

K8s问题案例分析

1.worker节点宕机,请说明一下pod的驱逐流程: k8s有一个节点控制器,节点控制器在一段时间内无法和kubelet通信,那么就会给节点打上unknown 状态,并自动创建NoExecute污点,避免调度器调度新的pod到该节点。同时已经在这…

基于目标检测的目标跟踪(python)

文章目录 概要环境准备目标检测实现目标跟踪实现整合后的代码可能遇到的问题Could not load library libcudnn_ops_infer.so.8. Error: libcudnn_ops_infer.so.8: cannot open shared object file: No such file or directory参考概要 基于目标检测的目标跟踪过程通常包括以下…

Python新手错误集锦(PyCharm)

# 自学Python,用Pycharm作环境。我这个手新到这时我学习的第一个编程软件,且本人专业是化学,以前对电脑最高级的使用是玩扫雷游戏。所以这里集合的错误都是小透明错误,大部分人请绕道。不断更新中...... 缩进错误 记住“indent”…