HAproxy+Keepalived配置及原理说明

2016年2月28日23:25:44 发表评论 1,203 views
本文最后更新于2018年8月23日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

 一,介绍

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。特别适用于那些负载特别大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前的架构中, 同时可以保护你的 web 服务器不被暴露到网络上。

二,安装

从49服务器下载haproxy-1.4.24.tar.gz,制作rpm安装包

报错提示需要安装pcre-devel gcc

即安装成功

三,配置

Server1.example.com

Vim /etc/haproxy/haproxy.cfg

创建目录:mkdir /usr/share/haproxy

注意:因为本机作为被backup,所以本机的httpd服务需要开启,当所有realserver宕机时,本机提供一个错误页面,告知用户正在维护中,但HAProxy默认监听80端口,和httpd冲突,所以需要修改httpd监听端口:

vim /etc/httpd/conf/httpd.conf

136行: Listen 8080

/etc/init.d/haprexy reload

/etc/init.d/httpd restart

四,测试

浏览器输入172.25.49.1/status进行页面监控

输入172.25.49.1进行访问,轮询算法为roundrobin,所以交替出现server3和server4的apache发布页面,关掉server3和server4的httpd服务,显示back1主机也就是本机的apache页面。

五,安全验证

为保证监控页面安全,加密密码认证

六,HAProxy日志

# vi /etc/rsyslog.conf                                                #接受 haproxy 日志

# /etc/init.d/rsyslog restart

vim /etc/haproxy/haproxy.cfg

重启服务:/etc/init.d/haproxy reload

tail -f /var/log/haproxy.log

七,ACL

设置拒绝某个IP用户访问:

Vim /etc/haproxy/haproxy.cfg

八,前端和后端配置

vim /etc/haproxy/haproxy.cfg

 九,图片和文字分离

Vim /etc/haproxy/haproxy.cfg

测试:

将redhat.jpg放到server2(172.25.49.2)的http发布目录。使用浏览器访问

http://172.25.49.1/redhat.jpg,检测路径到以.jpg结尾,启用后端image,读取172.25.49.2的80端口提供的数据,即redhat.jpg,实现了图片和文字分离。

十,读写分离

在server2,server3,server4的/var/www/html中,从49服务器下载上传文件的php文件和upload目录

Chmod 777 upload/

 upload_file.php index.php

 安装php:yum install php -y

/etc/init.d/httpd restart

能上传文件到server2的upload即成功。

根据配置文件,默认访问的是server3和server4的apache目录里面的php页面,点击上传文件之后,由HAProxy启用到后端的图片服务器server2,所以会上传到server2的upload目录。

 十一,HAProxy+Keepalived

在server1和server2源码安装keepalived

编辑配置文件:

MASTER:

cat /etc/keepalived/keepalived.conf

BACKUP:

 

检测脚本:

# cat /opt/check_haproxy.sh

 给检测脚本添加执行权限:

chmod +x /opt/check_haproxy.sh

使用浏览器访问vip:172.25.49.100,可以正常上传文件。

  • 微信小程序
  • 关注微信小程序
  • weinxin
  • 微信公众号
  • 关注微信公众号
  • weinxin
Honest1y

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: