1 、环境准备
1 )准备 6 台 ubuntu 虚拟机
2 )配置好 IP ( 192.168.1.36,192.168.1.37,192.168.1.38, 192.168.1.40 , 192.168.1.41,192.168.1.42 三台 master 三台 slave )
3 )安装好 openssh-server
2 、下载 redis http://redis.io/download 本次使用 3.2.3 版本 redis-3.2.3.tar.gz
3 、安装 redis
1 )对目录提权 sudo chmod -R 777 /opt/
2 )拷贝 redis-3.2.3.tar.gz 到 6 台虚拟机下 如 /opt/
3 )解压 redis-3.2.3.tar.gz
4 )编译 redis 终端命令
cd redis-3.2.3/src
make
4 、修改 redis.config ,修改后覆盖 6 台虚拟机的 redis.config ,修改如下:
cluster-enabled yes // 开启集群
cluster-config-file nodes-6379.conf // 节点配置信息
cluster-node-timeout 5000 // 超时
cluster-slave-validity-factor 10 //slave 故障转移次数
Cluster-migration-barrier 1 // 最小 slave 数量
Cluster-require-full-coverage no //no 表示
appendonly yes // 指定是否在每次更新操作后进行日志记录
appendfilename "appendonly.aof" // 指定更新日志文件名
logfile "/opt/redis-3.2.3/logs/redis-6379.log" // 日志记录目录 目录不存在需先创建
bind 0.0.0.0 // 允许远程连接
5 、启动 redis
$ cd redis-3.2.3/src
$ ./redis-server /opt/redis-3.2.3/redis.conf
6 、验证是否安装成功
$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
redis> del foo
(integer) 1
7 、构建集群
1 )选择其中一台安装 ruby ,需要的情况每台都安装一下
选择一个下载源: ustc.edu.cn/ubuntu 测试最佳
sudo apt-get update
sudo apt-get install ruby ( 可能需要先 sudo apt-get -f install)
gem install redis (可能需要授权 sudo chmod -R 777 /var/ )
2 )构建集群
./redis-trib.rb create --replicas 1 192.168.1.36:6379 192.168.1.37:6379 192.168.1.38:6379 192.168.1.40:6379 192.168.1.41:6379 192.168.1.42:6379
检查集群状态
redis-trib.rb check 192.168.1.36:6379
( 在测试的时候 发现一个问题 其中一台机器的 redis 节点,构建的时候自己的 ip 不能在前面 2 个位置 )
8 、测试
集群下 远程连接 get set 必须带 -c
$ ./redis-cli -h 192.168.1.36 -p 6379 -c
测试结果:
1 )在 master1 上 set ,可以在其他 master 上 get ,反之一样
2 )只 down 一台 master1 ,其从 slave1 会自动切换为 master ,当 master1 再次启动,则变为 slave 了,角色互换
3 )同 down 掉一台 master1 和从 slave1 ,则其他 master 和 slave 运行正常,但是 master1 和从 slave1 的数据,无法获取了,并且在其他 master 无法设置 master1 和从 slave1 所拥有的 key 值,当 master1 和从 slave1 再次启动,则先启动的 master ,后面的为 slave
4 ) key 第一次 set 在哪里,后面会一直 set 在该 master 上?
附:
redis 远程连接主机( 192.168.1.36 )
$ cd src
$ ./redis-cli -h 192.168.1.36 -p 6379
$ ./redis-cli -h 192.168.1.36 -p 6379 -a 123456 (带密码)
强制关闭 redis
netstat ntlp |grep 6379
kill -9 pid
// 删除当前数据库中的所有 Key
<span style="font-family: Consolas,Bitstream Vera Sans Mono,Courier New,Courier,monospace;"><span style="font-family: Liberation Serif,serif;">flushdb</span></span>
// 删除所有数据库中的 key
<span style="font-family: Consolas,Bitstream Vera Sans Mono,Courier New,Courier,monospace;"><span style="font-family: Liberation Serif,serif;">flushall</span></span>
删除 aof , rdb,conf 3 个文件删除
参考资料:
http://www.tuicool.com/articles/aQbQ3u
http://hot66hot.iteye.com/blog/2050676
www.cnblogs.com/yuanermen/p/5717885.html
http://blog.csdn.net/jthink_/article/details/50373959
http://www.freeteam.cn/site/FreeCMS/share/info/2016/5175.html
问题:都挂了,如何再次构建集群,数据是否还在,其中 master 和对应 slave 挂了 如何再次加入集群
192.168.1.43
RedisLive 集群监控
sudo apt-get install python-pip
http://sofar.blog.51cto.com/353572/1369266/
http://blog.csdn.net/fengspg/article/details/51010011
redis-stat 集群监控
http://my.oschina.net/guol/blog/182265?p=2&temp=1472112097074#blog-comments-list
http://www.tuicool.com/articles/ae6bUfN
需要安装一台 redis 用于监测 不用更改 redis.config ( 0.0.0.0 )
sudoapt-get install ruby
sudo apt-get install ruby-dev
sudogem install redis-stat 命令行显示方式: $
./redis-stat 172.168.63.201:7000 172.168.63.201:7001 5 web界面方式: $
./redis-stat 172.168.63.201:7000 172.168.63.201:7001 server=8080
10--daemon 说明:表示每个10秒打印一次信息,--daemon表示在后台挂起执行; 127.0.0.1:8080
如果你运行的操作是windows,那么只能在JRuby上安装redis-stat。需要注意的是,Windows的默认命令提示符下,终端颜色不能够被很好的支持。