haproxy+nginx的集群服务

Posted 遙遙背影暖暖流星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy+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的集群服务的主要内容,如果未能解决你的问题,请参考以下文章

linux服务器 Haproxy搭建Web集群环境实例

使用Haproxy+nginx 搭建负载均衡集群

Centos7搭建HAproxy+Nginx+NFS负载均衡实现高可用集群

LVS Nginx和HAproxy的区别,怎么选择最好

Nginx高可用集群构建(Keepalived+Haproxy+Nginx)

Nginx高可用集群构建(Keepalived+Haproxy+Nginx)