一,Haproxy介绍

他是一个用c语言编写的开放源代码软件,提供高可用性,负载均衡及基于TCP和HTTP的应用程序代理

特别对那些负载大的web站点非常适用,这些战地通常需要会话保持或七层处理,它可以支持数以万计的并发连接,并且他的运行模式使得它可以简单安全的整合进当前的架构中,同时保护你的web服务器不被暴露到网络上

二,Haproxy的特性

  • 可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美
  • 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s
  • 支持多达8种负载均衡算法,同时也支持会话保持
  • 支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成
  • 基于源的粘性,类似nginx的ip hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器
  • 更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息
  • 详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态, 并提供了一定的管理功能
  • 基于流量的健康评估机制
  • 基于http认证

2.1 Haproxy常见的8种负载均衡策略:

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

2.2 LVS、Nginx、Haproxy的区别
LVS基于Linux操作系统实现软负载均衡,而Haproxy和Nginx是基于第三方应用实现的软负载均衡
LVS可以在4层实现IP负载均衡,但是无法实现基于目录,URL的转发。而Haproxy和Nginx都可以实现4层和7层技术,Haproxy可提供TCP和HTTP应用的负载均衡综合解决方案
LVS因为在ISO模型的第四层,所以状态检测功能单一,而Haproxy在状态检测方面更加强大
Haproxy功能强,但是性能低于LVS
Nginx主要用于Web服务器或缓存服务器

三,开始搭建!

首先准备三台Linux服务器和一台客户机

Haproxy服务器:192.168.100.254
Nginx服务器:192.168.100.10
Nginx服务器:192.168.100.11
客户端:192.168.100.100

首先来安装Haproxy服务器

systemctl stop firewalld
setenforce 0

在这里插入图片描述
把包传入opt目录

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=linux2628 ARCH=x86_64
make install

在这里插入图片描述
进入解压目录,指定内核版本和系统位数

在这里插入图片描述
安装

在在etc目录下创建个haproxy目录,把刚刚文件里的haproxy.cfg复制进去

在这里插入图片描述
在这里插入图片描述
查看并修改:
在这里插入图片描述
在这里插入图片描述
删除掉listen行下所有,添加:
listen webcluster 0.0.0.0:80 #定义一个名为webcluster的应用
option httpchk GET /test.html #检查服务器的test.html文件
balance roundrobin #负载均衡调度算法使用轮询算法roundrobin
server inst1 192.168.100.10:80 check inter 2000 fall 3 #定义在线节点
server inst2 192.168.100.11:80 check inter 2000 fall 3

在这里插入图片描述

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

check inter 2000 #表示haproxy服务器和节点之间的一个心跳频率

fall3 #表示连续三次检测不到心跳频率则认为该节点失效

若节点配置后带有“backup”表示该节点只是个备份节点,只有主节点失效该节点才会上。不携带“backup”,表示为主节点,和其它主节点共同提供服务。

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
cd /etc/init.d
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

上面是添加haproxy系统服务
service haproxy start 或 /etc/init.d/haproxy start
在这里插入图片描述

然后安装两台Nginx节点服务器
下面步骤是一样的:

systemctl stop firewalld
setenforce 0
 
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

在这里插入图片描述
在这里插入图片描述
在两台节点服务器上布置网页内容

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

在这里插入图片描述
在这里插入图片描述
nginx启动服务

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐