一、介绍
redis cluster 3.0之后的功能,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。
二、安装部署
1、环境
[root@redsi ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@redsi ~]# uname -r 2.6.32-696.el6.x86_64 [root@redsi ~]# /etc/init.d/iptables status iptables: Firewall is not running. [root@redsi ~]# getenforce Disabled [root@redsi ~]# hostname -I 10.0.0.2
2、redis cluster是基于上一篇博文已经安装好的redis
①创建集群节点目录
mkdir /usr/local/redis-cluster/{9001..9006}/data -p [root@redsi redis-cluster]# ll /usr/local/redis-cluster/ total 28 drwxr-xr-x 5 root root 4096 2018-05-16 17:17 9001 drwxr-xr-x 5 root root 4096 2018-05-16 14:23 9002 drwxr-xr-x 5 root root 4096 2018-05-16 14:24 9003 drwxr-xr-x 5 root root 4096 2018-05-16 14:28 9004 drwxr-xr-x 5 root root 4096 2018-05-16 14:30 9005 drwxr-xr-x 5 root root 4096 2018-05-16 14:34 9006 drwxr-xr-x 2 root root 4096 2018-05-16 14:54 bin
②创建命令目录
mkdir /usr/local/redis-cluster/bin -p cd /server/tools/redis-3.2.8/src cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
③创建一个redis实例
cp -a /usr/local/redis/* /usr/local/redis-cluster/9001/
修改redis.conf配置文件
port 9001 #每个节点的端口号 daemonize yes bind 10.0.0.2 #绑定当前机器 IP dir /usr/local/redis-cluster/9001/data/ #数据文件存放位置 pidfile /var/run/redis_9001.pid #pid 9001和port要对应 cluster-enabled yes #启动集群模式 cluster-config-file nodes9001.conf #9001和port要对应 cluster-node-timeout 15000 appendonly yes
④再创建其它5个redis实例
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002 cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003 cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004 cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005 cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006
再依次修改redis.conf配置文件
port 9001 #修改以下4处,依次改为9002、9003、9004、9005、9006 dir /usr/local/redis-cluster/9001/data/ pidfile /var/run/redis_9001.pid cluster-config-file nodes9001.conf
###到此为止基础环境已准备好###
三、安装完ruby环境
###直接执行gem install redis时,报错###
gem install redis ERROR: Error installing redis: redis requires Ruby version >= 2.2.2.
①安装安装RVM
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 curl -L get.rvm.io | bash -s stable find / -name rvm -print
②查看rvm库中已知的ruby版本
rvm list known
③安装一个ruby版本
rvm install 2.3.3
④使用一个ruby版本
rvm use 2.3.3
⑤设置默认版本
rvm use 2.3.3 --default
⑥卸载一个已知版本
rvm remove 2.0.0
⑦安装redis
gem install redis
⑧查看ruby版本
ruby --version
四、集群搭建
1、启动六个节点的redis
redis-server /usr/local/redis-cluster/9001/redis.conf redis-server /usr/local/redis-cluster/9002/redis.conf redis-server /usr/local/redis-cluster/9003/redis.conf redis-server /usr/local/redis-cluster/9004/redis.conf redis-server /usr/local/redis-cluster/9005/redis.conf redis-server /usr/local/redis-cluster/9006/redis.conf ###查看进程### [root@redsi ~]# ps aux|grep redis root 2441 0.1 0.9 135592 9788 ? Ssl 08:28 0:21 redis-server 10.0.0.2:9001 [cluster] root 2445 0.1 0.9 135592 9800 ? Ssl 08:29 0:20 redis-server 10.0.0.2:9002 [cluster] root 2449 0.1 0.9 135592 9792 ? Ssl 08:29 0:21 redis-server 10.0.0.2:9003 [cluster] root 2453 0.1 0.7 133544 7728 ? Ssl 08:29 0:21 redis-server 10.0.0.2:9004 [cluster] root 2457 0.1 0.9 135592 9808 ? Ssl 08:29 0:20 redis-server 10.0.0.2:9005 [cluster] root 2461 0.1 0.9 135592 9784 ? Ssl 08:29 0:20 redis-server 10.0.0.2:9006 [cluster]
2、创建集群
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 10.0.0.2:9001 10.0.0.2:9002 10.0.0.2:9003 10.0.0.2:9004 10.0.0.2:9005 10.0.0.2:9006
###命令说明###
调用ruby命令来进行创建集群,--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及solt的大小,因为在Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。
###输入yes后开始创建集群###
###如上图所示,集群创建成功###
3、集群验证
①使用客户端命令连接集群节点
[root@redsi ~]# redis-cli -h 10.0.0.2 -c -p 9001 10.0.0.2:9001> set name lulu -> Redirected to slot [5798] located at 10.0.0.2:9002 #自动连接到了9002节点,这是集群的一个数据分配特性 OK 10.0.0.2:9002> get name "lulu"
②连接其它节点验证
[root@redsi ~]# redis-cli -h 10.0.0.2 -c -p 9003 10.0.0.2:9003> get name -> Redirected to slot [5798] located at 10.0.0.2:9002 "lulu"
###至此,redis集群搭建完毕###