redhat6.5 Tomcat+Nginx+Memcacheed集群部署
主机环境 redhat6.5 64位实验环境 服务端1 ip172.25.29.1 nginx
服务端2 ip 172.25.29.2 tomcat+memcached
服务端3 ip 172.25.29.3 tomcat+memcaceed
安装包jdk-7u79-linux-x64.tar.gz
apache-tomcat-7.0.37.tar.gz
nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar
防火墙状态关闭
1.jdk安装、环境配置及测试服务端2
1.解压、作软链接
# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/#解压jdk
# cd /usr/local/ #切换到解压目录
# ls
binetc gamesincludejdk1.7.0_79 liblib64libexec sbinsharesrc
# ln -s jdk1.7.0_79/ java #作软链接
# ll
total44
drwxr-xr-x.2 root root 4096 Jun 282011 bin
drwxr-xr-x.2 root root 4096 Jun 282011 etc
drwxr-xr-x.2 root root 4096 Jun 282011 games
drwxr-xr-x.2 root root 4096 Jun 282011 include
lrwxrwxrwx.1 root root 12 Sep 24 10:50 java ->jdk1.7.0_79/ #查看
drwxr-xr-x.8 uucp143 4096 Apr 112015 jdk1.7.0_79
drwxr-xr-x.2 root root 4096 Jun 282011 lib
drwxr-xr-x.2 root root 4096 Jun 282011 lib64
drwxr-xr-x.2 root root 4096 Jun 282011 libexec
drwxr-xr-x.2 root root 4096 Jun 282011 sbin
drwxr-xr-x.5 root root 4096 Aug8 21:38 share
drwxr-xr-x.2 root root 4096 Jun 282011 src
2.将jdk添加到环境变量
# vim /etc/profile
export JAVA_HOME=/usr/local/java
exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
3.测试
# echo $JAVA_HOME #测试添加环境变量是否成功
/usr/local/java
# echo $CLASSPATH
.:/usr/local/java/lib:/usr/local/java/jre/lib
# echo $JAVA_HOME
/usr/local/java
# cd java #测试java的环境是否配置成功
# vim test.java #写个简单的测试页
public> public static void main(String[] args)
{
System.out.println("Helloworld!");
}
}
# javac test.java #链接生成test.class文件
# java test #执行
Helloworld!
2.tomcat的安装服务端2
1.解压、作软链接
# tar zxf apache-tomcat-7.0.8.tar.gz -C /usr/local/#解压
# cd /usr/local/
# ls
apache-tomcat-7.0.8etc includejdk1.7.0_79lib64 sbin src
bin gamesjava lib libexecshare
# ln -s apache-tomcat-7.0.8/ tomcat #作软链接
# ll
total48
drwxr-xr-x.9 root root 4096 Sep 24 11:11 apache-tomcat-7.0.8
drwxr-xr-x.2 root root 4096 Jun 282011 bin
drwxr-xr-x.2 root root 4096 Jun 282011 etc
drwxr-xr-x.2 root root 4096 Jun 282011 games
drwxr-xr-x.2 root root 4096 Jun 282011 include
lrwxrwxrwx.1 root root 12 Sep 24 10:50 java ->jdk1.7.0_79/
drwxr-xr-x.8 uucp143 4096 Sep 24 11:02 jdk1.7.0_79
drwxr-xr-x.2 root root 4096 Jun 282011 lib
drwxr-xr-x.2 root root 4096 Jun 282011 lib64
drwxr-xr-x.2 root root 4096 Jun 282011 libexec
drwxr-xr-x.2 root root 4096 Jun 282011 sbin
drwxr-xr-x.5 root root 4096 Aug8 21:38 share
drwxr-xr-x.2 root root 4096 Jun 282011 src
lrwxrwxrwx.1 root root 20 Sep 24 11:12 tomcat-> apache-tomcat-7.0.8/ #查看
# cd tomcat/bin
# ./startup.sh #开启tomcat
2.测试
#cd ..
# vim webapps/ROOT/test.jsp #写测试仪页
1 server2-The Time is
#测试 172.25.29.2:8080
http://s2.运维网.com/wyfs02/M01/88/45/wKiom1fs4fTDDHKxAAGoFWZR6ok778.png
172.25.29.2:8080/test.jsp
http://s5.运维网.com/wyfs02/M00/88/45/wKiom1fs4fWSCsweAAAfwsQ2TV8571.png
在服务端3上进行同样的配置也可以用scp把服务端2上java和tomcat目录传过去如下
# scp -r java/ tomcat/ 172.25.29.3:/usr/local/
在进行系统环境里加上java的配置启动tomcat即可
3.Nginx添加sticky(服务端1)
1.nginx负载均衡已经配置好了
在前面的博客里已经写过nginx源码安装这里就不再重复了也可以参考前面的博客
# cd /usr/local/lnmp/nginx/conf
# vim nginx.conf
upstream wen {
server 172.25.29.2:8080; #轮询机制
server 172.25.29.3:8080;
}
location / {
root html;
indexindex.html index.jspindex.php index.htm; #默认发布目录
}
location ~ \.jsp$ {
proxy_pass http://wen;
}
# nginx -t #检测
nginx:the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx:configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
# nginx -s> 测试 172.25.29.1
http://s5.运维网.com/wyfs02/M00/88/41/wKioL1fs4fXR4kDTAABzRhJaLWI995.png
172.25.29.1/test.jsp
http://s5.运维网.com/wyfs02/M00/88/41/wKioL1fs4fXBJnkaAAAfh6EMtuM362.png
刷新之后
http://s4.运维网.com/wyfs02/M02/88/45/wKiom1fs4fbip5xIAAAeMjZwsQw111.png
也就是server2 和server3相互交替
2.改变负载均衡机制为sticky
由于nginx是轮询机制如果在访问页面如填写信息时突然卡住刷新之后就会跳到另一个server上就得重新开始填写。但是Nginx里有很多算法其中的ip_hash也可以防止这些问题。使用ip_hash有一个问题是当客户端和服务器之间使用cdn内容分发系统高速缓存时客户端的访问到达cdn由cdn访问服务器识别的ip是cdn的ip那么将集中于访问后台的一台服务器(x相当于DDOS***)会加速服务器的损坏。那么为了防止这些问题就有用下面的算法sticky不是nginx里自带的nginx-sticky-module为 nginx 的第三方模块,使 nginx 支持 sticky 模式,所以需要将包加入配置、重新编译、安装nginx
1.重新源码安装nginx添加一个模块
# nginx -s stop #关闭nginx
# tar zxf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz #解压
# ls
nginx-1.8.1.tar.gz
nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
# make clean #清除上一次的缓存文件
rm-rf Makefile objs
# ./configure --prefix=/usr/local/lnmp/nginx #重新配置--with-http_ssl_module--with-http_stub_status_module--add-module=/mnt/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
# make #编译、链接
# make install #安装
#cd /usr/local/lnmp/nginx/conf
# vim nginx.conf
upstream westos{
sticky; #使用sticky
server 172.25.29.2:8080;
server 172.25.29.3:8080;
# nginx -t #检测nginx文件里是否有错误
nginx:the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx:configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
# nginx #启动
2.测试
测试 172.25.29.1/test.jsp
http://s4.运维网.com/wyfs02/M01/88/41/wKioL1fs4fbwyvPBAAAfh6EMtuM888.png
刷新之后结果不变还是
http://s4.运维网.com/wyfs02/M00/88/45/wKiom1fs4fbwF-1mAAAfh6EMtuM548.png
4交叉存储避免单点故障添加memcached服务端2
配置好之后如果一台服务器宕机了那么这台服务器正在运行的业务将直接结束正在存储的数据丢失。为了防止这些问题Tomcat1将session存储到Tomcat2的memcached中当Tomcat2的memcached不可用时Tomcat1将session存储到自己的memcached上Tomcat2则正好相反。使用这种配置就避免了单点故障。
1.安装、开启memcached、写测试页
# yum install -y memcached #安装memcached
# /etc/init.d/memcached start #开启memcached
Startingmemcached:
# bin/shutdown.sh #关闭Tomcat
# vim test.jsp #写一个jsp的测试页面
Cluster AppTest
Server Info:
页:
[1]