HAProxy实战搭建(一)

一、HAPproxy服务简介
HAProxy是一个提供高可用性、负载均衡,以及基于TCP和HTTP的代理程序。属于七层调度器。
工作模式:
1、mode http:基于http作为七层调度器使用,客户端请求在转发至后端服务器之前将被深度分析(默认是此模式)
2、mode TCP:基于tcp作为四层调度器使用,客户端与后端服务器之间建立会话,不检查第七层信息
3、mode health:仅做健康检查
优点:免费、基于七层并发量大,支持上万的并发量。比naginx要好
缺点:基于四层还不如LVS,毕竟LVS是专业的四层调度器,基于七层正则不如naginx.
二、实战应用
1、运行环境:
Linux版本:CentOs 6.5
iptables防火墙:关闭
客户端:192.168.2.1
调度器(VIP):192.168.2.2
服务器web1(RIP):192.168.2.3
服务器web2(RIP):192.168.2.4
2、调度器配置:
安装之前需要先安装pcre库,用来匹配正则
[root@vip~]# yum -y install pcre-devel
HAproxy官网:http://www.haproxy.org/
去里面下载你自己想要的版本,在这里我下载了haproxy-1.3.20的版本
下载路径:
[root@vip~]# wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz
解包:
[root@vip~]# tar -zxvf haproxy-1.3.20.tar.gz
进入安装目录:
[root@vip~]#cd haproxy-1.3.20
装包:
先查看一下自己的内核版本:
[root@vip haproxy-1.3.20]# uname -r
2.6.32-431.el6.x86_64
[root@vip haproxy-1.3.20]# make TARGET=linux2628 USE_PCRE=1 prefix=/usr/local/haproxy
[root@vip haproxy-1.3.20]# make install
进入安装目录下的examples找到启动脚本, 根据启动脚本调整位置以及配置文件的路径
[root@vip ~]# vim /root/haproxy-1.3.20/examples/haproxy.init
… …
restart() {
/usr/sbin/ BASENAMEcqf/etc/ BASENAME/ BASENAME.cfgif[ ? -ne 0 ]; then
echo “Errors found in configuration file, check it with ‘$BASENAME check’.”
… …
启动脚本里面的主程序以及配置文件路径分别为:
/usr/sbin/haproxy
/etc/haproxy/haproxy.cfg

给主程序做个链接
[root@vip ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/

在安装目录下找到配置文件,并复制到脚本指定的路径
[root@vip ~]# mkdir /etc/haproxy/
[root@vip ~]# cp /root/haproxy-1.3.20/examples/haproxy.cfg /etc/haproxy/

拷贝启动脚本到/etc/init.d/并且加执行权限
[root@vip ~]# cp /root/haproxy-1.3.20/examples/haproxy..init /etc/init.d/haproxy
[root@vip ~]# chmod +x /etc/init.d/haproxy

进入配置文件创建集群:
[root@vip ~]# vim /etc/haproxy/haproxy.cfg
//global全局配置和defaults默认配置保持原样即可,以下稍作介绍
global
log 127.0.0.1 local2
chroot /var/haproxy #chroot运行的路径,增加安全性
uid 99 #程序运行的用户id
gid 99 #程序运行的用户组id
daemon #以后台形式运行haproxy
nbproc 1 #number of process进程数量,不建议修改
pidfile /var/run/haproxy.pid #haproxy的pid存放路径
maxconn 4000 #默认最大连接数
defaults
mode http #;工作模式
option dontlognull
log global #;记录日志
option http-server-close #;启用服务器端关闭
option forwardfor except 127.0.0.0/8 #;传递客户端ip
option redispatch #;当服务器组中的某台设备故障后,自动将请求重定向到组内其他主机。
retries 3 #;请求重试的次数
timeout http-request 10s #;http请求超时时间
timeout queue 1m #;一个请求在队列里的超时时间·
timeout connect 10s #;连接服务器超时时间
timeout client 1m #;设置客户端侧最大非活动时间
timeout server 1m #;设置服务器侧最大非活动时间
timeout http-keep-alive 10s #;设置http-keep-alive的超时时间
timeout check 10s #;当一个连接建立之后,
maxconn 3000 #;同时处理的最大连接数
//listen配置需要做修改,配置你的集群以及后端服务器
listen my_haproxy 192.168.2.2:80
cookie SERVERID rewrite
balance roundrobin
server web1 192.168.2.3:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.2.4:80 cookie app1inst2 check inter 2000 rise 2 fall 5

… …

启动程序:
[root@vip ~]# service haproxy start
会有一些报错
启动程序报错1:
[root@vip ~]# service haproxy start
[ALERT] 069/172803 (4218) : parsing [/etc/haproxy/haproxy.cfg:79] : error opening file for custom error message <503>.
[ALERT] 069/172803 (4218) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 069/172803 (4218) : Fatal errors found in configuration.
Errors found in configuration file, check it with ‘haproxy check’.
解决方案:注释79行errorlog的内容,或者创建errorlog报错页面

启动程序报错2
[root@vip ~]# service haproxy start
Starting haproxy: [WARNING] 069/173057 (4248) : parsing [/etc/haproxy/haproxy.cfg:21]:
keyword ‘redispatch’ is deprecated, please use ‘option redispatch’ instead.
[ALERT] 069/173057 (4248) : Starting proxy my_haproxy: cannot bind socket
[失败]
解决方案:在新版本里面的强制重定向的配置参数是option redispatch 替换掉旧版本里的redispatch
启动程序报错3:
[root@vip ~]# service haproxy start
Starting haproxy: [ALERT] 069/173624 (4298) : Starting proxy myhaproxy:
cannot bind socket
[失败]
解决方案:程序起不来,端口被占用,关闭占用该端口的程序

启动程序报错4:
[root@vip~]# service haproxy start
Starting haproxy: [ALERT] 069/173927 (4338) : [/usr/sbin/haproxy.main()]
Cannot chroot(/usr/share/haproxy).
[失败]
解决方案:
使用mkdir创建chroot对应的目录:# mkdir -p /usr/share/haproxy

后端服务器Web1操作:
[root@web1~]# yum -y install httpd
[root@web1~]# service httpd on ;chkconfig httpd on
[root@web1~]# echo “web1” > /var/www/html/index.html

后端服务器Web2操作:
[root@web2~]# yum -y install httpd
[root@web2~]# service httpd on ;chkconfig httpd on
[root@web2~]# echo “web2” > /var/www/html/index.html

客户端操作:
使用curl http://IP 反复测试
[root@cip ~]# curl http://192.168.2.2

访问过程:
当一个用户访问调度器,调度器不会转发客户端的数据,而是替客户去访问后端的
服务器,然后再把访问到的数据转交给客户端

提示:不同网段的话要在haproxy服务器上开启路由,并且给后端服务器添加网关
提示:更多haproxy帮助文档在安装包中的doc目录下

博主提醒:分享是一种美德!共同发展才是王道!请留下你们的足迹!让我们共同进步!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值