linux-tomcat-session共享-redis集群

一、Sentinel-Redis,实现主从切换

上一篇讲解了redis主从复制,在我们实际环境当中,实现redis集群,如果主redis宕机,那个从redis则要顶替主redis进行工作(并变为主redis),当挂掉的redis再次启动,它将变成从redis,这就是sentinel的工作方式,Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程。

1、配置Sentinel ,进入我们解压之后的redis目录,下面可以看到sentinel.conf配置文件

这里我只有一台服务器,就再复制了sentinel.conf 为sentinel1.conf

vi sentinel.conf 

进行配置文件编辑:

sentinel.conf:

port 26379

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 900000
sentinel parallel-syncs mymaster 5

sentinel1.conf:

port 26479

sentinel monitor mymaster 127.0.0.1 6379 2

sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 900000
sentinel parallel-syncs mymaster 5

<!-- redis-Sentinel ÅäÖà ¶àÀýģʽ  -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    maxInactiveInterval="60"
    sentinelMaster="mymaster"
    sentinels="127.0.0.1:26379,127.0.0.1:26479" />

  第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。
    不过需要注意的是,无论你设置要多少个 Sentinel 同意才能判断一个服务器失效,一个 Sentinel 都需要获得系统中多数(majority) Sentinel 的支持,才能发起一次自动故障迁移,并预留一个给定的配置纪元 (Configuration Epoch ,一个配置纪元就是一个新主服务器配置的版本号)。也就是说,如果只有少数(minority)Sentinel 进程正常运作的情况下,是不能执行自动故障迁移的。

    down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数(判定为主观下线SDOWN)。
    parallel-syncs 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长,但越大就意味着越多的从服务器因为复制而不可用。可以通过将这个值设为 1 来保证每次只有一个从服务器处于不能处理命令请求的状态。

在当前目录执行:

redis-server sentinel.conf --sentinel

redis-server sentinel1.conf --sentinel

将两个sentinel服务启动。


我的内存比较小,所以有问题,不过,不妨碍运行。

现在我们的主redis是6379端口,现在我们停止6379端口redis:

可以看到6379端口宕机,6380端口redis变为主redis,我们可以看看tomcat日志:


之前使用6379端口redis共享session,现在切换为6380端口redis

现在我们再启动6379端口redis

可以看到6379端口redis重新增加到集群中。

二 tomcat配置文件:

进入tomcat下的conf文件夹,可以看到context.xml配置文件:

编辑context.xml

使用redis-sentinel配置:

<!-- redis-Sentinel  -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    maxInactiveInterval="60"
    sentinelMaster="mymaster"
    sentinels="127.0.0.1:26379,127.0.0.1:26479" />

保存重启tomcat即可


下面是网上更详细的说明:

http://www.cnblogs.com/Xrinehart/p/3502198.html

http://www.linuxidc.com/Linux/2013-11/92287p3.htm

http://www.linuxidc.com/Linux/2014-02/96079.htm

阅读更多

没有更多推荐了,返回首页