使用Haproxy搭建Web群集(理论结合实战,全程可跟做!)

常见的Web集群调度器:

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

Haproxy应用分析

LVS在企业应用中抗负载能力很强,但存在不足

1.LVS不支持正则处理,不能实现动静分离
2.对于大型网站,LVS的实施配置复杂,维护成本相对较高

Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件

1.特别适用于负载特别大的Web站点
2.运行在当前的硬件.上可支持数以万计的并发连接连接请求

Haproxy调度算法原理

Haproxy支持多种调度算法,最常用的有3种:

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

2.理解举例:
有三个节点A、B、C,第一个用户访问会被指派到节点A,第二个用户访问会被指派到节点B,第三个用户访问会被指派到节点第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡效果

Haproxy支持多种调度算法, 最常用的有三种:

1.SH (Source Hashing):

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

2.理解举例

①有三个节点A、B、C,第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B
②当第一个用户第二次访问时会被继续指派到A,第二个用户第二次访问时依旧会被指派到B,只要负载均衡调度器不重启,第一个用户访问都会被指派到A,第二个用户访问都会被指派到B,实现集群的调度
③此调度算法好处是实现会话保持,但某些IP访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用

Demo:

环境准备:

Nginx1:192.168.100.201---->CentOS 7-2

Nginx2:192.168.100.202---->CentOS 7-3

调度服务器:192.168.100.210---->CentOS 7-4

客户机:192.168.100.58---->win 7-1

Nginx2:CentOS 7-3的操作

[[email protected] ~]# yum install pcre-devel zlib-devel gcc gcc-c++ make -y
//改网卡为仅主机模式
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
IPADDR=192.168.100.201
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
//修改完成后输入:wq保存退出
[[email protected] ~]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[[email protected] ~]# mkdir /aaa
[[email protected] ~]# mount.cifs //192.168.10.189/rpm /aaa
Password for [email protected]//192.168.10.189/rpm:
[[email protected] ~]# cd /aaa
[[email protected] aaa]# ls
apr-1.6.2.tar.gz                  jdk
apr-util-1.6.0.tar.gz             john-1.8.0.tar.gz
awstats-7.6.tar.gz                lf.jpg
cronolog-1.6.2-14.el7.x86_64.rpm  mysql
Discuz_X3.4_SC_UTF8.zip           nginx-1.12.2.tar.gz
error.png                         php
extundelete-0.2.4.tar.bz2         TC
haproxy-1.5.19.tar.gz             tomcat
httpd-2.4.29.tar.bz2              tomcat.tmp
hzw.jpeg                          wh.jpg
[[email protected] aaa]# cd tomcat/
[[email protected] tomcat]# ls
apache-tomcat-7.0.54.tar.gz  jdk-8u91-linux-x64.tar.gz
apache-tomcat-8.5.16.tar.gz  nginx-1.12.0.tar.gz
jdk-7u65-linux-x64.gz        nginx-1.6.0.tar.gz
[[email protected] tomcat]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[[email protected] tomcat]# cd /opt/
[[email protected] opt]# useradd -M -s /sbin/nologin nginx
[[email protected] opt]# cd nginx-1.12.0/
[[email protected] nginx-1.12.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[[email protected] nginx-1.12.0]# make && make install
[[email protected] nginx-1.12.0]# cd /usr/local/nginx/html/
[[email protected] html]# echo "this is accp web" > test.html
[[email protected] html]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] 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
[[email protected] html]# nginx
[[email protected] html]# netstat -ntap | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6408/nginx: master
[[email protected] html]# systemctl stop firewalld.service
[[email protected] html]# setenforce 0

在火狐浏览器中输入:http://127.0.0.1/test.html 验证:此时显示 this is accp web

Nginx1:CentOS 7-2的 操作

[[email protected] ~]# yum install pcre-devel zlib-devel gcc gcc-c++ make -y
//改网卡为仅主机模式
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
IPADDR=192.168.100.202
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
//修改完成后输入:wq保存退出
[[email protected] ~]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[[email protected] ~]# mkdir /aaa
[[email protected] ~]# mount.cifs //192.168.10.189/rpm /aaa
Password for [email protected]//192.168.10.189/rpm:
[[email protected] ~]# cd /aaa
[[email protected] aaa]# ls
apr-1.6.2.tar.gz                  jdk
apr-util-1.6.0.tar.gz             john-1.8.0.tar.gz
awstats-7.6.tar.gz                lf.jpg
cronolog-1.6.2-14.el7.x86_64.rpm  mysql
Discuz_X3.4_SC_UTF8.zip           nginx-1.12.2.tar.gz
error.png                         php
extundelete-0.2.4.tar.bz2         TC
haproxy-1.5.19.tar.gz             tomcat
httpd-2.4.29.tar.bz2              tomcat.tmp
hzw.jpeg                          wh.jpg
[[email protected] aaa]# cd tomcat/
[[email protected] tomcat]# ls
apache-tomcat-7.0.54.tar.gz  jdk-8u91-linux-x64.tar.gz
apache-tomcat-8.5.16.tar.gz  nginx-1.12.0.tar.gz
jdk-7u65-linux-x64.gz        nginx-1.6.0.tar.gz
[[email protected] tomcat]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[[email protected] tomcat]# cd /opt/
[[email protected] opt]# useradd -M -s /sbin/nologin nginx
[[email protected] opt]# cd nginx-1.12.0/
[[email protected] nginx-1.12.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[[email protected] nginx-1.12.0]# make && make install
[[email protected] nginx-1.12.0]# cd /usr/local/nginx/html/
[[email protected] html]# echo "this is benet web" > test.html
[[email protected] html]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] 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
[[email protected] html]# nginx
[[email protected] html]# netstat -ntap | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6408/nginx: master
[[email protected] html]# systemctl stop firewalld.service
[[email protected] html]# setenforce 0

在火狐浏览器中输入:http://127.0.0.1/test.html 验证:此时显示 this is benet web

调度服务器:CentOS 7-4的操作

[[email protected] ~]# yum install bzip2-devel pcre-devel gcc gcc-c++ make -y
//改网卡为仅主机模式
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
IPADDR=192.168.100.210
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
//修改完成后输入:wq保存退出
[[email protected] ~]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[[email protected] ~]# mkdir /aaa
[[email protected] ~]# mount.cifs //192.168.10.189/rpm /aaa
Password for [email protected]//192.168.10.189/rpm:
[[email protected] ~]# cd /aaa
[[email protected] aaa]# ls
apr-1.6.2.tar.gz                  jdk
apr-util-1.6.0.tar.gz             john-1.8.0.tar.gz
awstats-7.6.tar.gz                lf.jpg
cronolog-1.6.2-14.el7.x86_64.rpm  mysql
Discuz_X3.4_SC_UTF8.zip           nginx-1.12.2.tar.gz
error.png                         php
extundelete-0.2.4.tar.bz2         TC
haproxy-1.5.19.tar.gz             tomcat
httpd-2.4.29.tar.bz2              tomcat.tmp
hzw.jpeg                          wh.jpg
[[email protected] aaa]# tar zxvf haproxy-1.5.19.tar.gz -C /opt/
[[email protected] aaa]# cd /opt
[[email protected] opt]# ls
haproxy-1.5.19  rh
[[email protected] opt]# cd haproxy-1.5.19/
[[email protected] haproxy-1.5.19]# make TARGET=linux26
[[email protected] haproxy-1.5.19]# make install
[[email protected] haproxy-1.5.19]# mkdir /etc/haproxy
[[email protected] haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
[[email protected] haproxy-1.5.19]# vim /etc/haproxy/haproxy.cfg
//其中chroot /usr/share/haproxy 根目录删除
//其中 redispatch 请求转发给宕机服务器删除
//下面的所有的Listen全部删除,按88dd
//然后添加以下内容
listen  webcluster 0.0.0.0:80
        option httpchk GET /test.html
        balance roundrobin
        server instl 192.168.100.201:80 check inter 2000 fall 3
        server inst2 192.168.100.202:80 check inter 2000 fall 3
//修改完成后输入:wq保存退出
[[email protected] haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy
[[email protected] haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
[[email protected] haproxy-1.5.19]# chkconfig --add haproxy
[[email protected] haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[[email protected] haproxy-1.5.19]# service haproxy start
Starting haproxy (via systemctl):                          [  确定  ]
[[email protected] haproxy-1.5.19]# systemctl stop firewalld.service
[[email protected] haproxy-1.5.19]# setenforce 0

win7-1测试结果:

1.在win 7-1中先把网卡设为仅主机模式,然后在网卡配置中将IPv4设为静态IP:192.168.100.58(需要在同一网段),网关为:255.255.255.0

2.然后在浏览器中输入:http://192.168.100.210/test.html

会先看到:this is accp web

再次刷新会看到:this is benet web

此时实现轮询访问 nginx 节点!

原文地址:https://blog.51cto.com/14464303/2455877

时间: 2024-11-04 04:37:05

使用Haproxy搭建Web群集(理论结合实战,全程可跟做!)的相关文章

Linux之使用haproxy搭建web群集(2)

Linux之使用haproxy搭建web群集(2)   案例二: 一. 实验拓扑图 二. 实验目标:使用keepalived+haproxy实现双机热备和负载均衡. 三. 实验环境: 各虚拟机防火墙Iptables 与 NetworkManager 关闭 四. 实验要求: 继续接着案例一的实验进行.Keepalived配置,漂移地址为192.168.1.100. 1.10: keepalived配置为主 192.168.1.40服务器 haproxy配置与1.10一样.配置后启动ha服务. ke

【中级篇】使用Haproxy搭建WEB群集

使用Haproxy搭建WEB群集 1.          实验需求: 1)     2台服务器部署NgINX服务 2)  1台做Haproxy调度器 3)  搭建负载均衡,测试其效果. 2.          实验环境: 主机 操作系统 IP地址 主要软件 Haproxy RedHat6.5  32位 192.168.10.10 haproxy-1.4.24.tar.gz Nginx服务器1 CentOS--6.5 32位 192.168.10.15 nginx-1.5.10.tar.gz Ng

Linux之使用haproxy搭建web群集(1)

Linux之使用haproxy搭建web群集(1) Haproxy是目前比较流行的一种集群调度工具,同类的调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx和upstream模块支持集群功能,但是对集群节点的健康检查功能不强,性能没有Haproxy好. 案例一: 一.案例拓扑图 二.实验目标:使用haproxy搭建web群集,实现负载均衡和高可用. 三.实验环境: 系统Centos6.5 注意:使用Vmware虚拟机要将各虚拟机防火墙Iptables

使用Haproxy搭建Web群集的方法

常见的 Web集群调度器 目前常见的 Web 集群调度器分为软件和硬件,软件通常使用开源的LVS.Haproxy.Nginx,硬件一般使用比较多的是 F5,也有很多人使用国内的一些产品,如梭子鱼.绿盟等 Haproxy应用分析 ■LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 ■Haproxy是一款可提供高可用性.负载均衡.及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的Web站点 运行在当

使用Haproxy搭建Web群集

防伪码:不必向我解释色彩,我的眼里自有一片湛蓝           第七章 使用Haproxy搭建Web集群 前言:Haproxy是目前比较流行的一种集群调度工具,同类集群调度工具很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持集群功能,但是对集群节点的检查功能不强,性能没有Haproxy好,其官网是http://haproxy.1wt.eu/.本章我们将使用Haproxy搭建一套Web集群,并增加一台Haproxy做双机热备,达到高

Haproxy搭建Web群集概述

博文目录一.Haproxy概述1.HTTP请求2.负载均衡常用调度算法3.常见的Web群集调度器二.Haproxy配置项介绍1.global配置项通常有下面配置参数:2.defaults配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别的声明,将安装默认配置参数:3.listen配置项一般配置应用模块参数:三.Haproxy的参数优化 一.Haproxy概述 Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,

Haproxy搭建web群集(实战!!!)

常见的web集群调度器 目前常见的web集群调度器分为软件和硬件,软件通常使用开源的LVS,Haproxy,Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼,绿盟等 Haproxy应用分析 LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 Haproxy是一款可提供高可用性,负载均衡,及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的web站点 运行在当前的硬件上可

haproxy搭建web群集

使用需求:负载均衡群阶可以用tocat+nginx的负载均衡群集,还有lvs负载均衡群集.三种群集相比来说,lvs性能最好,但是搭建复杂,ningx的upstream模块支持群集,但是群集的节点的故障检查功能不是很多,性能也比不上haproxy.            相对来能实现什么样的效果:对于企业的服务器(web.ftp等)能实现负载均衡,其中一台服务器宕机之后能依然能上网站ftp.            知识点的描述:1.负载均衡的常用调度算法:                     

使用Haproxy搭建Web群集(内附源码包)

Haproxy简介:haproxy提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机:haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理.haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上.haproxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.多进程或多线程模型受内存限制.系统