本地搭建redis集群

来源:互联网 发布:arduino编程语言 编辑:程序博客网 时间:2024/06/06 12:30
  1. 下载并解压

cd /usr/local/src
wget http://download.redis.io/releases/redis-3.2.4.tar.gz //只有3.0以上的版本才支持集群
tar -zxvf redis-3.2.4.tar.gz 
2. 编译安装

cd redis-3.2.4
make && make install
3. 将 redis-trib.rb 复制到 /usr/local/bin 目录下

cd src
cp redis-trib.rb /usr/local/bin/ 
4.创建redis 节点

在 /usr/local/ 目录下创建 redis-cluster 目录;
mkdir redis-cluster
在redis-cluster目录下创建名为7000、7001、7002、7003、7004、7005的目录,并将redis-3.2.4目录下 redis.conf 拷贝到这六个目录中
cp redis.conf ./usr/local/7000 ./usr/local/7001 ./usr/local/7002 ./usr/local/7003 ./usr/local/7004 ./usr/local/7005
编辑每个目录下的redis.conf
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7002,7003,7004,7005
port 7000 //端口7000,7002,7003,7004,7005
cluster-enabled yes //开启集群
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成7000,7002,7003,7004,7005
cluster-node-timeout 5000 //节点超时时间
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

5.启动节点

redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf

6.检查 redis 启动情况

ps -ef | grep redis

root 2895 1 0 11:03 ? 00:00:13 redis-server *:7004 [cluster]
root 2910 1 0 11:07 ? 00:00:10 redis-server *:7001 [cluster]
root 3006 5023 0 14:01 pts/4 00:00:00 grep redis
root 11447 1 0 00:13 ? 00:01:06 redis-server *:7005 [cluster]
root 11470 1 0 00:17 ? 00:01:05 redis-server *:7003 [cluster]
root 11477 1 0 00:17 ? 00:01:07 redis-server *:7002 [cluster]
root 11493 1 0 00:19 ? 00:01:07 redis-server *:7000 [cluster]

7.安装ruby
//不能yum安装 ,版本太低,要求至少2.2.2
wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz
tar -xvzf ruby-2.4.2.tgz
cd ruby-2.4.2
./configure
make && make install

yum -y install ruby-devel rubygems rpm-build

gem install redis

8.创建集群
Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。
redis-trib.rb create –replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

9.验证效果
redis-cli -c -p 7000 // -c 是通过集群方式
set name 122
-> Redirected to slot [5798] located at 127.0.0.1:7004
OK

10.模拟其中一台宕机
杀死7001进程

root 2910 1 0 11:07 ? 00:00:11 redis-server *:7001 [cluster]
kill 2910

执行存储,转到slave 7004
set name 122
-> Redirected to slot [5798] located at 127.0.0.1:7004
OK

11.将7001 重启加入集群
redis-server /usr/local/redis-cluster/7001/redis.conf //启动7001
redis-trib.rb fix 127.0.0.1:7001 //修复7001对应的槽位
redis-trib.rb check 127.0.0.1:7001 //添加到集群中

Performing Cluster Check (using node 127.0.0.1:7001)
M: 21a659d47405118f15009e982cdb800501f25da4 127.0.0.1:7001
slots:0-16383 (16384 slots) master
0 additional replica(s)
[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.

原创粉丝点击