首页 > 其他分享 >Haproxy搭建Web群集

Haproxy搭建Web群集

时间:2024-06-14 09:58:49浏览次数:18  
标签:Haproxy Web http 群集 server timeout haproxy backend

目录

一、Haproxy概述

1.Haproxy的概述

2.常用的Web集群调度器 

3.Haproxy的主要特性

4.Haproxy调度算法

5.Haproxy提供了3种实现会话保持的方式

二、LVS、Nginx、Haproxy的区别

三.Haproxy搭建 Web 群集

 1.进行初始化操作 安装Haproxy

2.Haproxy服务器配置

3.修改Haproxy配置​

四、部署nginx和Tomcat服务器

安装nginx

另外一台​

安装tomcat

网页测试


一、Haproxy概述

1.Haproxy的概述

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)WEB站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护WEB服务器不被暴露到网络上。

2.常用的Web集群调度器 

3.Haproxy的主要特性

  1. 可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;
  2. 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
  3. 支持多达8种负载均衡算法;
  4. 支持Session会话保持,Cookie的引导;
  5. 支持通过获取指定的url来检测后端服务器的状态;
  6. 支持虚机主机功能,从而实现web负载均衡更加灵活;
  7. 支持连接拒绝、全透明代理等独特的功能;
  8. 拥有强大的ACL支持,用于访问控制;
  9. 支持TCP和HTTP协议的负载均衡转发;
  10. 支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成.

4.Haproxy调度算法

  1. roundrobin                    轮询
  2. static-rr                         加权轮询
  3. leastconn                     最小连接
  4. source                         根据源地址做哈希
  5. uri                                根据请求的URI地址做哈希
  6. url_param                    根据请求的URL路径里传递的参数做哈希
  7. hdr(NAME)                  根据请求头的字段做哈希
  8. rdp-cookie(NAME)      根据cookie里的字段做哈希

5.Haproxy提供了3种实现会话保持的方式

源地址hash    

balance source

设置cookie    

cookie HA_STICKY_dy insert indirect nocache

server tomcat.inst1 192.168.80.101:8080 cookie tomcat.inst1

会话粘性表stick-table  

stick-table type ip size 5k expire 1m

stick on src

二、LVS、Nginx、Haproxy的区别

负载均衡转发性能:

(硬件负载均衡 F5 ) > ( 软件负载均衡 LVS > HAProxy > Nginx)

支持的代理类型:

LVS是基于Linux内核实现的软负载均衡,只支持四层代理转发,且不支持正则表达式处理,不能做动静分离
Nginx、HAProxy都是基于应用层实现的软负载均衡,都支持四层和七层代理转发,且也支持正则表达式处理,能做动静分离

配置维护:

LVS 实施配置复杂,维护成本相对较高
Nginx、HAProxy 配置简单,维护成本较低

健康检查: 

LVS可以配合keepalived实现高可用,以及实现TCP端口或HTTP URL方式的健康检查
Nginx默认只支持被动方式的TCP端口健康检查,主动检查需安装第三方模块nginx_upstream_check_module后才能支持
HAProxy默认就支持主动的TCP端1、HTTP URL、脚本等方式的健康检查

 Haproxy调度算法原理

Haproxy支持多种调度算法,最常用的有八种,分别是roundrobin、static-rr、leastconn、source、uri、url_param、hdr(name)、rdp-cookie(name)。

三.Haproxy搭建 Web 群集

准备虚拟机

Haproxy服务器:192.168.80.100

nginx服务器1:192.168.80.101

nginx服务器2:192.168.80.102

 1.进行初始化操作 安装Haproxy

2.Haproxy服务器配置

yum install -y gcc gcc+ make zlib-devel pcre-devel openssl-devel systemd-devel
useradd -M -s /sbin/nologin haproxy   #创建运行用户
make ARCCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1#编译
make install PREFIX=/usr/local/haproxy  #安装

cd /opt/haproxy-2.8.9/examples
mkdir /etc/haproxy
cp quick-test.cfg /etc/haproxy/haproxy.cfg
vim haproxy.init
修改26行
[ "${NETWORKING}" = "no" ] && exit 0   #${NETWORKING}添加双引号,否则实验会报错
 
cp haproxy.init /etc/init.d/haproxy
cd /etc/init.d
chmod +x haproxy
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin
haproxy -v  #查询
cd /etc/init.d
chkconfig --add haproxy
chkconfig --level 35 haproxy on
chkconfig --list haproxy
service haproxy start #开启服务
netstat -lntp | grep 8000  #查看开启状态

3.修改Haproxy配置

log 127.0.0.1 local0 info
   log 127.0.0.1 local1 warning
   maxconn 30000
   pidfile     /var/run/haproxy.pid
   user haproxy
   group haproxy
   daemon
   spread-checks 2
 
defaults
   log        global
   mode       http
   option     httplog
   option     http-server-close
   option     forwardfor
   retries    3
   timeout    http-request 2s
   timeout    queue 3s
   timeout    connect 1s
   timeout    client 10s
   timeout    server 2s
   timeout    http-keep-alive 10s
   timeout    check 2s
 
frontend http-xy101
   bind 192.168.80.100:80
   #maxconn 20000
   #acl url_static path beg -i /static
   acl url_jsp path_end -i .jsp
 
   #use_backend_static_backend if url_static
   log 127.0.0.1 local0 info
   log 127.0.0.1 local1 warning
   maxconn 30000
   pidfile     /var/run/haproxy.pid
   user haproxy
   group haproxy
   daemon
   spread-checks 2
 
defaults
   log        global
   mode       http
   option     httplog
   option     http-server-close
   option     forwardfor
   retries    3
   timeout    http-request 2s
   timeout    queue 3s
   timeout    connect 1s
   timeout    client 10s
   timeout    server 2s
   timeout    http-keep-alive 10s
   timeout    check 2s
 
frontend http-xy101
   bind 192.168.80.100:80
   #maxconn 20000
   #acl url_static path beg -i /static
   acl url_jsp path_end -i .jsp
 
   #use_backend_static_backend if url_static
   use_backend tomcat_backend if url_jsp
   default_backend nginx_backend
 
backend nginx_backend
   balance roundrobin
   option http-keep-alive
   option httpchk GET /test.html
   server nginx.inst1 192.168.80.101:80 maxconn 10000 check inter 2000 rise 2 fall 3
   server nginx.inst2 192.168.80.102:80 maxconn 10000 check inter 2000 rise 2 fall 3
 
backend tomcat_backend
   balance roundrobin
   option http-server-close
   #cookie HA_STICKY_dy insert indirect nocache
   server tomcat.inst1 192.168.80.101:8080 cookie tomcat.inst1 maxconn 10000 check inter 2000 rise 2 fall 3
   server tomcat.inst2 192.168.80.102:8080 cookie tomcat.inst2 maxconn 10000 check inter 2000 rise 2 fall 3
 
listen stats
   bind :8000
   stats enable
   stats refresh 30s
   stats uri /stats
   stats realm HAProxy\ Stats
   stats auth admin:admin123
   # this is the address and port we'll listen to, the ones to aim the
   # load generators at
   # create a certificate and uncomment this for SSL
   # bind :8443 ssl crt my-cert.pem alpn h2,http/1.1
   # Put the server's IP address and port below
   server s1 172.31.32.33:8000

四、部署nginx和Tomcat服务器

安装nginx

另外一台

安装tomcat

网页测试

标签:Haproxy,Web,http,群集,server,timeout,haproxy,backend
From: https://blog.csdn.net/aran2002/article/details/139666113

相关文章

  • Android WebSocket长连接的实现
    一、为什么需要WebSocket初次接触WebSocket的人,都会问同样的问题:我们已经有了HTTP协议,为什么还需要另一个协议?它能带来什么好处?答案很简单,因为HTTP协议有一个缺陷:通信只能由客户端发起。举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询......
  • Web应用课 第四讲 内外边距、盒子模型、位置、浮动、名片实战
    内外边距margin内边距margin属性为给定元素设置所有四个(上下左右)方向的外边距属性。可以接受1~4个值(上、右、下、左的顺序)可以分别指明四个方向:margin-top、margin-right、margin-bottom、margin-left取值length:固定值percentage:相对于包含块的宽度,以百分比值为外边距。a......
  • web_week3
    web_week3javaweb[RoarCTF2019]EasyJava考点Web.xml文件泄露:漏洞描述:Web.xml是JavaWeb应用的配置文件,位于WEB-INF目录下,通常不应被直接从Web访问到。如果Web服务器配置不当,允许直接通过URL访问WEB-INF/web.xml,攻击者就能获取到该文件的内容。这本身构成了一种信息泄露......
  • Vulhub WebLogic漏洞复现
    目录前言任意文件上传漏洞(CVE-2018-2894)管理控制台未授权RCE漏洞(CVE-2020-14882&CVE-2020-14883)未授权RCE漏洞(CVE-2023-21839)SSRF漏洞(CVE-2014-4210)前言前面两篇针对WebLogic存在的XMLDecoder和T3协议反序列化漏洞进行了分析和复现,这里继续借助vulhub来复现WebLogic的其他漏洞......
  • 网站_域名_DNS_端口_web访问过程
    网站基本概念服务器:能够提供服务器的机器,取决于机器上所安装的服务软件web服务器:提供web服务(网站访问),需要安装web服务软件,Apache,tomcat,iis等域名(DomainName)方便人记的DNS(DomainNameSystem)域名系统,一个分布式数据库,让ip和域名相互映射让你不用记ip先找本地DNS,再找网......
  • 6.12Web应用漏洞发现探针利用
    已知CMS、开发框架、思路:各个页面查看数据包(地址信息),查看框架,上fofa关键字搜索(查看其框架信息如thinkhphp),利用检测工具测试漏洞情况;网站根目录下的robots.txt文件信息;/data/admin/ver.txt网站升级时间;常见SQL注入、登录、逻辑越权支付逻辑绕过思路:#https://blog.csdn.ne......
  • Haproxy搭建Web群集
    目录1.Haproxy相关概念1.1Haproxy的概述1.2Haproxy的主要特性1.3常见的Web集群调度器2.应用分析2.1LVS应用2.2Haproxy应用2.3LVS、Nginx、Haproxy的区别2.4Haproxy调度算法原理3.Haproxy搭建web群集3.1初始化操作3.2编译安装Haproxy3.3配置Haproxy......
  • 【java计算机毕设】图书管理系统javaweb java MySQL springboot vue html maven送文档
    1项目功能【java计算机专业学长毕业设计分享】智慧图书管理系统JavaSpringBootvueHTMLMySQL前后端分离2项目介绍系统功能:智慧图书管理系统包括管理员和用户两种角色。管理员的功能包括在个人中心修改个人信息和密码,管理员功能模块管理管理员。基础数据管理模......
  • webman admin 中的 Layui 使用说明
    目录Layui背景生命周期底层方法通用Common模块化相关Modular事件Event模块系统入门Layui模块系统与vue模块的区别理解layui.use代码解释Layui背景Layui是一个上古框架,jQuery时代末期Vue初期的作品,早期因为layout.js弹出层起家,在作者的努力下,成体系的开发了一套常......
  • stable-diffusion-webui 环境配置
    链接:AUTOMATIC1111/stable-diffusion-webui:StableDiffusionwebUI(github.com)查看python版本:   安装完python之后,打开工程,配置虚拟环境 下载安装对应的依赖库,其中的torch相关三个库选择与自己cuda相关的版本安装,我的pytorch选的是2.1.2,下载网址:download.pytorch.o......