一、配置环境
1、安装并修改端口
[root@server1 ~]# ls
redis-4.0.8.tar.gz
[root@server1 ~]# tar zxf redis-4.0.8.tar.gz
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@server1 redis-4.0.8]# yum install -y gcc
[root@server1 redis-4.0.8]# make
cd src && make all
make[1]: Entering directory `/root/redis-4.0.8/src'
CC Makefile.dep
[root@server1 redis-4.0.8]# make install
[root@server1 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@server1 redis-4.0.8]# cd utils/
[root@server1 utils]# ls
build-static-symbols.tcl graphs redis-copy.rb speed-regression.tcl
cluster_fail_time.tcl hashtable redis_init_script whatisdoing.sh
corrupt_rdb.c hyperloglog redis_init_script.tpl
create-cluster install_server.sh redis-sha1.rb
generate-command-help.rb lru releasetools
[root@server1 utils]# ./install_server.sh
修改端口,监听所有
[root@server1 utils]# vim /etc/redis/6379.conf
[root@server1 utils]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@server1 utils]# /etc/init.d/redis_6379 start
Starting Redis server...
server2 server3 同样操作。
2、测试:
server2:
[root@server2 redis-4.0.8]# vim /etc/redis/6379.conf
[root@server2 redis-4.0.8]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
server1:
[root@server1 redis-4.0.8]# redis-cli
127.0.0.1:6379> set name jane
OK
127.0.0.1:6379> get name
"jane"
127.0.0.1:6379> set user1 123
OK
127.0.0.1:6379> get user1
"123"
127.0.0.1:6379>
[root@server2 redis-4.0.8]# cd /etc/redis/
[root@server2 redis]# redis-cli
127.0.0.1:6379> get name
"jane"
127.0.0.1:6379> get user1
"123"
127.0.0.1:6379>
因为数据少,所以非常快的速度就同步。
3、设置监控
[root@server1 ~]# cd /etc/redis/
[root@server1 redis]# ls
6379.conf sentinel.conf
[root@server1 redis]# vim sentinel.conf
[root@server1 redis]# scp sentinel.conf root@172.25.50.2:/etc/redis/
sentinel.conf 100% 7590 7.4KB/s 00:00
[root@server1 redis]# scp sentinel.conf root@172.25.50.3:/etc/redis/
sentinel.conf 100% 7590 7.4KB/s 00:00
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel
##监控命令
server2 和 server3 都可以监控
[root@server1 redis]# redis-cli
127.0.0.1:6379> info
# Server
可以看到两个slave的信息。
4、测试:当我们把 master(server1) 停掉之后,通过监控(server2),我们可以看到 master 随便跳到了某一个上。
[root@server1 redis]# vim sentinel.conf
##因为之前做过监控,所以在这个文件里有信息记录,我们得先删掉server1,server2,server3这个文件最后的所有被记录的内容之后才可以进行下一次监控和操作
[root@server1 ~]# redis-cli
127.0.0.1:6379> SHUTDOWN
not connected>
通过监控可以看到,master 跳到了 server3上。
接着我们去server3 文件里查看,发现master的ip随着改变了。
二、开始创建 redis 集群
1、配置环境,开启服务
[root@server1 ~]# cd /usr/local
[root@server1 local]# ls
bin etc games include lib lib64 libexec sbin share src
[root@server1 local]# mkdir cluster
[root@server1 local]# cd cluster/
[root@server1 cluster]# mkdir 7001
[root@server1 cluster]# mkdir 7002
[root@server1 cluster]# mkdir 7003
[root@server1 cluster]# mkdir 7004
[root@server1 cluster]# mkdir 7005
[root@server1 cluster]# mkdir 7006
[root@server1 cluster]# cd 7001/
[root@server1 7001]# ls
[root@server1 7001]# vim redis.conf
[root@server1 7001]# cd
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# cd src/
[root@server1 src]# cp redis-trib.rb /usr/local/bin/
[root@server1 src]# cd /usr/local/bin/
[root@server1 bin]# ls
redis-benchmark redis-check-rdb redis-sentinel redis-trib.rb
redis-check-aof redis-cli redis-server
libyaml-0.1.3-4.el6_6.x86_64.rpm redis-4.0.8.tar.gz
redis-4.0.1.gem ruby-2.2.3-1.el6.x86_64.rpm
redis-4.0.8 rubygems-1.3.7-5.el6.noarch.rpm
[root@server1 ~]# yum install -y libyaml-0.1.3-4.el6_6.x86_64.rpm
[root@server1 ~]# yum install -y ruby-2.2.3-1.el6.x86_64.rpm
[root@server1 ~]# gem install --local redis-4.0.1.gem
[root@server1 ~]# yum install -y ruby
[root@server1 ~]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@server1 ~]# cd /usr/local/cluster/
[root@server1 cluster]# ls
7001 7002 7003 7004 7005 7006
[root@server1 cluster]# cd 7001/
[root@server1 7001]# ls
redis.conf
[root@server1 7001]# redis-server redis.conf ##开启7001的集群
[root@server1 7001]# pwd
/usr/local/cluster/7001
[root@server1 7001]# ls
appendonly.aof nodes.conf redis.conf redis.log redis.pid
[root@server1 7001]# cat redis.log
[root@server1 7001]# echo 511 > /proc/sys/net/core/somaxconn
[root@server1 7001]# sysctl -w vm.overcommit_memory=1
vm.overcommit_memory = 1
[root@server1 7001]# vim /etc/sysctl.conf
[root@server1 7001]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@server1 7006]# ps ax
2、创建集群
[root@server1 7006]# redis-trib.rb create --replicas 1 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 127.0.0.1:7006
##创建集群
查看:
[root@server1 7006]# redis-trib.rb info 127.0.0.1:7001
[root@server1 7006]# redis-trib.rb info 127.0.0.1:7001
我们现在写进去一些数据
3、测试一:一共有三组,我们搞跨一组。
如果我们先挂掉一 个 master ,就会自动跳到另一个 slave上,这个slave就自动成了master。所以下一次我们开启的时候,得先开启这个master。
测试二:我们干掉两个master,一半多被干掉。
首先,我们恢复状态。
总结:
我们得保证哈系槽的完整性。均匀分配16384.