使用Haproxy搭建Web群集

Haproxy可以实现动静分离的负载均衡,可根据动静态不同的访问请求,将访问请求分配给不同的服务器,而自身只做调度器的功能

Haproxy可以实现七层负载均衡以及四层负载均衡,只是在流量调度的协议不同,七层使用HTTP协议调度,四层使用TCP协议调度

在企业中可作为有限替代产品,Haproxy整体的并发量很高
替代顺序:
1、LVS
2、Haproxy
3、nginx

Haproxy健康检测机制:直接使用get请求方法,请求后端的网页,当后端可以发回网页则判断后端节点是存活的

Haproxy的常用功能:
后端节点的健康检测
负载均衡
动态分离
会话保持

HAProxy 主要优点:
1、HAProxy 是支持虚拟主机的,通过 frontend 指令来实现
2、能够补充 Nginx 的一些缺点比如 Session 的保持,Cookie 的引导等工作
3、支持 url 检测后端的服务器出问题的检测会有很好的帮助。
4、它跟 LVS 一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲 HAProxy 更会比
Nginx 有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的。
5、HAProxy 可以对 Mysql 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,不
过在后端的 MySQL slaves 数量超过 10 台时性能不如 LVS,所以更推荐 LVS+Keepalived。
6、能对请求的 url 和 header 中的信息做匹配,有比 lvs 有更好的 7 层实现

Haproxy调度算法:
1、RR(Round Robin)轮询、WRR加权轮询
2、LC(Least Connections)最少连接数,WLC加权最少连接
3、SH(source hashing)来源访问调度算法
具体有如下 8 种:
(1)roundrobin,表示简单的轮询,这个是负载均衡基本都具备的
(2)static-rr,表示根据权重,建议关注
(3)leastconn,表示最少连接者先处理,建议关注
(4)source,表示根据请求源 IP,这个跟 Nginx 的 IP_hash 机制类似,我们用其作为解
决 session 问题的一种方法
(5)ri,表示根据请求的 URI
(6)rl_param,表示根据请求的 URl 参数’balance url_param’ requires an URL parameter
name
(7)hdr(name),表示根据 HTTP 请求头来锁定每一次 HTTP 请求
(8)rdp-cookie(name),表示根据据 cookie(name)来锁定并哈希每一次 TCP 请求

haproxy负载均衡nginx工作文档:
====haproxy负载均衡nginx=
systemctl stop firewalld
setenforce 0

=配置环境=
haproxyIP:192.168.40.11
nginx1:192.168.40.12
nginx2:192.168.40.13
nginx3:192.168.40.14
=安装haproxy==
yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
rpm -q pcre-devel bzip2-devel gcc gcc-c++ make
tar -xf haproxy-1.4.24.tar.gz -C /usr/src/
cd /usr/src/haproxy-1.4.24/
make TARGET=linux310 && make install //TARGET=linux310指定linux版本号是多少
可以通过uname -r查看
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/ //复制配置文件
cp examples/haproxy.init /etc/init.d/haproxy //复制服务启动脚本
chmod +x /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/ //复制启动程序

安装nginx=
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar xf nginx-1.6.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

编辑Haproxy主配置文件
vim /etc/haproxy/haproxy.cfg

global //全局通用参数
#log 127.0.0.1 local0 //日志记录情况,IP表示日志记录的IP地址
#log 127.0.0.1 local1 notice //notice日志记录级别,notice级别比info级别高
#log loghost local0 info
log /dev/log local0 info //因为Haproxy在自身记录日志文件,所以可以写成该参数
log /dev/log local0 notice
maxconn 4096 //最大连接数,在defaults和listen中也有最大连接数,
优先级为listen、defaults、global
#chroot /usr/share/haproxy //监牢模式
uid 99 //运行的UID号,99号用户为Nobody用户
gid 99 //运行的GID号
daemon //以守护进程的方式运行
#debug
#quiet
defaults
log global //表示defaults中的日志文件沿用global模块的log记录方式
mode http //负载均衡模式http为七层负载均衡,tcp为四层负载均衡
option httplog //表示在日志中记录所有http日志的信息
option dontlognull //不在日志中记录空连接访问
retries 3 //表示对后端节点健康检测失败的重试次数
# redispatch //会话保持
maxconn 2000 //最大连接数
contimeout 5000 //连接超时时间,单位毫秒
clitimeout 50000 //客户端超时时间,在规定时间内客户端不发送信息,则断开连接
srvtimeout 50000 //服务端往回发数据的超时时间,表示真实节点在规定时间内未发
送数据,则断开连接

listen yun210 0.0.0.0:80 //实现负载均衡的模块,yun210表示listen模块的名称,80为监听端口,
0.0.0.0表示任意IP
option httpchk GET /index.html //健康检测
balance roundrobin //轮询算法,
语法:balance {roundrobin|static-rr|leastconn| source|uri|uri_param|ha()|rdp-cookie|rdp- cookie(name)}
server nginx1 192.168.40.12:80 check inter 2000 rise 1 fall 3 weight 1
//server定义后方节点,check表示对该主机进行健康检
查,inter表示间隔时间多少毫秒,rise 1 表示检测通1次
则增加回来 fall 3表示检测失败三次则从分配表中删

server nginx2 192.168.40.13:80 check inter 2000 rise 1 fall 3 weight 1
server nginx3 192.168.40.14:80 check inter 2000 rise 1 fall 3 backup //backup表示标记为备用

=创建nginx测试页====
vim /usr/local/nginx/html/1.html
111
222
333

=最终检测=====
nginx
service haproxy start
curl 192.168.40.11/1.html //查看是否有轮询效果

192.168.40.12:killall nginx
192.168.40.13:killall nginx
curl 192.168.40.11/1.html //检测是否只显示备用节点的测试页

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值