haproxy+nginx的集群服务
Posted 遙遙背影暖暖流星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy+nginx的集群服务相关的知识,希望对你有一定的参考价值。
haproxyd与nginx的简单集群
前言:除了nginx和lvs,还有哪些软件可以实现访问调度呢?
一:常见的Web集群调度器
目前常见的Web集群调度器分为软件和硬件,软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等
二:Haproxy应用分析
1、 LVS在企业应用中抗负载能力很强,但有以下缺点
LVS不支持正则处理
不能实现动静分离
不支持7层
对于大型网站,LVS的实施配置复杂,维护成本相对较高
2 、Haproxy优点:
提供高可用、负载均衡、高并发
基于TCP和HTTP四层和七层应用的代理的软件
特别适用于负载特别大的Web站点
运行在当前的硬件上可支持数以万计的并发连接请求Haproxy在负载均衡的速度和并发处理上优于nginx
Haproxy支持虚拟主机,工作在4,7层
Haproxy有会话保持,cookie引导等工作
Haproxy支持以url的方式检测后端服务器状态
Haproxy可以对mysql进行负载均衡
Haproxy支持很多负载均衡算法有很多:轮询。加权轮询,原地址保持,请求URL,根据cookie
三、Haproxy调度算法原理
Haproxy支持多种调度算法,最常用的有三种
Haproxy中最常用的三种调度算法
RR(Round Robin):轮询调度,轮询分配各节点用户访问,可以实现负载均衡
LC(Least Connections):最小连接数算法,更具后端的节点连接数大小动态分配前端请求
SH(Source Hashing):基于访问调度算法,用于一些在服务器端由Session会话记录时,可以基于来源的ip、Cookie等做集群调度,可以实现会话保持,但当IP访问量非常大时会引起负载不均衡,部分节点访问量大,影响业务
Haproxy
支持八种负载均衡策略
仅做负载均衡软件使用,在高并发情况下性能优于nginx
支持URL健康检查,支持会话保持
nginx
支持正则表达式
对网络稳定性要求不高
只支持基于端口检查
不支持会话保持
反向代理能力强
lvs
应用范围广泛
在四层做分发作用,负载均衡能力强
只能基于四层端口转发
四、Haproxy集群部署
实验环境:
Haproxy服务器: Haproxy:192.168.100.8
nginx服务器:nginx01:192.168.100.6
nginx服务器:nginx02:192.168.100.7
hostnamectl set-hostname haproxy
su
hostnamectl set-hostname nginx1
su
hostnamectl set-hostname nginx2
su
1、安装和布置haproxy
将包haproxy-1.5.19.tar.gz 上传到/opt/下
cd /opt
[root@haproxy opt]#tar zxvf haproxy-1.5.19.tar.gz
[root@haproxy opt]# yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
[root@haproxy opt]# cd haproxy-1.5.19/
[root@haproxy haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64 #指定内核版本
[root@haproxy haproxy-1.5.19]# make install
修改配置文件
[root@haproxy haproxy-1.5.19]# mkdir /etc/haproxy #在当前目录常见存放配置文件的目录
[root@haproxy haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
[root@haproxy haproxy-1.5.19]# cd /etc/haproxy/
[root@haproxy haproxy]# vim haproxy.cfg
global
log /dev/log local0 info #修改local0为日志设备,默认存放到系统日志
log /dev/log local0 notice
#log loghost local0 info
maxconn 4096 #最大连接数,可以用ulimit -n限制
# chroot /usr/share/haproxy #将这行注释
uid 99 #用户UID
gid 99 #用户GID
daemon #守护进程模式
#debug
#quiet
defaults
log global #定义日志为global配置中的日志定义
mode http #模式是http
option httplog #采用http日志格式记录日志
option dontlognull #不记录健康检查日志信息
retries 3 #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
redispatch #当服务器负载很高时,自动结束当前队列处理比较久的连接
maxconn 2000 #最大连接数
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端超时时间
srvtimeout 50000 #服务器超时时间
#删除多余部分
listen webcluster 0.0.0.0:80
option httpchk GET /test.html #检查服务器的test.html文件
balance roundrobin #负载均衡调度算法使用轮询算法
server inst1 192.168.100.6:80 check inter 2000 fall 3 #定义在线节点
server inst2 192.168.100.7:80 check inter 2000 fall 3
#check inter 2000 检测时间2000
#fall 3 表示连续三次检测不到心跳频率则认为该节点失效
2、启动管理Haproxy
[root@haproxy examples]# cd /opt/haproxy-1.5.19/
[root@haproxy haproxy-1.5.19]# cd /opt/haproxy-1.5.19/examples/
[root@haproxy examples]# cp haproxy.init /etc/init.d/haproxy
[root@haproxy examples]# cd /etc/init.d/
[root@haproxy init.d]# ls
functions haproxy netconsole network README
[root@haproxy init.d]# chmod +x haproxy
[root@haproxy init.d]# chkconfig --add /etc/init.d/haproxy
[root@haproxy init.d]#
[root@haproxy init.d]#
[root@haproxy init.d]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@haproxy init.d]# service haproxy start
Starting haproxy (via systemctl): [ 确定 ]
3、配置nginx端(确保已安装)
nginx 1上
vim /usr/local/nginx/html/index.html
<h1>Welcome to nginx1!</h1>
<img src="iu=1.jpg"/>
nginx2
vim /usr/local/nginx/html/index.html
<h1>Welcome to nginx1!</h1>
<img src="iu=1.jpg"/>
4、游览器中测试
访问haproxy端192.168.100.8
以上是关于haproxy+nginx的集群服务的主要内容,如果未能解决你的问题,请参考以下文章
Centos7搭建HAproxy+Nginx+NFS负载均衡实现高可用集群