中小企业web集群方案 haproxy+varnish+LNMP+memcached配置
- 格式:docx
- 大小:354.24 KB
- 文档页数:13
HAProxy负载均衡原理及企业级实例部署haproxy集群⼀ HAProxy简介HAProxy是⼀种⾼效、可靠、免费的⾼可⽤及负载均衡解决⽅案,⾮常适合于⾼负载站点的七层数据请求。
客户端通过HAProxy代理服务器获得站点页⾯,⽽代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。
同⼀客户端访问服务器,HAProxy保持回话的三种⽅案:1 HAProxy将客户端ip进⾏Hash计算并保存,由此确保相同IP访问时被转发到同⼀真实服务器上。
2 HAProxy依靠真实服务器发送给客户端的cookie信息进⾏回话保持。
3 HAProxy保存真实服务器的session及服务器标识,实现会话保持功能。
haproxy拓扑结构图⼆配置⽂件解析Haproxy安装后默认没有配置⽂件,需要⼿动创建/etc/haproxy.cfg。
启动haproxy时⽤-f指定配置⽂件路径。
haproxy的配置⽂件包含全局设置段与代理段,global是全局段,defaults、listen、frontend、backend为代理段。
frontend⽤来匹配客户端请求的域名或者URL;backend 定义后端服务器集群haproxy配置⽂件参数详细解析配置项描述global chroot<jail dir>将⼯作⽬录切换到<jail dir>并执⾏chrootdaemon后台⼯作模式uid进程账户id,建议设置为haproxy专⽤账户gid进程组id,建议设置为haproxy专⽤组log<address><facility>配置全局syslog,可以设置两台⽇志服务器nbproc<number>指定后台进程数量pidfile<file>指定pid⽂件ulimit-n<number>设置每个进程最⼤⽂件描述符数量maxconn<number>每个进程⽀持的最⼤并发数tune.bufsize<number>设置buffer⼤⼩,默认16384Bmode可选tcp、http、healthtimeout check<timeout>设置检查超时时间contimeout<timeout>设置连接超时时间balance roundrobin设置轮询负载bind<address>:port定义⼀个或者多个监听地址和端⼝stats auth admin:admin设置监控界⾯的⽤户名和密码stats refresh<number>统计页⾯刷新间隔时间option httplog使⽤http⽇志cookie<name>启⽤cookie的保持连接功能option forwardfor允许插⼊这种数据包头,可以让后端服务器获取客户端ip option abortonclose负载⾼时,⾃动关闭处理时间长的请求option allbackups后端服务器宕机,是否激活全部备机,默认启动第⼀个备机option dontlognull不记录空连接⽇志,主要⽤于不记录健康检查⽇志代理设置option redispatch后端某个机器宕机,强制把请求转发给健康机器monitor-uri<URi>检查uri⽂件是否存在,依次判断主机的健康状态monitor-fail if site_dead服务器宕机时,返回503代码option httpchk<uri>使⽤http协议检查服务器健康状态retries<value>服务器连接失败后的重试次数timeout client客户端最⼤超时时间,单位毫秒timeout server服务器最⼤超时时间,单位毫秒timeout connect最⼤连接超时时间,单位毫秒default_backend默认后端服务器组use_backend当条件满⾜时,指定后端服务器组acl<name><criterion>定义访问控制列表三 Haproxy实例部署本例使⽤listen定义⼀个监控端⼝;使⽤frontend定义⼀个前端80端⼝;通过backend定义名为inside_servers 和 external_servers的服务器组;使⽤default_backend定义默认服务器组external_servers;external_servers包括和 两台服务器inside_servers包含 ⼀台服务器服务器名称⽹络配置 eth0:10.10.10.10eth1:192.168.1.2 eth0:192.168.1.3 eth0:192.168.1.4 eth0:192.168.1.51 ⾸先配置web服务器在web1 web2 web3上安装httpd并配置⽹卡vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticIPADDR=192.168.1.3NETMASK=255.255.255.0GATEWAY=192.168.1.2ONBOOT=yesTYPE=Ethernetservice network restartyum install -y httpdiptables -Fiptables -Xservice iptables savesetenforce 0sed -i s/enforcing/disabled/g /etc/sysconfig/selinuxecho "web1 192.168.1.3" > /var/www/html/index.html service httpd restartchkconfig httpd onweb2 web3机器上执⾏与web1相同步骤,注意修改部分参数2 接着haproxy服务器配置设置两块⽹卡vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticIPADDR=10.10.10.10NETMASK=255.0.0.0ONBOOT=yesTYPE=Ethernetvim /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1BOOTPROTO=staticIPADDR=192.168.1.2NETMASK=255.255.255.0GATEWAY=192.168.1.1ONBOOT=yesTYPE=Ethernetservice network restartservice iptables stop内核调优,修改系统⽂件vim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535配置⽇志⽂件,添加三⾏vim /etc/rsyslog.conf$ModLoad imudp $UDPServerRun 514local3.* /var/log/haproxy.logyum -y install gcctar zxf haproxy-1.6.11.tar.gz -C /usr/src/ cd /usr/src/haproxy-1.6.11/make TARGET=linux2628make installmkdir /var/haproxy3 创建配置⽂件vim /etc/haproxy.cfgglobalmaxconn 4096log 127.0.0.1 local3 infochroot /var/haproxyuid 99gid 99daemonnbproc 1pidfile /var/run/haproxy.pidulimit-n 65535stats socket /var/tmp/statsdefaultslog globalmode httpmaxconn 20480option httplogoption httpcloseoption dontlognulloption forwardforoption redispatchoption abortonclosestats refresh 30retries 3balance roundrobincookie SRVtimeout check 2000mstimeout connect 5000mstimeout server 50000mstimeout client 50000mslisten admin_status #定义haproxy的监控界⾯bind 0.0.0.0:6553mode httplog 127.0.0.1 local3 infostats enablestats refresh 5s #监控页⾯⾃动刷新时间5sstats realm Haproxy\ Statistics #登录监控页⾯提⽰符stats uri /admin?stats #监控页⾯URL路径stats auth admin:123456 #监控页⾯的账户密码stats hide-version #隐藏haproxy版本frontend web_service #定义前端服务器bind 0.0.0.0:80mode httplog globaloption httplogoption httpcloseoption forwardfor#acl inside_src src 192.168.1.0/24 #定义acl#use_backend inside_servers if inside_src #判断acl的源地址,把请求转发到inside_servers组default_backend external_servers #默认服务器组backend external_serversmode httpbalance roundrobin #轮询真实服务器option httpchk GET /index.html #检查index⽂件,判断服务器是否健康##定义后端真实服务器,向cookie中插⼊web1信息,check进⾏健康检查,检查时间间隔为2000ms,##连续两次健康则认为是正常开启的,连续三次检查失败则认为宕机,服务器权重1server web1 192.168.1.3:80 cookie web1 check inter 2000 rise 2 fall 3 weight 1server web2 192.168.1.4:80 cookie web2 check inter 2000 rise 2 fall 3 weight 1#backend inside_servers#mode http#balance roundrobin #轮询真实服务器#option httpchk GET /index.html #检查index⽂件,判断服务器是否健康#server web3 192.168.1.5:80 cookie web3 check inter 2000 rise 2 fall 3 weight 14 启动haproxy服务service rsyslog restart #重启系统⽇志服务haproxy -f /etc/haproxy.cfg #启动haproxy服务echo "/usr/local/sbin/haproxy -f /etc/haproxy.cfg" >> /etc/rc.local5 测试验证浏览器访问监控页⾯多次刷新访问将得到web1和web2 不同页⾯信息。
haproxy 负载均衡原理文章标题:探析Haproxy负载均衡原理及运作机制引言:在当今互联网应用与服务的高并发背景下,负载均衡起着至关重要的作用。
Haproxy作为一款成熟且广泛应用的负载均衡软件,不仅可以提高系统性能和可用性,还能有效分配请求流量,实现资源的合理利用。
本文将介绍Haproxy负载均衡的原理及运作机制,以期对读者深入了解和应用Haproxy有所帮助。
一、什么是Haproxy负载均衡——负载均衡的定义及意义负载均衡(Load Balancing)指将网络流量有效地分发到多台服务器上,以实现高可用、高性能的网络服务。
而Haproxy是一个开源软件,功能强大,可靠性高,具备高性能、高可用、灵活性等优点,被广泛用于负载均衡环境中。
二、Haproxy负载均衡的基本原理1. 请求分发与转发Haproxy监听来自客户端的请求,并将其分发到后端的服务器组。
它支持多种负载均衡算法(如轮询、最少连接、源地址散列等),根据算法将请求路由到合适的服务器上。
2. 健康检查为了确保后端服务器的可用性,Haproxy会周期性地发送健康检查请求。
如果某个服务器出现故障或不可用,Haproxy将不再将流量发送到该服务器上,以免影响整个系统的正常运行。
3. 会话保持在某些场景下,必须确保同一个客户端的请求始终路由到同一个后端服务器上。
Haproxy提供了会话保持的功能,通过某种方式(如Cookie、IP地址等)记录客户端与后端服务器之间的关联关系,以实现会话状态的保持。
4. 动态配置与管理Haproxy允许运维人员动态地添加、删除、启用或禁用后端服务器,以适应系统规模和负载变化的需求。
同时,它还支持配置文件的热更新,不需要重启服务即可生效。
三、Haproxy的工作流程1. 监听请求Haproxy通过绑定网络接口和端口监听来自客户端的请求数据包。
2. 请求分发与负载均衡根据负载均衡算法,Haproxy将请求转发到合适的后端服务器。
haproxy架构原理(原创版)目录1.HAProxy 概述2.HAProxy 的架构原理3.HAProxy 的工作流程4.HAProxy 的优势和应用场景正文1.HAProxy 概述HAProxy(High Availability Proxy)是一款高可用性代理服务器,主要用于在多个后端服务器之间负载均衡和提供高可用性服务。
它运行在Linux 系统上,支持 TCP、UDP 和 HTTP/HTTPS 协议。
通过使用 HAProxy,可以实现故障转移、负载均衡、安全性等功能,从而保证服务的高可用性和可靠性。
2.HAProxy 的架构原理HAProxy 的架构原理主要基于事件驱动和多进程模型。
其主要组件包括:- 事件层:处理来自客户端的请求,如建立连接、接收数据、发送数据等。
- 进程层:管理并处理来自事件层的请求,如负载均衡、故障转移等。
- 配置层:存储并管理 HAProxy 的配置信息,包括后端服务器、负载均衡算法等。
3.HAProxy 的工作流程HAProxy 的工作流程可以概括为以下几个步骤:- 客户端发起请求:客户端向 HAProxy 发起请求,请求经过 TCP 或UDP 协议传输。
- 建立连接:HAProxy 接收到请求后,建立与客户端的连接,并将请求传递给后端服务器。
- 负载均衡:HAProxy 根据配置的负载均衡算法,选择一个或多个后端服务器处理请求。
- 故障转移:当后端服务器出现故障时,HAProxy 会将请求转发至其他正常运行的服务器。
- 返回响应:后端服务器处理完请求后,将响应返回给 HAProxy,HAProxy 再将响应发送给客户端。
4.HAProxy 的优势和应用场景HAProxy 具有以下优势:- 高可用性:通过故障转移和负载均衡功能,保证服务的持续可用。
- 高性能:采用事件驱动和多进程模型,提高吞吐量和响应速度。
- 安全性:支持 HTTPS 和 TLS 协议,提供加密传输和身份验证功能。
HAproxy文档HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。
HAProxy还可以将后端的服务器与网络隔离,起到保护后端服务器的作用。
常用开源软件负载均衡器有:Nginx、LVS、Haproxy。
三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)LVS:1、抗负载能力强。
抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)3、应用范围比较广,可以对所有应用做负载均衡;4、不支持正则处理,不能做动静分离。
5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)6、配置复杂,对网络依赖比较大,稳定性很高。
Ngnix:1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;2、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;3、Nginx安装和配置比较简单,测试起来比较方便;4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
8、不支持Session的直接保持,但能通过ip_hash来解决。
、对Big request header的支持不是很好,9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash (Ip哈希)10、Nginx还能做Web服务器即Cache功能。
性能指标(解决方案)本平台的性能指标包括:➢按可以支持5000家商户的规模,每个商户2000用户,1000万用户使用➢并发500个/秒的用户同时访问➢系统可支持日均订单1万单以上处理能力➢日均IP:支持日访问量10万IP左右,峰值可达到15万IP➢日均PV:支持日均50wPV,峰值可达到70wPV➢存储容量:300万注册会员、商品数达3万件➢高峰时期系统响应时间控制在3秒之内➢防止大流量用户访问对系统造成的系统响应速度慢、直接系统宕机等严重后果为满足以上性能要求,我公司采用在采用Nginx、Tomcat集群、Mysql集群等技术。
下面我们将系统分为Web集群(应用层)和Mysql集群(数据存储层)来介绍该项目框架。
整体拓扑图:Web集群(应用层):Web应用层主要通过Nginx和Tomcat实现。
Nginx:Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。
具有非阻塞、事件驱动、单线程模式、主管理进程+多工作进程模式、轻量级和高度模块化等特点。
Tomcat集群:Tomcat 是一个小型的轻量级应用服务器,Tomcat集群是将多个Tomcat系统连接到一起,使多台服务器能够像一台机器那样工作或者看起来好像一台机器。
采用集群系统通常是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。
核心内容:一、负载均衡:使得不同的客户访问不同的服务器。
多个客户端同时发出请求,位于前端的负载均衡器根据特定算法,将请求分担给比较空闲的机器,从而实现较高的性能和较好的扩展性二、失效备援:识别有问题的服务器,并将其断开。
当客户端连续向某个服务器发出请求时,该服务器可能处理到一半就宕机了,失效备援系统能够检测出问题的服务器,将后续的请求转发至其它可用的机器,从而实现容错功能拓扑图:数据库集群原理:Nginx 负载均衡服务器是一台可以处理5万并发连接的代理服务器,根据不同域名、URL ,将请求分发到不同后端服务器进行处理。
web服务器集群配置标题:Web服务器集群配置随着互联网的快速发展,网站访问量日益增加,单台服务器已经无法满足需求。
这时,我们可以考虑使用Web服务器集群配置来提高网站的可用性、性能和安全性。
本文将介绍Web服务器集群配置的基本概念和实现方法。
一、Web服务器集群的基本概念Web服务器集群是由多台服务器组成的系统,通过负载均衡技术将访问请求分配给各个服务器,从而提高网站的可用性和性能。
集群中的服务器可以位于不同的地理位置,也可以使用不同的操作系统和Web 服务器软件。
二、Web服务器集群的优点1、高可用性:当一台服务器出现故障时,其他服务器可以接管访问请求,保证网站的正常运行。
2、高性能:通过负载均衡技术,将访问请求分配给多个服务器处理,可以提高网站的性能。
3、扩展性:随着业务的发展,我们可以方便地增加服务器的数量,扩展集群的规模。
4、安全性:多个服务器可以更好地抵御网络攻击,提高网站的安全性。
三、Web服务器集群的配置方法1、选择合适的负载均衡器负载均衡器是Web服务器集群的核心设备,它负责将访问请求分配给各个服务器。
我们可以选择硬件负载均衡器(如F5 BIG-IP)或软件负载均衡器(如Nginx、HAProxy)来满足不同的需求。
在选择负载均衡器时,我们需要考虑其性能、高可用性、扩展性和安全性等方面。
2、配置服务器的Web服务器软件在集群中的每台服务器上,我们需要安装并配置Web服务器软件(如Apache、Nginx、IIS等)。
这些软件负责处理访问请求和生成动态网页内容。
在配置过程中,我们需要考虑如何优化服务器的性能、如何设置SSL证书以保护网站的安全性以及如何配置网站的文件系统和缓存等。
3、实现数据库的负载均衡除了Web服务器软件的配置外,我们还需要实现数据库的负载均衡。
这可以通过主从复制、读写分离、分片等技术来实现。
在实现过程中,我们需要考虑如何保证数据的一致性、如何提高数据库的性能以及如何实现故障转移等问题。
ha集群解决方案
《ha集群解决方案》
随着互联网的不断发展,对于网站和应用程序的高可用性和可靠性要求越来越高。
因此,高可用(HA)集群解决方案成为
了企业和组织在搭建服务器和数据库系统时关注的重点之一。
HA集群解决方案是一种通过集群技术来实现高可用性和负载
均衡的系统架构。
它通过将多个服务器或节点连接在一起,实现资源共享和任务分配,从而提高系统的稳定性和性能,防止因单点故障而导致的服务中断。
在实际应用中,HA集群解决方案通常包括硬件和软件两个方面。
在硬件层面,可以通过使用具有冗余功能的服务器和网络设备来防止硬件故障对系统的影响。
而在软件层面,可以利用负载均衡器、故障转移和数据同步技术来实现高可用性。
对于企业来说,选择合适的HA集群解决方案需要考虑诸多因素,如成本、性能、可扩展性和易用性等。
常见的HA集群解决方案包括Linux-HA、Pacemaker、Keepalived等。
这些解决
方案不仅能够提供故障转移和负载均衡功能,还能够实现互备、冗余存储和数据同步,从而进一步提高系统的可用性和稳定性。
总的来说,HA集群解决方案在今天的互联网时代发挥着重要
作用,它不仅能够帮助企业提高网站和应用程序的可用性和可靠性,还能够降低因故障而造成的损失。
因此,企业和组织在
搭建服务器和数据库系统时,不妨考虑采用适合自身需求的HA集群解决方案,以提升系统的稳定性和性能。
Haproxy面试题1.什么是haproxy?答案:HaProxy是一个高性能的负载均衡器,主要用于提供网络服务的代理和负载均衡。
2.haproxy有什么特点?答案:haproxy具有高可用性、可伸缩性和灵活性,能够快速处理大量并发连接,并且可以作为一个透明代理或非透明代理进行配置。
3.haproxy主要应用在哪些场景?答案:haproxy可以应用于各种场景,如Web应用、电子商务网站、数据库集群、CDN等,提供高性能、高可用的负载均衡解决方案。
4.haproxy的配置文件通常在哪里?答案:haproxy的配置文件通常位于/etc/haproxy/haproxy.cfg。
5.在haproxy配置文件中,常用哪些指令来设置监听端口?答案:在haproxy配置文件中,可以使用bind指令来设置监听端口。
例如:bind *:80。
6.如何使用haproxy实现后端服务的健康检查?答案:haproxy可以通过配置健康检查选项来实现后端服务的健康检查。
例如,使用“check”选项可以检查后端服务是否可用,如果不可用则将其从服务列表中移除。
7.在haproxy配置文件中,如何设置会话保持?答案:在haproxy配置文件中,可以使用“stick-table”指令来设置会话保持。
例如:stick-table type ip size 10m flush onsess_close。
8.haproxy支持哪些协议?答案:haproxy支持TCP、HTTP、HTTPS、SMTP、POP3和IMAP等协议。
9.如何使用haproxy实现负载均衡策略?答案:haproxy支持多种负载均衡策略,如轮询、随机、加权轮询和加权随机等。
在配置文件中,可以使用“balance”指令来指定负载均衡策略。
例如:balance roundrobin。
10.如何监控haproxy的性能指标?答案:可以使用各种工具来监控haproxy的性能指标,如命令行工具“top”和“htop”,以及图形化工具“PPM”和“Zabbix”。
中小企业web集群方案haproxy+varnish+LNMP+memcached配置2012-03-01 18:02:35标签:memcached varnish haproxy原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/2762349/793875前段时间帮一个中型企业做了一个集群方案配置,目前已经安全运行了一个月,而且速度非常快,稳定性也很强,作为一般中型企业负载均衡的方案,非常的合适。
但是由于资本有限,没有做到高可用性方案。
一,拓扑图如下:二,架构说明及配置1, haproxy 服务器: 192.168.1.52, varnish服务器集群: 192.168.1.20;192.168.1.213, nginx+fastcgi 服务器: 192.168.1.504, memcached 服务器:memcached我是装在nginx+fastcgi服务器上的,192.168.1.50 5, mysql服务器:192.168.1.60三,具体配置以下我们来一个个讲解,我们先从后端来个个讲解,1,在192.168.1.60 服务器上安装 mysql2, 在192.168.1.50 服务器上安装 nginx+fastcgi.mysql+nginx+fastcgi 配置,这里不讲解了,网上包括我的博客里面都有讲解如何时安装。
3,memcached安装配置。
这里的memcached 我安装在 192.168.1.50 服务器上安装步骤如下:(1)下载所需要的软件(memcached 目前最新版本为1.4.13)安装memcached需要libevent库支持,我们下载libevent1.3版本即可1.#wget /files/memcached-1.4.13.tar.gz2.#wget /~provos/libevent-1.3.tar.gz(2)先安装libevent:1.# tar zxvf libevent-1.3.tar.gz2.# cd libevent-1.33.# ./configure --prefix=/usr4.# make5.# make install(3)安装memcached,同时需要安装中指定libevent的安装位置:1.# cd /tmp2.# tar zxvf memcached-1.4.13.tar.gz3.# cd memcached-1.4.134.# ./configure --with-libevent=/usr5.# make6.# make install安装完成后会把memcached放到 /usr/local/bin/memcached(4)fastcgi 安装memcache扩展模块,让php支持memcached1.在/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展1.#tar vxzf memcache-2.2.1.tgz2.#cd memcache-2.2.13.#/usr/local/webserver/php/bin/phpize4.#./configure--enable-memcache --with-php-config=/usr/local/webserver/php/bin/php-config --with-zlib-dir5.#make6.#make install3.上述安装完后会有类似这样的提示:1.Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/4,在php.ini 添加一行来载入memcache扩展:1.#extension = "memcache.so"如下图5,重新加载php 配置文件启动memcached1.# /usr/local/bin/memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 10240 -P /tmp/memcached.pid我们来看一下是否正常启动端口已正常启动。
1.memcache启动参数备注:2.-d选项是启动一个守护进程,3.-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,4.-u是运行Memcache的用户,我这里是root,5.-l是监听的服务器IP地址,为了安全我这里指定了 127.0.0.1,6.-p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,7.-c选项是最大运行的并发连接数,默认是1024,我这里设置10240,按照你服务器的负载量来设定8.-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,9.Memcached安装完毕。
我们来测试一下是否能缓存mysql数据我们在此服务器上架设一个php网站,此处我先用的是占用资源比较大的magento程序网站,调试好配置文件,绑定一下host文件。
看网站是否能正常打开。
好,网站打开正常,接下来我们看一下,memcached是否发挥了他的作用这里我们用一个软件 memadmin (网上可以下载到)来监控一下memcached的缓存命中率,如下图:命中率还是挺高的。
4,varnish服务器安装以下在192.168.1.20 和 192.168.1.21 上操作下载varnish软件(此处下载3.0版本)1.#wget /source/varnish-3.0.0.tar.gz2.#tar -xvf varnish-3.0.0.tar.gz3.#cd varnish-3.0.04.#./configure --prefix=/usr/local/varnish5.#make &&make install至此安装完成。
我们来配置一下1.#vim /usr/local/varnish/etc/varnish/vcl.conf以下为配置代码:(除backend 及vcl_recv外,其他地方无需更改,这里是更改其访问的主机名,及定义后端服务器地址,字数有限,其他代码这里就不解释了)1.#Cache for linuxtone sites2.#backend vhost3.backend wwwyaozhibingceshicom {4..host = "";5..port = "80";6.}7.#acl8.acl purge {9. "localhost";10. "127.0.0.1";11. "192.168.0.0"/24;12.}13.sub vcl_recv {14. if (req.http.Accept-Encoding) {15. if (req.url ~ "\.(jpg|png|gif|jpeg|flv)$" ) {16. remove req.http.Accept-Encoding;17. remove req.http.Cookie;18. } else if (req.http.Accept-Encoding ~ "gzip") {19. set req.http.Accept-Encoding = "gzip";20. } else if (req.http.Accept-Encoding ~ "deflate") {21. set req.http.Accept-Encoding = "deflate";22. } else {23. remove req.http.Accept-Encoding;24. }25. }26. if (req.http.host ~ "(.*)") {27. set req.backend = wwwyaozhibingceshicom;28. }29. else {30. error 404 "This website is maintaining or not exist!";31. }32. if (req.request == "PURGE") {33. if (!client.ip ~purge) {34. error 405 "Not Allowed";35. }36.#.dd.....37. return(lookup);38. }39.#...GET...url...jpg,png,gif. ..cookie40. if (req.request == "GET"&& req.url ~ "\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm|gz|tgz|bz2|tbz|mp3|ogg|mp4|flv|f4v|pdf)$") {41. unset req.http.cookie;42. }43.#..GET...url.php....cache....44. if (req.request =="GET"&&req.url ~ "\.php($|\?)"){45. return (pass);46. }47.# if (req.restarts == 0) {48. if (req.http.x-forwarded-for) {49. set req.http.X-Forwarded-For =50. req.http.X-Forwarded-For + ", " + client.ip;51. } else {52. set req.http.X-Forwarded-For = client.ip;53. }54.# }55.#........pipe..56. if (req.request != "GET" &&57. req.request != "HEAD" &&58. req.request != "PUT" &&59. req.request != "POST" &&60. req.request != "TRACE" &&61. req.request != "OPTIONS" &&62. req.request != "DELETE") {63. return (pipe);64. }65.#..GET .HEAD.....66. if (req.request != "GET" && req.request != "HEAD") {67. return (pass);68. }69. if (req.http.Authorization) {70. return (pass);71. }72. return (lookup);73.}74.#..url+host hash......75.sub vcl_hash {76. hash_data(req.url);77. if (req.http.host) {78. hash_data(req.http.host);79. } else {80. hash_data(server.ip);81. }82. return (hash);83.}84.# .....purge .....85.sub vcl_hit {86. if (req.request == "PURGE") {87. set obj.ttl = 0s;88. error 200 "Purged";89. }90. return (deliver);91.}92.sub vcl_fetch {93. if (req.url ~ "\.(jpeg|jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|ico|swf|flv|dmg|js|css|html|htm)$") {94. set beresp.ttl = 2d;95. set beresp.http.expires = beresp.ttl;96. set beresp.http.Cache-Control = "max-age=172800";97. unset beresp.http.set-cookie;98. }99. if (req.url ~ "\.(dmg|js|css|html|htm)$") {100. set beresp.do_gzip = true;101. }102. if (beresp.status == 503) {103. set beresp.saintmode = 15s;104. }105.}106.sub vcl_deliver {107. set resp.http.x-hits = obj.hits ;108. if (obj.hits > 0) {109. set resp.http.X-Cache = "HIT You!";110. } else {111. set resp.http.X-Cache = "MISS Me!";112. }113.}配置文件保存退出 ,并启动 varnish,如下图由于我这域名没有注册,所以我们在这两台机器的hosts文件里绑定一下另外一台机器我们同样配置Varnish 已经成功启动了,我们来分别把域名在本地绑定一下,直接访问varnish服务器,看是否能正常打开网站,并查看缓存合中率从上图可以看出来,绑定varnish 服务器网站是可以正常打开,而且从varnish自带的命令 varnishstat 来看,平均缓存命中率能达到 92%,命中率也是非常的高!另一台同样的测试方法至此,varnish 服务器集群安装配置完成。