代理组件:twemproxy
不管你现在的电脑性能有多好,只要你运行了Redis,那么就有可能造成一种可怕的局面,你电脑的内存将立刻被占满。而且一台Redis数据库的性能终归是有限制的,那么现在如果要保证用户的执行速度快,就需要使用集群的设计。而对于集群的设计,主要的问题就是解决单实例Redis的性能瓶颈。
TwemProxy:
也叫nutcraker,是一个twitter开源的一个redis和memcache快速/轻量级代理服务器;TwemProxy是一个快速的单线程代理程序,支持Memcached ASCII协议和更新的Redis协议。
TwemProxy通过引入一个代理层,可以将其后端的多态Redis或Memcached实例进行统一管理和分配,使应用程序只需要在Twemproxy上进行操作,而不关心后面有多少个真实的Redis或Memcached存储。
GITHUB地址:
https://github.com/twitter/twemproxy;
最主要功能:用户不再直接操作真正的Redis,而且支持高性能的数据访问。而且支持分片处理,可以操作Redis集群。
这种将数据分摊到各个存储结点的设计才能够真正实现高并发的访问机制。数据量再大也可以处理。
No | 主机名称 | IP地址 | 描述 |
---|---|---|---|
1 | tw-redis-server-a | 192.168.68.167 | Redis(master)数据服务 端口6379、 Redis(slave)数据服务 端口6380 、Redis(slave)数据服务 端口6381 |
2 | tw-redis-server-b | 192.168.68.168 | Redis(master)数据服务 端口6379、 Redis(slave)数据服务 端口6380 、Redis(slave)数据服务 端口6381 |
3 | tw-redis-server-c | 192.168.68.169 | Redis(master)数据服务 端口6379、 Redis(slave)数据服务 端口6380 、Redis(slave)数据服务 端口6381 |
1.考虑到主机的通用性,所有的主机都建议修改主机名称以及对应的hosts文件
修改hostname:vim/etc/hostname; 修改完成之后重新启动
修改hosts:vim/etc/hosts,做好ip地址与主机名称的映射。
修改所有的tw-redis-server-*
2.本次的主机通过之前的配置得来里面已经实现了基本的配置环境,但是依然需要由用户自己来配置主从关系。
修改从节点配置:
vim /usr/local/redis/conf/redis-6380.conf、
vim /usr/local/redis/conf/redis-6381.conf
在这两个配置文件中修改 (以一台主机为例)
slaveof 192.168.68.167 6379
masterauth wanghaoxin
3.tw-redis-server-* 主机全部配置
启动所有的Redis数据库的实例(每台主机上有三个实例)
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
此时就相当于有9台redis数据库,而后有三台是Master结点,6台为slave节点。
4.tw-redis-server-* 主机全部配置
任意一台主机上查看从节点状态
/usr/local/redis/bin/redis-cli -h 192.168.68.167 -p 6379 -a wanghaoxin info replication
一台主机的redis客户端,只要你连接的ip,端口以及密码正确,都可以连接到任意的主机上。
连接正常可以看到从节点
完成了Redis的集群配置,只是搭建了Redis服务。
3.【tw-proxy-server-a】准备一个twemproxy配置文件,这个配置文件考虑到随后与其他机制的整合,名称一定要设置为:”redis_master.conf”
建立一个保存配置文件的目录
mkdir -p /usr/local/twemproxy/conf
拷贝配置文件
cp /usr/local/src/tewmproxy-0.4.1/conf/nutcracker.yml /usr/local/twemproxy/conf/redis_master.conf
4.【tw-proxy-server-a】编辑redis_master.conf配置文件
100dd删除光标下所有行
yy复制当前行 p粘贴
redis_master:
listen: 0.0.0.0:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
redis_auth : wanghaoxin
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 192.168.68.167:6379:1
- 192.168.68.168:6379:1
- 192.168.68.169:6379:1
以上配置的”redis_master“的名称与配置文件是一样的,而且必须一样,同时在本文件里配置了redis访问密码以及twemproxy所有可能代理到的redis服务器节点
5【tw-proxy-server-a】
/usr/local/tewmproxy/sbin/nutcracker -t /usr/local/twemproxy/conf/redis_master.cof
提示错误,但是此时的配置文件完全正确
6.【tw-proxy-server-a】启动twemproxy的服务
首先为了启动方便,一定要设置一些数据保存目录
mkdir -p /usr/local/twemproxy/{pid,logs}
启动:
/usr/local/twemproxy/sbin/nutcracker -c /usr/local/twemproxy/conf/redis_master.conf -p /usr/local/twemproxy/pid/redis_master.pid -o /usr/local/twemproxy/logs/redis_master.log -d
7.【tw-proxy-server-a】这个时候一旦启动之后就表示该进程是一个redis的代理进程,所有的服务可以通过twemproxy访问,而它的地址是22121.随意找到一个redis客户端即可。
代理地址:170
/usr/local/redis/bin/redis-cli -h 192.168.68.170 -p22121 -a wanghaoxin
现在连接的直接为代理服务器,随后找到各自的redis数据库服务。
通过代理服务器访问redis。
设置数据是根据某种算法分配到不同ip的redis主服务器master下的。
说明数据做了分片处理,实现了redis分片处理操作