java memcached集群_Linux下安装memcached之Tomcat7集群

这两天,在捣鼓负载均衡的问题,使用的是memcached做session存储。但是你造吗?居然没有成功,都硕失败是成功之母,我想我快成功了。

3cee46eaef2740b19dadcbd0581d541f.png

安装环境 centos 6.5,apache-tomcat-7.0.63,Nginx

memcached介绍

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

memcached安装

1.安装yum -y install memcached

2.验证memcached -h

出现以下帮助结果,说明安装成功

285fe027b7d4cdaccaeb6ddc89057f8f.png

3.将memcache加入启动列表chkconfig --level 2345 memcached on

4.配置Memcache

vi /etc/sysconfig/memcached

文件中内容如下

PORT=”11211″ 端口

USER=”root” 使用的用户名

MAXCONN=”1024″ 同时最大连接数

CACHESIZE=”64″ 使用的内存大小

OPTIONS=”" 附加参数

5.启动memcached -d -m 5 -u root -l 127.0.0.1 -p 12000 -c 1024 -P /tmp/memcached.pid

参数说明:

-d 选项是启动一个守护进程,

-m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB

-u 是运行Memcache的用户,这里是root

-l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122

-p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口

-c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定

-P 是设置保存Memcache的pid文件

6.查看memcache状态echo stats | nc 127.0.0.1 12000

参数说明:

STAT pid 22459 进程ID

STAT uptime 1027046 服务器运行秒数

STAT time 1273043062 服务器当前unix时间戳

STAT version 1.4.4 服务器版本

STAT pointer_size 64 操作系统字大小(这台服务器是64位的)

STAT rusage_user 0.040000 进程累计用户时间

STAT rusage_system 0.260000 进程累计系统时间

STAT curr_connections 10 当前打开连接数

STAT total_connections 82 曾打开的连接总数

STAT connection_structures 13 服务器分配的连接结构数

STAT cmd_get 54 执行get命令总数

STAT cmd_set 34 执行set命令总数

STAT cmd_flush 3 指向flush_all命令总数

STAT get_hits 9 get命中次数

STAT get_misses 45 get未命中次数

STAT delete_misses 5 delete未命中次数

STAT delete_hits 1 delete命中次数

STAT incr_misses 0 incr未命中次数

STAT incr_hits 0 incr命中次数

STAT decr_misses 0 decr未命中次数

STAT decr_hits 0 decr命中次数

STAT cas_misses 0 cas未命中次数

STAT cas_hits 0 cas命中次数

STAT cas_badval 0 使用擦拭次数

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785 读取字节总数

STAT bytes_written 15222 写入字节总数

STAT limit_maxbytes 1048576 分配的内存数(字节)

STAT accepting_conns 1 目前接受的链接数

STAT listen_disabled_num 0

STAT threads 4 线程数

STAT conn_yields 0

STAT bytes 0 存储item字节数

STAT curr_items 0 item个数

STAT total_items 34 item总数

STAT evictions 0 为获取空间删除item的总数

Tomcat负载均衡配置

1.安装Nginxyum -y install nginx

2.设置开机启动chkconfig nginx on

3.配置Tomcat

到官网 wget 一个即可,然后修改 conf/service.xml相关端口,这里不做详细的配置说明,网上有很多案例。

2a24249b9f3bdd059658ba6dc56c87a0.png

4.配置Nginx

自定义 conf配置,不是全部配置,省略部分。

vi load.conf#负载均衡集群

server {

listen 80;

server_name locad.52itstyle.com;

location / {

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_pass http://locad;

}

}

upstream locad {

#ip_hash;

server 172.16.1.120:8882;

server 172.16.1.120:8881;

}

到目前为止,其实可以实现简单的负载均衡,但是无法做到session共享,也就是说,任意一台服务down掉,用户信息时无法做到同步的,会直接跳转到登陆页面。

5.配置memcached集群管理session

编辑tomcat conf/context.xml Context 中追加

memcachedNodes="n1:localhost:12000"

requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false" />

参数说明:

1.requestUriIgnorePatter:过滤图片等静态文件去触发Session备份到Memcached。

2.sessionBackupAsync:指定Session是否应该被异步保存到Memcached中。

3.backupThreadCount :用来异步保存Session的线程数。

4.sessionBackupTimeout :默认100毫秒,操作超过时间那么保存失败。

至此,其实已经成功了,写一个demo,sessionId是没有变化的。

然而,项目使用的是 shrio+ehcache,对session进行了管理。虽然网上也有很多集群方式,比如 rmi以及jgroup,但是感觉貌似是针对分布式缓存的,最终其实没有配置成功,就这样吧,先改为ip_hash。

还有就是重写shiro的sessionDAO,实现自己的Memcached SessionDAO。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值