使用Twemproxy搭建redis服务器集群

Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展。使用proxy就可以实现。
源码:https://github.com/twitter/twemproxy
1. 首先,选一台安装了zookeeper的机器。
2. 这里不讲解如何安装zookeeper。将twemproxy-master解压到目录/data下。
3. 修改proxy配置vi /data/twemproxy-master/conf/twemproxy1-test.xml 如下图所示:这里写图片描述,可见:配置了两个redis端口和zookeeper的host和节点位置。以上配置主要是配置使用md5算法将hash后的值为0到2047的key放到6381上的redis,将2048到4095上的key放到6382。
4. zookeeper_redis_path 该配置会在zookeeper下的该目录下生成一个目录名字为172.16.**.228:22121的节点:
使用zkCli.sh -server 172.16.*.239:2181 登录到239ip的zk上,然后使用ls命令可以查看各个节点的目录信息,使用命令: ls /redis_dev/cluster/ebook 可以看到:
[172.16..228:22121]**
这是redis注册在zookeeper的ip和端口号,这是为了让客户端访问redis的时候,可以直接访问proxy的代理。
5. 安装Redis-zoo-watchdog,解压到/data/redis-zoo-watchdog目录,解压后内容如下这里写图片描述
6. 执行安装命令:/data/redis-zoo-watchdog/redis-zoo-watchdog.elf -f /data/redis-zoo-watchdog/zoo-watchdog-test.conf -dc 172.16.10.228:6381 /redis_dev/cluster/ebook/redis-001
/data/redis-zoo-watchdog/redis-zoo-watchdog.elf -f /data/redis-zoo-watchdog/zoo-watchdog-test.conf -dc 172.16.10.228:6382 /redis_dev/cluster/ebook/redis-002
。这里配置了两个redis实例。watchdog配置如下:

cat zoo-watchdog-dev.conf 
# zookeeper servers list to connect
# zkServersList = "host:port,host:port,...,host:port"
zkServersList = 172.16.10.163:2181,172.16.10.96:2181
# log level (default to DEBUG)
logLevel = DEBUG
# log file
logFile = ./zoo-watchdog-dev.log
  1. 继续执行命令,/data/twemproxy-master/src/nutcracker -c /data/twemproxy-master/conf/twemproxy1-test.yml -o /data/twemproxy-master/logs/twemproxy-test.log -d -p /var/run/twemproxy-test.pid(这里是一条命令)。这里解压了2个redis,redis里面的配置请看最后的github链接。
  2. 此时我们可以去zookeeper看节点有没有注册上去ls /redis_dev/cluster/ebook
  3. 通过proxy代理链接redis命令:
    redis-cli -h 172.16.10.228 -p 22121
    redis虽然有两个实例,并且如果两个key分别在两个实例上,但是 通过一个proxy客户端就可以连接,如果不通过proxy连接那么必须登录到两个redis客户端上面才可以看到两个key。
    效果如下:
    这里写图片描述
    解析:
    链接redis-cli -p 6381的时候,第一个key有值第二个key没有值
    链接redis-cli -p 6382的时候,第一个key没有值第二个key有值
    链接redis-cli -h 172...228 -p 22121proxy代理的时候,两个key都有值,这就是使用twemproxy的效果,分散不同的key到不同的机器上。值得注意的一点是,有些命令像查询所有key如 keys * 在twemproxy中是不支持的。

安装包 地址:
https://github.com/tengqingya/redis_install.git

猜你喜欢

转载自blog.csdn.net/starryninglong/article/details/70821752