Haproxy搭建Web群集部署

Haproxy的概述

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

常见的Web集群调度器分为:软件与硬件

软件通常使用开源的集群调度器:LVS、Haproxy、Nginx

 ●LVS性能最好,但是搭建相对复杂; Nginx 的upstream模块支持群集功能,但是对群集节点健康检查功

  能不强,高并发性能没有Haproxy好。

常用的硬件:F5、梭子鱼、绿盟

LVS、Nginx、 HAproxy的区别

●LVS基于Linux操作系统实现软负载均衡,而HAProxy 和Nginx是基于第三方应用实现的软负载均衡

●LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可 提供TCP和HTTP应用的负载均衡综合解决方案;

●LVs因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;

●HAProxy功能强大,但整体性能低于4层模式的LVS负载均衡。

●Nginx主要用于Web服务器或缓存服务器。

Haproxy算法

Haproxy支持多种调度算法,最常见的有三种:RR、LC、SH

RR

RR算法是最简单最常用的一种算法,即轮询调度

例如:

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

LC (Least Connections)

最小连接数算法,根据后端的节点连接数大小动态分配前端请求

例如:

◆有三个节点A、B、C,各节点的连接数分别为A:4、B:5、 C:6
◆第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5、 C:6
◆第二个用户请求会继续分配到A_上,连接数变为A:6、B:5、 C:6; 再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端
◆由于实际情况下A、B、C的连接数会动态释放,很难会出现-样连接数的情况
◆此算法相比较rr算法有很大改进 ,是目前用到比较多的一 种算法

SH (Source Hashing)

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

例如:

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

HAProxy的主要特性

●可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;

●最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;

●支持多达8种负载均衡算法,同时也支持会话保持;

●支持虚机主机功能,从而实现web负载均衡更加灵活;

●支持连接拒绝、全透明代理等独特的功能;

●拥有强大的ACL支持,用于访问控制;

●其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条目的增加而速度有所下降;

●支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一一个tcp连接中完成;

●支持TCP加速,零复制功能,类似于mnap机制;

●支持响应池( response buffering) ;

●支持RDP协议;

●基于源的粘性,类似nginxip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;

●更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;

●详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;

●基于流量的健康评估机制;

●基于http认证;

●基于命令行的管理接口;,

●日志分析器,可对日志进行分析。

HAProxy常见的负载均衡策略

策略说明
roundrobin表示简单的轮询。
static-rr表示根据权重。
leastconn表示最少连接者先处理。
source表示根据请求的源IP,类似Nginx的ip_hash机制。
ri表示根据请求的URI。
rl_param表示根据HTTP请求头来锁定每一次HTTP请求 。
rdp-cookie (name)表示根据据cookie (name)来锁定并哈希每一次TCP请求 。

Haproxy搭建Web群集操作

Haproxy服务器:192.168.111.50
Nginx服务器1192.168.111.30
Nginx服务器2192.168.111.40
客户端:192.168.111.200

Haproxy服务器部署

1.关闭防火墙,将安装Haproxy所需软件包传到/opt目录下

systemctl stop firewalld 
setenforce 0
haproxy-1.5.19.tar.gz 

在这里插入图片描述

2.编译安装Haproxy

yum install -y pcre-devel bzip2-devel gcc gCC-C++ make
tar zXvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=l inux2628 ARCH=x86_64
make install

TARGET=linux26 #内核版本,
#使用uname -r查看内核,如: 2.6.18-371.e15 此时该参数用TARGET=linux26; kernel大于2.6.28的用TARGET=1 inux2628

ARCH=x86_64#系统位数,64位系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.Haproxy服务器配置

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/

cd /etc/haproxy/
vim haproxy.cfg
global
--4~5行--修改,配置日志记录,local0为日志设备,默认存放到系统日志.
		log /dev/log  local0 info
		log /dev/log  local0 notice
		#log loghost   local0 info
		maxconn 4096                     #最大连接数,需考虑ulimit -n限制
--8行--注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉
		#chroot /usr/share/haproxy
		uid 99							#用户UID
		gid 99							#用户GID
		daemon							#守护进程模式
defaults
		log    global					#定义日志为global配置中的日志定义
		mode   http						#模式为http
		option httplog					#采用http日志格式记录日志
		option dontlognull				#不记录健康检查日志信息
		retries 3						#检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
		redispatch						#当服务器负载很高时,自动结束当前队列处理比较久的连接
		maxconn 2000					#最大连接数
		contimeout	5000				#连接超时时间
		clitimeout	50000				#客户端超时时间
		srvtimeout	50000				#服务器超时时间
--删除下面所有listen项--,添加
listen	webcluster 0.0.0.0:80			#定义一个名为webcluster的应用
option httpchk GET /index.html			#检查服务器的index.html文件
balance roundrobin						#负载均衡调度算法使用轮询算法roundrobin
server inst1 192.168.111.30:80 check inter 2000 fall 3			#定义在线节点
server inst2 192.168.111.40:80 check inter 2000 fall 3


————————参数说明——————————
balance roundrobin		#负载均衡调度算法
#轮询算法:roundrobin; 最小连接数算法:leastconn; 来源访问调度算法:source, 类似于nginx的ip_hash

check inter 2000		#表示haproxy服务器和节点之间的一个心跳频率
fall 3					#表示连续三次检测不到心跳频率则认为该节点失效
若节点配置后带有"backup"表示该节点只是个备份节点,只有主节点失效该节点才会上。不携带"backup”,表示为主节点,和其
它主节点共同提供服务。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.添加haproxy系统服务

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy

ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start  /etc/init.d/haproxy start

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

节点服务器部署

systemctl stop firewalld
setenforce 0

在线源安装nginx
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
EOF

yum install nginx -y

yum install -y pcre-devel zlib-devel gcc gCC-C++ make 
useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
make && make install

--192.168.111.30---
echo "this is web1 !" > /usr/local/nginx/html/test.html

--192.168.111.40---
echo "this is web2 !" > /usr/local/nginx/html/test.html
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

nginx	#启动nginx服务

两个节点服务器一样配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进行测试Web群集

在客户端使用浏览器打开 http://192.168.111.50/index.html ,不断刷新浏览器测试负载均衡效果在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
从而实现haproxy搭建Web群集,实现负载均衡的效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值