您的位置:首页 > 运维架构 > 网站架构

Haproxy实现大并发web高可用群集部署

2017-07-10 08:25 295 查看
Haproxy web群集部署
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理,HAProxy实现了一种 单一进程模型,此模型支持非常大的并发连接数多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
部署环境:
主机
IP地址
主机名
软件
操作系统
Haproxy服务器
192.168.1.10
Haproxy
Haproxy-1.4.24
Centos-6.5
Nginx1服务器
192.168.1.20
Nginx1
Nginx-1.6.2
Centos-6.5
Nginx2服务器
192.168.1.30
Nginx2
Nginx-1.6.2
Centos-6.5
客户机
192.168.1.40
Khj
IE浏览器
Centos-6.5



编译安装测试nginx
修改ip地址 移走yum仓库,在下面搭建新的本地yum仓库 创建nginx软件包存放文件



挂载nginx光盘 cp到/nginx下



搭建本地yum仓库



yum文件nginx.repo内容:



进入/nginx目录tar nginx软件包 创建nginx用户名,



编译安装nginx



建立测试nginx页面,启动nginx服务,查看nginx端口是否启动



设置iptables防火墙策略,允许80号端口通过



注:配置nginx1服务器跟上面nginx2配置一样,按照上面步骤执行就可以
使用客户机访问nginx两台服务器






编译安装haproxy
搭建本地yum仓库安装haproxy依赖包






tar haproxy软件包,编译安装



TARGET=linux26代表64位操作系统
建立haproxy配置文件



配置haproxy服务器文件 配置文件主要分为global全局配置、defaults默认配置、listen应用组件配置
配置haproxy文件、创建自启动脚本、设置软连接



haproxy.cfg配置文件内容如下:
global
log 127.0.0.1 local0 配置日志记录,local0为日志设备,默认存放在系统日志中
log 127.0.0.1 local1 notice notice为日志级别,通常为24个级别
#log loghost local0 info
maxconn 4096 最大连接数
#chroot /usr/share/haproxy
uid 99 用户uid
gid 99 用户uid
daemon
#debug
#quiet

defaults
log global 定义日志为globel配置中的日志定义
mode http 模式为http
option httplog 采用http日志格式记录日志
option dontlognull
retries 3 检查节点失败次数,连续达到三次失败,会认为节点不可用
maxconn 2000 最大连接数
contimeout 5000 连接超时时间
clitimeout 50000 客户端超时时间
srvtimeout 50000 服务器超时时间
option httpclose
listen webcluster 0.0.0.0:80 定义一个webcluster应用
option httpchk GET /index.html 检查服务器的index.html
balance roundrobin 负载均衡调度算法使用轮询算法
server inst1 192.168.1.20:80 check inter 2000 fall 3 定义的在线节点
server inst2 192.168.1.30:80 check inter 2000 fall 3 如果在后面加bachak就成为备份节点
启动haproxy服务,关闭防火墙或配置策略



在客户机上测试web群集是否实现高性能,高可用(把nginx1宕掉)






配置haproxy日志
Haproxy的日志默认是保存到系统的syslog中,查看起来不方便,所以我们在生产环境中可以将日志单独存储到不同的文件中,配置如下
首先修改配置文件,主要改下面的部分



然后修改rsyslog配置,将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d下,rsyslog启动时会自动加载此目录下所有的配置文件



配置内容如下:
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
$ ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
$ ~
重启rsyslog服务,并且查看haproxy访问信息


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息