1、安装环境与版本:
3个CentOS 7 虚拟机
6个Redis 实例,redis集群需要至少3个主节点
192.168.200.100 | 192.168.200.101 | 192.168.200.102 |
---|---|---|
redis-6379 | redis-6379 | redis-6379 |
redis-6380 | redis-6380 | redis-6380 |
2、首先修改各实例配置
cluster-enabled yes
cluster-config-file nodes-6379.conf #注意改成实例的端口
cluster-node-timeout 5000
appendonly yes
bind 192.168.200.100
cluster-require-full-coverage no
将实例都启动。
[root@centos-101 init.d]# ps -ef | grep redis
root 10664 1 0 07:19 ? 00:00:01 /usr/java/redis/bin/redis-server 0.0.0.0:6379 [cluster]
root 10680 1 0 07:19 ? 00:00:01 /usr/java/redis/bin/redis-server 0.0.0.0:6380 [cluster]
3、安装ruby (只需安装一台主机,创建集群)
yum -y install ruby rubygems
gem install redis --version 4.0.11
redis版本号
[root@centos-101 init.d]# gem install redis
Fetching: redis-4.1.0.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
于是,要升级Ruby版本
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ curl -sSL https://get.rvm.io | bash -s stable
$ source /etc/profile.d/rvm.sh
$ rvm list known
$ rvm install 2.4.1
gem install redis
4、创建集群
集群至少3个主节点,如果添加6380端口redis,要开放集群总线端口16380
cd /usr/java/redis/bin
$ ./redis-trib.rb create --replicas 1 192.168.200.100:6379 192.168.200.101:6379 192.168.200.102:6379 192.168.200.100:6380 192.168.200.101:6380 192.168.200.102:6380
--replicas 1表示我们想为每个master指定一个slave
redis-trib对主机名支持不好,所以用 ip:port
问题:
redis集群创建时报错:Sorry, can't connect to node
ip,端口等都配置正确的话,还需要将redis.conf文件中的密码注释掉 # requirepass 123456
如果创建不成功,修改后,试试第六节。删除失败的节点信息,重新再创建
5、测试
/usr/java/redis/bin/redis-cli -p 6379 cluster nodes
192.168.200.100:6379 master ← slave 192.168.200.101:6380
192.168.200.101:6379 master ← slave 192.168.200.102:6380
192.168.200.102:6379 master ← slave 192.168.200.100:6380
输如数据测试下:
[root@centos-100 bin]# ./redis-cli -c
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set good nice
OK
127.0.0.1:6379> set apple iphone
-> Redirected to slot [7092] located at 192.168.200.101:6379
OK
192.168.200.101:6379> set banana orange
-> Redirected to slot [9380] located at 192.168.200.102:6379
OK
192.168.200.102:6379> get hello
-> Redirected to slot [866] located at 192.168.200.100:6379
"world"
192.168.200.100:6379> get apple
-> Redirected to slot [7092] located at 192.168.200.101:6379
"iphone"
192.168.200.101:6379>
可以看到插入与读取在各个节点间跳动
6、粗暴的删除集群:
停止所有redis实例 service redis-6379 stop
删除所有主机 appendonly.aof、dump.rdb、nodes-6379.conf rm -f /dump.rdb /*.aof /nodes-63*
重启所有redis实例 service redis-6379 start
重新创建集群
参考:
网友评论