提纲
动态缓存技术
集群与负载均衡
网罗天下实现策略
关键技术
动态缓存
基于动态缓存的电子商务优化
针对电子商务网站的特色和性能要求,在Web服务器前端设置动态缓存服务器,做为Web服务器的前置机,实现动态内容的缓存,加快了响应用户访问的速度;经过必定的替换和更新策略保证用户访问到最新的内容,对提升Web服务器峰值负载下的运行能力,减小访问动态内容的延迟时间起到优化做用。
参考文献:
http://www.docin.com/p-152105671.html
《基于动态缓存的电子商务平台优化研究》
集群与负载均衡
welcome to use these PowerPoint templates, New Content design, 10 years experience
集群 Cluster
概念:
一组独立的计算机系统构成 一个松耦合的多处理器系统,他们之间经过网络实现进程间的通讯。应用程序之间能够经过网络共享内存信息消息传送。实现分布式计算。
集群与负载均衡
welcome to use these PowerPoint templates, New Content design, 10 years experience
负载均衡Load balance
概念:
网络的负载均衡是一种动态均衡技术。基于现有的网络结构,提供了一种扩展服务器带宽和增长服务器吞吐量的廉价有效方法。提升了数据的处理能力、灵活性和可用性。
特色:
(1)高可靠性(HA)。利用集群管理软件,当主服务器故障时,备份服务器可以自动接管主服务器的工做,并及时切换过去,以实现对用户的不间断服务。 (2)高性能计算(HP)。即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理。 (3)负载平衡。即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,下降对主服务器的硬件和软件要求。
网罗天下实施策略
整体网络架构图
Nginx代理RedisCluster Tomcat1Cluster Tomcat2Mysql MusterMysql SlaveFTP应用服务器集群MysqlDB 主从缓存服务器5Web 服务器1PC1以太网2数据库服务器1通讯链路1智能手机1云1便携电脑1平板电脑1防火墙1FTP 服务器.191代理服务器.14符号计数说明单位说明图例Cluster Tomcat3Cluster Tomcat4
网罗天下实施策略 设计原理
Nginx:服务的代理与客户端请求与分发。SSL证书的配置。80及443端口的监听。
Redis:动态缓存服务器,Session共享。
Tomcat:Web应用服务器集群。
JbossCache:单点登陆票据的共享。
关键技术
Nginx 安装
安装nginx,下载下面的插件安装,不然nginx没法识别tomcat中jvmRoute,从而没法达到session复制的效果。
tar xzf nginx-upstream-jvm-route-0.1.tar.gz
tar xzf nginx-1.0.5.tar.gz
Nginx 配置
一、 nginx.conf中http{}中配置upstream wlotx {
ip_hash;
server 192.168.1.218:8080;#Tomcat1
server 192.168.1.219:8080; #Tomcat2
}
关键技术
Nginx 配置
二、 Server 80端口选段:
server {
listen 80;
server_name buseniss.wlotx.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
index index.html index.htm index.jsp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass
http://wlotx;
}
关键技术
Nginx 配置
三、 HTTPS 443端口 Server 选段:
server {
listen 443;
server_name cas.wlotx.com;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass
http://wlotx; } } 关键技术 Redis安装及配置 daemonize yes pidfile /usr/local/redis/var/redis.pid port 6379 timeout 300 loglevel debug logfile /usr/local/redis/var/redis.log databases 16 save 900 1 save 300 10 save 60 10000 rdbcompression yes dbfilename dump.rdb dir /usr/local/redis/var/ appendonly no appendfsync always glueoutputbuf yes shareobjects no shareobjectspoolsize 1024 关键技术 Redis安装及配置 将上面内容写为redis.conf并保存到/usr/local/redis/etc/目录下。 而后在命令行执行: /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 便可在后台启动redis服务,这时经过 telnet 127.0.0.1 6379 可查看redis的服务状态。 关键技术 JBossCacheTicketRegistry+组播 因为单点登陆系统的特殊性,不能简单使用session复制技术来实现多服务器间的登陆信息共享。 JBossCacheTicketRegistry提供了针对单点登陆系统集群的共享策略。 在cas项目工程里spring-configuration/ticketRegistry.xml文件里面的DefaultTicketRegistry换成JBossCacheTicketRegistry缓存 ;在class文件里添加jbossCache.xml文件添加jboss的缓存配置。 jbossCache.xml中依赖组播。 <attribute name="ClusterConfig"> <config> <UDP mcast_addr="224.0.0.8" mcast_port="48866" ip_ttl="32" ip_mcast="true" bind_addr="192.168.1.219" 关键技术 Tomcat Cluster 安装 安装tomcat tar zxf apache-tomcat-6.0.29.tar.gz mv apache-tomcat-6.0.29/usr/local/tomcat cp tomcat-replication.jar /usr/local/tomcat/lib 在另外一台机器上安装tomcat_2,步骤同1 分别在tomcat服务器安装jdk chmod 755 jdk-6u26-linux-i586-rpm.bin ./jdk-6u26-linux-i586-rpm.bin cat >>/etc/profile <<EOF export JAVA_HOME=/usr/java/jdk1.6.0_26 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin EOF; source /etc/profile //使环境变量当即生效 关键技术 Tomcat Cluster 配置1 <Connector port="8443" className="org.apache.coyote.http11.Http11Protocol" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="true" disableUploadTimeout="true" cceptCount="100" scheme="https" secure="true" SSLEnabled="true" clientAuth="false" keystoreFile="wlotx2012" keystorePass="wlotx2012" sslProtocol="TLS" truststorefile="%JAVA_HOME%/jre/lib/security/cacerts" truststoretype="JKS" truststorepass="changeit" /> 关键技术 Tomcat Cluster 配置2 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/> 注:标红部分为Nginx和TomcatSSL请求间的证书转化。 关键技术 Tomcat Cluster 配置3 基于JBossCache的单点登陆系统Tomcat配置: <Host name="cas.wlotx.com" appBase="/data/www" unpackWARs="true" autoDeploy="false" deployOnStartup="false"> <Context path="" docBase="/data/www/cas" reloadable="true" distributable="true"> </Context> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="cas_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> 关键技术 Tomcat Cluster 配置4 基于Redis session 共享的应用系统配置: <Host name="edu.wlotx.com" appBase="/data/www" unpackWARs="true" autoDeploy="false" distributable="true"> <Context path="" docBase="/data/www/teachmysql" reloadable="true" distributable="true"> <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> <Manager className=“com.radiadesign.catalina.session.RedisSessionManager” host="192.168.1.218" port="6379" database="0" maxInactiveInterval="600" /> </Context> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="edu_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> 关键技术 Nginx+Tomcat+SSL 实际上,大规模的网站都有不少台Web服务器和应用服务器组成,用户的请求多是经由 Varnish、HAProxy、Nginx以后才到应用服务器,中间有好几层。而中小规模的典型部署常见的是 Nginx+Tomcat 这种两层配置,而Tomcat 会多于一台,Nginx 做为静态文件处理和负载均衡。 若是Nginx做为前端代理的话,则Tomcat根本不须要本身处理 https,全是Nginx处理的。用户首先和Nginx创建链接,完成SSL握手,然后Nginx 做为代理以 http 协议将请求转给 tomcat 处理,Nginx再把 tomcat 的输出经过SSL 加密发回给用户,这中间是透明的,Tomcat只是在处理 http 请求而已。所以,这种状况下不须要配置 Tomcat 的SSL,只须要配置 Nginx 的SSL 和 Proxy。