码迷,mamicode.com
首页 > 编程语言 > 详细

Java + Tomcat + Memcached + Ecs 实现负载均衡~上

时间:2017-09-05 10:48:57      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:内存   支付   开机启动   ptime   ofo   tle   更新   tom   chm   

   前言: 公司的产品上线了, 对于大并发量的客户访问和对手的攻击,真是苦不堪言,所以集群的部署重要,现在集群的部署一般有两种方式,第一种,看到大部分人的做法一般是Nginx+Memcached+Tomcat进行一系列的转发部署,但是说实话,我们自己去搞这个Nginx,转发的效果并不是那么的完美,如果Nginx的服务器down掉的话,那么我们的整个站点,基本上就废除了,所以我这边用的的买了阿里云的ecs,买了一个负载均衡,进行的站点转发功能,其中阿里云的安全骑士也挺好,可以帮我们检测到攻击,那两台不同ip的服务器,由一个主ip去进行了映射,比如192.168.1.101和192.168.1.102两台centos上部署了两个tomcat,由我们的主ip192.168.1.100去访问,转发到两者上,那么问题来了,如果其中的一台down掉后,用户就必须重新登陆了,更为严重的是,如果在支付环节出现了这样的问题,那么后果不堪设想,我们今天使用Memcached +Tomcat7的环境,做一个会话共享转移.

Memcached 环境安装

1.下载编译文件
  wget http://www.memcached.org/files/memcached-1.4.29.tar.gz ----下载memcached源文件
  wget https://cloud.github.com/downloads/libevent/libevent/libevent-2.0.15-stable.tar.gz -----下载libevent源文件
2.安装编译:
# tar zxvf libevent-2.0.5-beta.tar.gz
# cd libevent-2.0.5
# ./configure –prefix=/usr
# make
# make install
# tar zxvf memcached-1.4.2.tar.gz
#   cd memcached-1.4.2
#   ./configure  --with-libevent=/usr
#   make
#   make install
3.检查是否安装成功 
# ls -al /usr/local/bin/mem* 
如果执行完毕出现了一行绿色的信息,说明安装成功
4.启动memcached服务
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid
5.测试是否启动成功
[root@localhost /]# telnet 192.168.141.64 12000
Trying 192.168.141.64...
Connected to 192.168.141.64 (192.168.141.64).
Escape character is ‘^]‘.
set key1 0 60 4
zhou
STORED
get key1
VALUE key1 0 4
zhou
END
到此安装成功了
6.配置启动项
我们将memcached配置成为开机启动项,省心又省力
假如启动Memcache的服务器端的命令为:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid
想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,下面命令
/usr/local/memcached/bin/memcached -d -m 10 -p 12000 -u apache -c 256 
上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户:最好选择是:apache 或 deamon
这样,也就是属于哪个用户的服务,由哪个用户启动。

Tomcat7 环境安装

tomcat和jdk的安装环境,在此就不多说了,将java环境装好,tomcat下载一个解压版的就可以了,我这边用的是7.063版本的。下载tomcat

配置会话共享

1.添加tomcat环境jar
技术分享
这是我所用到的jar全部的包,再次我提供一个下载链接,请严格安装下载包中的说明进行部署 下载jar包
上面红色的两个,tc7指的是使用了tomcat7版本,如果是6版本的话请更新为tc6的jar,将现在所有的jar放入tomcat/lib目录下。
注意点: 
-msm1.6.5依赖了Couchbase,需要添加couchbase-client的jar包,否则启动会报:java.lang.NoClassDefFoundError: com/couchbase/client/CouchbaseClient。
-tomcat6和7使用不同msm支持包:memcached-session-manager-tc6-1.6.5.jar和memcached-session-manager-tc7-1.6.5.jar,只可选一,否则启动报错。
-msm源码中的lib包版本太低:spymemcached-2.7.jar需要使用2.10.2,否则启动tomcat报错:
java.lang.NoSuchMethodError: net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture;
at de.javakaffee.web.msm.BackupSessionTask.storeSessionInMemcached(BackupSessionTask.java:227) 
kryo-serializers-0.8.jar需要使用0.10版本,否则报错: 
Caused by: java.lang.ClassNotFoundException: de.javakaffee.kryoserializers.DateSerializer
2.修改context.xml
在tomcat目录下conf中找到context.xml文件,并添加为一下内容
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
	    memcachedNodes="n1:112.74.210.155:12000"
	    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 
	    sessionBackupAsync="false" 
	    sessionBackupTimeout="1800000"
	    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
	    />

到此为止呢,负载均衡的会话共享已经完成了,当使用100去访问,如果其中down掉了一台服务器的话,会话也不会丢失。

其中,要注意,请看context.xml中配置的,Kryo,这个就是将session会话进行序列化的方式,但是如果我们在会话中存入了使用Java序列化的对象,那么就会出错,在此处,我提供一个序列化配置的大全以及相关的文件包和开发环境内容,希望可以帮到大家。

http://download.csdn.net/download/u014201191/9964411

 

  

  

  

Java + Tomcat + Memcached + Ecs 实现负载均衡~上

标签:内存   支付   开机启动   ptime   ofo   tle   更新   tom   chm   

原文地址:http://www.cnblogs.com/lzh-blogs/p/7477389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!