搭建redis集群,拓扑规划
步骤一:准备集群环境
[root@redisA ~]# yum -y install gcc gcc-c++ make
[root@redisA redis]# tar -xf redis-4.0.8.tar.gz
[root@redisA redis]# cd redis-4.0.8/
[root@redisA redis-4.0.8]# make && make install
[root@redisA redis-4.0.8]# ./utils/install_server.sh
Installation successful! //安装成功
[root@redisA redis-4.0.8]# ss -antlp | grep 6379 //查看时有端口
修改配置文件,6台redis服务器都要修改(以51为例子)
[root@redisA redis-4.0.8]# /etc/init.d/redis_6379 stop
//停止已经开启的redis服务
[root@redisA redis-4.0.8]# vim /etc/redis/6379.conf
...
bind 192.168.4.51 //修改ip
port 6351 //不允许相同,只指定物理接口的ip
daemonize yes //以守护进程方式运行
pidfile /var/run/redis_6351.pid
cluster-enabled yes //是否启用集群,前提是以守护进程方式运行
cluster-config-file nodes-6351.conf
//存储集群信息的配置文件,自动生成,不允许相同
cluster-node-timeout 5000 //集群节点通信超时时间
...
[root@redisA redis-4.0.8]# /etc/init.d/redis_6379 start //启动服务
[root@redisA redis-4.0.8]# ss -antlp | grep 6351 //查看有端口
[root@redisA redis-4.0.8]# ps -C redis
查看集群信息
[root@redisA redis-4.0.8]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> ping
PONG
192.168.4.51:6351> cluster info
192.168.4.51:6351> cluster nodes
步骤二:创建集群(在任意一台上执行创建集群的脚本都可以)这里在51上面执行
需要安装两个软件包
1)部署ruby脚本运行环境(在51上面执行)
[root@redisA redis-cluster]# yum -y install ruby rubygems
[root@redisA redis-cluster]# rpm -ivh –nodeps ruby-devel-2.0.0.648-30.el7.x86_64.rpm
[root@redisA redis-cluster]# which gem
/usr/bin/gem
[root@redisA redis-cluster]# gem install redis
2)生成创建集群的脚本
[root@redisA redis-cluster]# cd /root/redis/redis-4.0.8/src/
[root@redisA src]# cp redis-trib.rb /usr/local/bin/
3)创建集群
[root@redisA src]# redis-trib.rb create --replicas 1 \
192.168.4.51:6351 192.168.4.52:6352 \
192.168.4.53:6353 192.168.4.54:6354 \
192.168.4.55:6355 192.168.4.56:6356
//--replicas 1 给每一个主配置一个从库
4)查看集群信息,任意一台主机访问本机的redis服务查看即可
cluster info 查看集群信息
cluster nodes 查看集群节点信息
[root@redisA log]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> CLUSTER INFO //状态
192.168.4.52:6352> CLUSTER NODES //查看集群节点信息
5)测试集群
命令:redis-cli -c -h ip地址 -p 端口
[root@redisA log]# redis-cli -c -h 192.168.4.51 -p 6351
**
集群不能用的情况:
有半数或者半数以上的主库机器挂掉,集群就不能用了 把一个从库升级成主,没有从库,集群不能用(前提是:有半数或者半数以上的主库机器挂掉) 一个主库挂掉,它的从库自动顶替为主库,正常使用(前提是:有半数或者半数以上的主库机器能用),挂掉的主库修复好后,会成为从库,不会抢占为主
6)集群节点选举策略(三主,三从)
停止某个主库的redis服务,对应的从库会自动升级为主库
[root@redisA log]# redis-cli -c -h 192.168.4.51 -p 6351
192.168.4.51:6351> CLUSTER nodes