OneCache-针对redis代理服务

来源:互联网 发布:sql server 教材 编辑:程序博客网 时间:2024/06/06 17:59

OneCache-针对redis代理服务

OneCache是一个基于Redis协议的分布式缓存中间件,使用中间层将多个Redis实例组成一个分布式的缓存集群。并且引入Redis组的概念,可以将Redis的Master和Slave分到同一个组里,进行自动故障切换和流理分担。

1.下载OneCache

下载http://www.onexsoft.com/software/onecache_rhel5_linux64.tar.gz
完成后进行上传解压安装。

2.安装、修改配置文件

接下来我们先来了解下需要搭建后的实际效果。我们使用5个redis节点进行分布式的搭建,将5个redis节点分为4个组,其中group1中有2个redis节点一主一从,如下。

组 ip端口 主从 group1 172.21.3.195:7000 主 group1 172.21.3.195:7004 从 group2 172.21.3.195:7001 主 group3 172.21.3.195:7002 主 group4 172.21.3.195:7003 主

安装redis可以参考我之前的redis集群安装配置前面的第一小节中redis安装配置,在此就不做详细说明了。
需要注意各个节点的端口以及从节点配置主从

#从节点上172.21.3.195 7004上修改配置文件redis.conf中配置slaveof 172.21.3.195 7000

修改onecache.xml配置文件

<onecache port="8221" thread_num="15" hash_value_max="80"  > <vip if_alias_name="eml:0" vip_address="172.21.3.195" enable="0"></vip> <group name="group1" hash_min="0" hash_max="20">        <host host_name="host1" ip="172.21.3.195" port="7000" master="1"></host>        <host host_name="host1" ip="172.21.3.195" port="7004" master="0"></host> </group> <group name="group2" hash_min="21" hash_max="40">        <host host_name="host1" ip="172.21.3.195" port="7001" master="1"></host> </group> <group name="group3" hash_min="41" hash_max="60">        <host host_name="host1" ip="172.21.3.195" port="7002" master="1"></host> </group> <group name="group4" hash_min="61" hash_max="79">        <host host_name="host1" ip="172.21.3.195" port="7003" master="1"></host> </group></onecache>

3.启动服务

  • 启动各个redis节点
    bash
    # /usr/local/redis-0/bin/redis-server /usr/local/redis-0/conf/redis-7000.conf
    # /usr/local/redis-1/bin/redis-server /usr/local/redis-1/conf/redis-7001.conf
    # /usr/local/redis-2/bin/redis-server /usr/local/redis-2/conf/redis-7002.conf
    # /usr/local/redis-3/bin/redis-server /usr/local/redis-3/conf/redis-7003.conf
    # /usr/local/redis-4/bin/redis-server /usr/local/redis-4/conf/redis-7004.conf
  • 启动OneCache

    # ./onecache.bin [2017-07-12 09:26:59] Message: Create the thread pool(size=15)...[2017-07-12 09:26:59] Message: Thread pool created[2017-07-12 09:26:59] Message: Connect to redis server(172.21.3.195:7000)...[2017-07-12 09:26:59] Message: Connected. conn pool size=50[2017-07-12 09:26:59] Message: Connect to redis server(172.21.3.195:7004)...[2017-07-12 09:26:59] Message: Connected. conn pool size=50[2017-07-12 09:26:59] Message: Connect to redis server(172.21.3.195:7001)...[2017-07-12 09:26:59] Message: Connected. conn pool size=50[2017-07-12 09:26:59] Message: Connect to redis server(172.21.3.195:7002)...[2017-07-12 09:26:59] Message: Connected. conn pool size=50[2017-07-12 09:26:59] Message: Connect to redis server(172.21.3.195:7003)...[2017-07-12 09:26:59] Message: Connected. conn pool size=50[2017-07-12 09:26:59] Message: Start the OneCache on port 8221. PID=2680

    查看测试
    “`bash

    /usr/local/redis-0/bin/redis-cli -h 172.21.3.195 -p 8221

    172.21.3.195:8221> set abc 123
    OK
    172.21.3.195:8221> set 999 999
    OK
    172.21.3.195:8221> set qqq 999
    OK
    172.21.3.195:8221> status
    [OneCache]
    Version=4.0.0.0
    Port=8221
    StartTime=2017-7-12 09:26:59
    UpTime=00:06:33
    GroupCount=4

[Backends]
[GROUP] [IP] [PORT] [CONNPOOL] [MASTER] [ACTIVE] [REQUESTS] [RECV SIZE] [SEND SIZE] [SEND>1KB] [SEND>1MB] [COMMANDS]
group1 172.21.3.195 7000 50 Y Y 1 0.02KB 0.01KB 0 0 [GET]:1
group1 172.21.3.195 7004 50 N Y 0 0KB 0KB 0 0 NULL
group2 172.21.3.195 7001 50 Y Y 0 0KB 0KB 0 0 NULL
group3 172.21.3.195 7002 50 Y Y 1 0.02KB 0.01KB 0 0 [GET]:1
group4 172.21.3.195 7003 50 Y Y 0 0KB 0KB 0 0 NULL

[Clients]
[NUM] [IP] [CONNECTS] [REQUESTS] [RECV>1KB] [RECV>1MB] [LAST CONNECT] [COMMANDS]
1 172.21.3.195 0 3 0 0 1970-1-1 08:00:00 [GET]:2
“`
目前 OneCache 的默认策略是:master(s)负责写操作,slaver(s)负责读操作,采用均匀分配的方式去处理每个请求,所以也降低了单个节
点的负载率。OneCache 能识别非活动的节点,从而跳过该节点,并能够正确寻找下一个可用的节点,如无节点可用,OneCache 将会返回错
误的答复。

下面我们来测试下。先关闭group1中的主节点,在来从节点是否可用

# /usr/local/redis-0/bin/redis-cli -h 172.21.3.195 -p 7000  shutdown#  /usr/local/redis-0/bin/redis-cli -h 172.21.3.195 -p 8221 172.21.3.195:8221> status[OneCache]Version=4.0.0.0Port=8221StartTime=2017-7-12 09:26:59UpTime=00:49:39GroupCount=4[Backends][GROUP]                [IP]    [PORT] [CONNPOOL] [MASTER] [ACTIVE]      [REQUESTS]        [RECV SIZE]       [SEND SIZE]    [SEND>1KB]  [SEND>1MB]   [COMMANDS]group1         172.21.3.195      7000         50     Y       N                   6             0.15KB            0.05KB             0           0   [GET]:4    [SET]:2 group1         172.21.3.195      7004         50     N       Y                   1             0.02KB            0.01KB             0           0   [GET]:1 group2         172.21.3.195      7001         50     Y       Y                   0                0KB               0KB             0           0   NULLgroup3         172.21.3.195      7002         50     Y       Y                   1             0.02KB            0.01KB             0           0   [GET]:1 group4         172.21.3.195      7003         50     Y       Y                   1             0.03KB            0.00KB             0           0   [SET]:1 [Clients][NUM]               [IP]   [CONNECTS]  [REQUESTS]  [RECV>1KB]  [RECV>1MB]      [LAST CONNECT]   [COMMANDS]1           172.21.3.195            0          17           5           0   1970-1-1 08:00:00   [GET]:6    [SET]:4 172.21.3.195:8221> get qqq"12345"172.21.3.195:8221> set qqq 111OK

测试结果与预料的一样。

原创粉丝点击