Redis Cluster搭建使用
要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下
这里我们需要三台机器(master和slave不能在同一台机器上)
Master slave
192.168.1.1:6379 192.168.1.2:6380
192.168.1.2:6379 192.168.1.3:6380
192.168.1.3:6379 192.168.1.1:6380
1. 下载最新版redis。
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
2. 解压,安装(yum 安装gcc gcc-c++ make cmake)
tar xf redis-3.0.0.tar.gz
cd redis-3.0.0
make && make install
3. 创建存放多个实例的目录
mkdir /etc/redis
cp src/redis-server /usr/local/bin/redis-server
cp src/redis-trib.rb /usr/local/bin/redis-trib(复制集群管理程序到/usr/local/bin)
cp redis.conf /etc/redis/redis.conf
cd /etc/redis
cp redis.conf redis_6380.conf
4、修改配置文件
修改vi redis_6380.conf 需要修改的内容
Port 6380
cluster-config-file nodes-6380.conf
dbfilename dump_6380.rdb
appendfilename "appendonly_6380.aof"
daemonize yes
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes
5、分别启动6个redis实例(三台机器都执行)
redis-server redis.conf
redis-server redis_6380.conf
查看进程否存在
[root@node1 ~]# ps -ef | grep redis
root 4311 1 0 Dec20 ? 00:01:24 redis-server 192.168.1.1:6379 [cluster]
root 17148 1 0 02:25 ? 00:00:09 redis-server 192.168.1.1:6380 [cluster]
root 19066 16183 0 04:34 pts/0 00:00:00 grep --color=auto redis
6、执行命令创建集群,首先安装依赖,否则创建集群失败
# yum install ruby rubygems -y
# wget https://rubygems.global.ssl.fastly.net/gems/redis-3.0.0.gem
# gem install -l redis-3.0.0.gem
7、创建集群
# redis-trib create --replicas 1 192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 192.168.1.1:6380 192.168.1.3:6380 192.168.1.2:6380
检查集群状态
# redis-trib check 192.168.1.1:6379
删除节点
# redis-trib del-node 192.168.1.1:6380 41b09f0cc8e1e0f0c85ce03ca50112966f5ea8c0
增加节点
# redis-trib add-node --slave --master-id d1796bb07559f077aac0a7813b9b28afed28cd60 192.168.1.2:6380 192.168.1.1:6379
至于已运行的集群,如何添加密码
对每一个节点用命令设置密码或修改每一个节点的配置文件中密码项后重启,需要验证
注意事项:
1.如果是使用redis-trib.rb工具构建集群,集群构建完成前不要配置密码,集群构建完毕再通过config set + config rewrite命令逐个机器设置密码
2.如果对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题,可以模拟并观察日志
3.各个节点的密码都必须一致,否则Redirected就会失败
192.168.1.1:6379>config set masterauth abc
192.168.1.1:6379>config set requirepass abc
192.168.1.1:6379>config rewrite
4.手动切换master slave
在master上执行:
# redis-cli -h 192.168.1.1 -p 6380 -a abc CLUSTER FAILOVER