一 环境配置:
系统环境:
rhel6.5 ,selinux和iptables均为disabled
主机情况:
node1: 172.25.254.1:nginx tomcat memcached
node2:172.25.254.2:tomcat memcached
软件包下载网站:
http://www.nginx.org
http://code.google,com/p/memcached-session-manager/
二 软件介绍:
tomcat简介:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。tomcat是用来处理session的软件,交叉存储数据。
memcached简介:
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。memcached与tomcat无关系,属于两个单独的软件。
工作原理:
Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时,T1 才将 session 存储在 memcached-1 上(M1 是 T1 failoverNode)。使用这种配置的好处是,当 T1 和 M1 同时崩溃时也不会丢失 session 会话,避免单点故障。
三 操作步骤:
1.nginx的安装
在server1上,下载nginx-1.10.1.tar.gz,并解压
cd nginx-1.10.1/
vim src/core/nginx.h #去掉nginx版本
vim auto/cc/gcc ##注释掉debug下一行(179行)
因为要二进制编译nginx,故需提前安装所需软件
二进制编译,加sticky模块
make && make install ,即可
2.tomcat安装并运用
下载安装包jdk-7u79-linux-x64.tar.gz
解压 tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ ##解压到固定路径
做软连接
配置路径
更新文件
查看路径
编写简单的JAVA脚本,方便检测
java test #检测java
Hello World! #检测成功
解压tomcat包到固定路径
bin /.startup.sh #开启tomcat服务,注意,这条命令只能在/usr/local/tomcat下执行才有效
在服务器上172.25.254.1:8080,检测是否成功
编写jsp,默认访问8080端口
重启nginx,并加载
在服务器上172.25.254.1/index.jsp,连接tomcat服务
新编写test.jsp,重新检测tomct服务
firefox上172.25.254.1/test.jsp,内容为当前的时间
2.1 tomcat的负载均衡
重新编写jsp,为tomcat主页
方便检测到server2上
在server2上(重复server1上的操作)
解压jdk,tomcat
编写路径
加载 文件
做软连接
在服务器上172.25.254.1/test.jsp
实现轮循
2.2 nginx添加sticky模块--cookie保持会话
sticky模块:PHP运行在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接。使用什么方式来实现这种连接呢,常见的有使用nginx自带的 ip_hash来做,但如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每 次访问都粘滞在同一台服务器。如果基于cookie模块,那么,每台电脑都会有不同的cookie,在保持长连接的同时还保证了服务器的压力均衡,nginx sticky值得推荐。
cookie:有时也用其复数形式cookies,指某网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109和2965中的都以废弃,最新取代的规范是RFC6265。(可以叫浏览器缓存)cookie负载均衡相比iphash来说,其中一个特点比较明显,就是内网nat的均衡。
session:在计算机中,尤其是在网络应用中,称为“会话控制”。session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一致存在下去。当用户请求来自应用程序的web页时,如果该用户还没有会话,则web服务器将自动创建一个session对象。当会话过期或被放弃时,服务器将终止该会话。session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在session对象中。