基于haproxy+keepalive+varnish实现lnmp企业级架构

一、实验准备

服务器A:haproxy服务器(主)

服务器B:haproxy服务器(备)

服务器C:LNMP服务器、varnish服务器

服务器D:LNMP服务器、varnish服务器

二、实验要求

前端负载均衡器实现keepalived高可用。并且实现对于图片和静态资源的请求,代理到后端webserver缓存varnish服务上,对于动态请求。直接代理到厚点web服务,后端健康检测基于/index.html(手动创建),监测连续三次监测通过,视为OK,连续5次监测失败,视为fall。

三、实验步骤

1、前端负载均衡器实现VIP的漂移

keepalived(主)
global_defs?{
???notification_email?{
[email protected]???
}
[email protected]
???smtp_server?127.0.0.1
???smtp_connect_timeout?30
???router_id?zuozuo_LVS
}
vrrp_instance?VI_1?{
????state?MASTER?????//
????interface?eth1
????virtual_router_id?70
????priority?100????//优先级
????advert_int?1
????authentication?{
????????auth_type?PASS
????????auth_pass?zuozuo
????}
????virtual_ipaddress?{
172.17.110.70/16????//VIP
????}
}
keepalived(备)
global_defs?{
???notification_email?{
	[email protected]???
}
[email protected]
???smtp_server?127.0.0.1
???smtp_connect_timeout?30
???router_id?zuozuo_LVS
}

vrrp_instance?VI_1?{
????state?BACKUP
????interface?eth1
????virtual_router_id?70
????priority?90
????advert_int?1
????authentication?{
????????auth_type?PASS
????????auth_pass?zuozuo
????}
????virtual_ipaddress?{
	172.17.110.70/16????//VIP
????
????}
}

2、前端负载均衡器实现请求的分离

global
????#?to?have?these?messages?end?up?in?/var/log/haproxy.log?you?will
????#?need?to:
????#
????#?1)?configure?syslog?to?accept?network?log?events.??This?is?done
????#????by?adding?the?‘-r‘?option?to?the?SYSLOGD_OPTIONS?in
????#????/etc/sysconfig/syslog
????#
????#?2)?configure?local2?events?to?go?to?the?/var/log/haproxy.log
????#???file.?A?line?like?the?following?can?be?added?to
????#???/etc/sysconfig/syslog
????#
????#????local2.*???????????????????????/var/log/haproxy.log
????#
?log?????????127.0.0.1?local2
????chroot??????/var/lib/haproxy
????pidfile?????/var/run/haproxy.pid
????maxconn?????40000
????user????????haproxy
????group???????haproxy
????daemon
????#?turn?on?stats?unix?socket
????stats?socket?/var/lib/haproxy/stats
#---------------------------------------------------------------------
#?common?defaults?that?all?the?‘listen‘?and?‘backend‘?sections?will
#?use?if?not?designated?in?their?block
#---------------------------------------------------------------------
defaults
????mode????????????????????http
????log?????????????????????global
????option??????????????????httplog
????option??????????????????dontlognull
????option?http-server-close
????option?forwardfor???????except?127.0.0.0/8
????option??????????????????redispatch
????retries?????????????????3
????timeout?http-request????10s
????timeout?queue???????????1m
????timeout?connect?????????10s
????timeout?client??????????1m
????timeout?server??????????1m
????timeout?http-keep-alive?10s
????timeout?check???????????10s
????maxconn?????????????????3000

listen?stats???//检测页面
	mode?http
	bind?0.0.0.0:1080
	stats?enable
	stats?hide-version
	stats?uri?/haproxyadmin
	stats?auth?admin:admin???//登录检测
	stats?admin?if?TRUE
#---------------------------------------------------------------------
#?main?frontend?which?proxys?to?the?backends
#---------------------------------------------------------------------
frontend??static
????mode?http
????bind?*:6000???//标明端口
????acl?url_static??path_beg????-i?/static?/images?/javascript?/stylesheets
????acl?url_static??path_end???????-i?.jpg?.gif?.png?.css?.js

????use_backend?static??????????if?url_static
?
?frontend?server
	bind??*:80
	default_backend??server
#---------------------------------------------------------------------
#?static?backend?for?serving?up?images,?stylesheets?and?such
#---------------------------------------------------------------------
backend?static
????balance?????roundrobin??
????option?httpchk?GET?/index.html
????server??????static1??172.17.252.63:6000?check
????server??????static2??172.17.253.59:6000?check
#---------------------------------------------------------------------
#?round?robin?balancing?between?the?various?backends
#---------------------------------------------------------------------
backend??server
????balance?????roundrobin
????option?httpchk?GET?/index.html
????server??server1?172.17.252.63:80?check?inter?3000??rise?3?fall?5
????server??server2?172.17.253.59:80?check?inter?3000??rise?3?fall?5

3、varnish实现缓存策略

vcl?4.0;?//必须要写,注明版本
import?directors;
probe?check1?{??//制定健康检测策略
????????.url?=?"/index.html";
????????.timeout=1s;
????????.interval=2s;
????????.window=5;
????????.threshold=3;
??????}
backend?server1?{
.host?=?"172.17.252.63";???//lnmp服务器
.port?=?"80";
.probe?=?check1;
}
backend?server2?{
????????.host?=?"172.17.253.59";
????????.port?=?"80";
????????.probe?=?check1;
}
sub?vcl_init?{???//初始化
????new?web_cluster?=?directors.random();
????web_cluster.add_backend(server1,10);
????web_cluster.add_backend(server2,20);
}

?acl??purgers?{????#?定义可访问来源IP
?????????"127.0.0.1";
?????????"172.17.0.0"/16;
?}

sub?vcl_recv?{
	?if?(req.method?==?"GET"?&&?req.http.cookie)?{??
????????return(hash);
}
?if?(req.method?!=?"GET"?&&
???req.method?!=?"HEAD"?&&
???req.method?!=?"PUT"?&&
???req.method?!=?"POST"?&&
???req.method?!=?"TRACE"?&&
???req.method?!=?"OPTIONS"?&&
???req.method?!=?"PURGE"?&&
???req.method?!=?"DELETE")?{
????return?(pipe);
???}
}?
sub?vcl_hash?{??//对访问的URL进行hash
?????hash_data(req.url);
}
sub?vcl_backend_response?{?#?自定义缓存文件的缓存时长,即TTL值
????if?(bereq.url?~?"\.(jpg|jpeg|gif|png)$")?{
????????set?beresp.ttl?=?3600s;??
????}
????if?(bereq.url?~?"\.(html|css|js)$")?{
????????set?beresp.ttl?=?7200s;
????}
?????set?beresp.grace?=?30m;

????????return(deliver);
}
sub?vcl_deliver?{
????if?(obj.hits?>?0)?{????#?为响应添加X-Cache首部,显示缓存是否命中
????????set?resp.http.X-Cache?=?"HIT?from?"?+?server.ip;
????}?else?{
????????set?resp.http.X-Cache?=?"MISS";
????}
????????unset?resp.http.X-Powered-By;
????????unset?resp.http.Via;
}

??

时间: 2024-08-03 00:58:23

基于haproxy+keepalive+varnish实现lnmp企业级架构的相关文章

实现基于Keepalived+Haproxy+Varnish+LNMP企业级架构

Varnish知识储备: 常见的状态引擎之间的默认处理流程为: ①如果缓存命中:默认流程 用户请求–>vcl_recv–>vcl_hash–>vcl_hit–>vcl_deliver–>响应给用户 ②如果缓存未命中:默认流程 用户请求–>vcl_recv–>vcl_hash–>vcl_miss–>vcl_backend_fetch–>后端服务器接受请求发送响应报文–>vcl_backend_response–>vcl_deliver

实现基于Haproxy+Keepalived负载均衡高可用架构

一:环境准备 centos系统服务器4台,两台用于做haproxy主从架构, 两台作为后端server,服务器配置好yum源,防火墙关闭, 关闭selinux,各节点时钟服务同步,各节点之间可以通过主机名互相通信. 二:安装步骤 1.iptables –F &&setenforing 清空防火墙策略,关闭selinux. 2.拿两台服务器都使用yum方式安haproxy,keepalived 服务 3.后端服务器配置好基于LNMP架构的web服务 当准备工作做好之后,就可以修改配置文件啦,

企业实战(4)-实现基于Haproxy负载均衡集群的电子商务网站架构

企业实战:逐步实现企业各种情景下的需求 企业情景四: 随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务提供,不在和pc站点一起提供服务,此时需要做7层规则负载均衡,运维总监要求,能否用一种服务同既能实现七层负载均衡,又能实现四层负载均衡,并且性能高效,配置管理容易,而且还是开源. 情景说明:在企业生产环境中,每天会有很多的需求变更,比如增加服务器.新业务上线.url路由修改.域名配置等等,对于前端负载均衡设备来说,容易维

saltstack 的web平台集群部署(3)---haproxy+keepalive+httpd 的部署

上一篇文章咱们讲到了haproxy的部署与配置 咱们这里说说如何使用keepalive和httpd来实现haproxy+keepalive+httpd  这套web架构的saltstack集群部署 首先咱们 http的部署,很简答哦,直接yum安装就完成了,但是在咱们saltstack就是用installed定义就行了. ok,让咱们搞起. [[email protected] http]# pwd/srv/salt/prod/http[[email protected] http]# cat 

高可用haproxy调度varnish服务器缓存后端动静分离集群架构

(1) 动静分离部署wordpress,动静都要能实现负载均衡,要注意会话的问题: (2) 在haproxy和后端主机之间添加varnish进行缓存: (3) 给出设计拓扑,写成博客: (4) haproxy的设定要求: (a) stats page,要求仅能通过本地访问使用管理接口:  (b) 动静分离: (c) 分别考虑不同的服务器组的调度算法: (5) haproxy高可用: 实验规划: 利用keepalived主备高可用两个haproxy服务器 对varnish缓存服务器做高可用 动态w

基于HAproxy的web动静分离及输出状态检测页面

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

使用HAproxy,keepalived实现简单LAMP架构的负载均衡与高可用

整个架构简单拓扑图如下所示: 其中: 192.168.10.66与192.168.10.6两台主机提供httpd服务 192.168.10.27与192.168.10.87两台主机提供varnish缓存服务 192.168.10.17与192.168.10.77两台主机安装HAProxy实现客户端请求的调控 192.168.10.7主机安装mariadb,提供数据存储服务 服务器与客户端连接ip地址为172.16.10.99/16, 一.httpd服务 1.分别于192.168.10.6与192

【转载】基于Docker的CaaS容器云平台架构设计及市场分析

[转自]http://www.cnblogs.com/darkprince/p/5115739.html 基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将

部署基于国际版Azure的SharePoint三层架构服务器场

前言 微软Azure国际版已经很普及了,这里没有用国内版(世纪互联),用的是国际版,当然是由于公司性质的缘故.这里一步步图文的方式,分享给大家创建Azure国际版的SharePoint三层架构的过程,并带给大家一些使用感受. 自己在使用的过程中,也发现一些问题,搜了很久也没有搞定,最后在MS case的帮助下,才真正解决了问题.同时也分享给大家,对于已经深入了解Azure的朋友,可以忽略本文,烦请勿见笑. 1.申请Azure账号,这部分略过了,我这里已经有创建好的Azure账号,在管理页面上点击