1、linux操作系统发行版:CentOS release 6.9
2、redis版本:redis-3.2.1.tar.gz
3、redis主从+哨兵是在一个服务器分3个端口搭建的
4、redis集群是在一个服务器分6个端口搭建的
5、正文中出现的ip是服务器的ip,"密码"是自己设置的redis密码
6、如果服务器的防火墙关闭了(具体怎么看请百度),那么正文中所涉及的防火墙相关步骤不用操作
7、正文中的双引号发布文章后变成了中文格式的,在复制粘贴时注意下
安装c语言(一般情况下,centos自带c语言环境)、ruby语言环境(搭建redis集群时需要用到)
分别执行以下命令:
yum install gcc-c++
yum install ruby
yum install rubygems
1、从官方网站下载ruby包redis-3.2.1.gem、redis安装包redis-3.2.1.tar.gz并放到/usr/local目录下
2、安装ruby包
进入/usr/local执行:gem install redis-3.2.1.gem
1、解压安装包
进入/usr/local执行:tar -xzvf redis-3.2.1.tar.gz
2、编译
进入/usr/local/redis-3.2.1执行:make
3、创建redis目录
进入/usr/local执行:mkdir redis
4、安装
进入/usr/local/redis-3.2.1执行:make install PREFIX=/usr/local/redis
5、将解压安装包里面的配置文件拷贝到安装目录下
进入/usr/local/redis-3.2.1执行:cp ./redis.conf …/redis/bin
6、创建日志目录
进入/usr/local/redis执行:mkdir log
7、修改配置文件redis.conf
进入/usr/local/redis/bin,对redis.conf做以下修改
将daemonize no改成daemonize yes(将redis的启动改成后端启动)
将bind 127.0.0.1改成# bind 127.0.0.1(放开redis访问的ip权限,使得所有ip都可以访问)
将protected-mode yes改成protected-mode no(如果是redis3.2之后版本,需要操作此步骤)
将# requirepass foobared改成requirepass 密码(设置密码)
将# masterauth 改成masterauth 密码(如果后面需要创建主从、集群,需要修改)
将logfile ""改成logfile “/usr/local/redis/log/redis.log”
8、防火墙放开6379端口
进入/etc/sysconfig分别执行:
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
service iptables save
9、重启防火墙
进入/etc/sysconfig执行:service iptables restart
10、启动
进入/usr/local/redis/bin执行:./redis-server redis.conf
11、检查redis是否运行正常
ps -ef|grep redis
12、关闭
进入/usr/local/redis/bin执行:./redis-cli -h ip -p 6379 -a 密码 shutdown
13、将相关命令复制到/usr/bin下(使得相关命令成为全局命令,在任何目录下都可执行)
进入/usr/local/redis/bin执行:cp redis-server redis-cli /usr/bin
1、创建redis-replication-sentinel目录
进入/usr/local执行:mkdir redis-replication-sentinel
2、创建第1个redis目录
进入/usr/local/redis-replication-sentinel执行:mkdir redis6551
3、创建第1个redis的日志目录
进入/usr/local/redis-replication-sentinel/redis6551执行:mkdir log
4、把/usr/local/redis目录下的所有文件复制到/usr/local/redis-replication-sentinel/redis6551
进入/usr/local/redis执行:cp -r * /usr/local/redis-replication-sentinel/redis6551
5、复制得到另外2个redis
进入/usr/local/redis-replication-sentinel分别执行:
cp -r redis6551 ./redis6552
cp -r redis6551 ./redis6553
6、修改3个redis的配置文件redis.conf
将端口修改为6551、6552、6553
将# slaveof 改成slaveof ip 6551(只修改6552、6553对应的配置文件)
将logfile "/usr/local/redis/log/redis.log"改成logfile “/usr/local/redis-replication-sentinel/redis(6551、6552、6553)/log/redis.log”
7、防火墙放开端口
进入/etc/sysconfig分别执行:
iptables -A INPUT -p tcp --dport 6551 -j ACCEPT
iptables -A INPUT -p tcp --dport 6552 -j ACCEPT
iptables -A INPUT -p tcp --dport 6553 -j ACCEPT
service iptables save
8、重启防火墙
进入/etc/sysconfig执行:service iptables restart
9、创建1个启动、关闭3个redis的脚本(具体脚本见文末),放到/usr/local/redis-replication-sentinel下
10、修改脚本权限,让其可以执行
进入/usr/local/redis-replication-sentinel执行:
chmod +x start-all.sh stop-all.sh
11、修改脚本的格式为unix
进入/usr/local/redis-replication-sentinel执行:vim start-all.sh,按shift+冒号输入set ff=unix,回车,保存
12、启动
进入/usr/local/redis-replication-sentinel执行:./start-all.sh
13、检查redis是否运行正常
ps -ef|grep redis
14、检查主从模式是否搭建成功(向redis6551添加一个key-value,然后再看其他2个redis是否可以获取到)
进入/usr/local/redis-replication-sentinel分别执行:
redis-cli -h ip -p 6551 -a 密码
set 123 hello-redis
exit
redis-cli -h ip -p 6552 -a 密码
get 123
1、将解压安装包里面的哨兵的配置文件sentinel.conf复制到主从redis目录下
进入/usr/local/redis-3.2.1分别执行:
cp sentinel.conf /usr/local/redis-replication-sentinel/redis6551/bin
cp sentinel.conf /usr/local/redis-replication-sentinel/redis6552/bin
cp sentinel.conf /usr/local/redis-replication-sentinel/redis6553/bin
2、修改配置文件sentinel.conf
将端口改成26551-26553
将sentinel monitor mymaster 127.0.0.1 6379 2 改成 sentinel monitor mymaster ip 6551 2
在文件最后分别增加
sentinel auth-pass mymaster 密码
sentinel down-after-milliseconds mymaster 10000(设定10秒内master没有活起来,就重新选举主)
sentinel failover-timeout mymaster 60000(设定60秒内没有响应,说明服务器挂了)
daemonize yes
protected-mode no
logfile “/usr/local/redis-replication-sentinel/redis(6551、6552、6553)/log/sentinel.log”
3、防火墙放开端口
进入/etc/sysconfig分别执行:
iptables -A INPUT -p tcp --dport 26551 -j ACCEPT
iptables -A INPUT -p tcp --dport 26552 -j ACCEPT
iptables -A INPUT -p tcp --dport 26553 -j ACCEPT
service iptables save
4、重启防火墙
进入/etc/sysconfig执行:service iptables restart
5、创建1个启动、关闭3个redis的脚本(具体脚本见文末),放到/usr/local/redis-replication-sentinel下
6、修改脚本权限,让其可以执行
进入/usr/local/redis-replication-sentinel执行:
chmod +x start-all-sentinel.sh
7、修改脚本的格式为unix
进入/usr/local/redis-replication-sentinel执行:vim start-all-sentinel.sh,按shift+冒号输入set ff=unix,回车,保存
8、启动
进入/usr/local/redis-replication-sentinel执行:./start-all-sentinel.sh
9、检查sentinel是否运行正常
ps -ef|grep redis
1、创建redis-cluster目录
进入/usr/local执行:mkdir redis-cluster
2、创建第1个redis目录
进入/usr/local/redis-cluster执行:mkdir redis6661
3、创建第一个redis的日志目录
进入/usr/local/redis-cluster/redis6661执行:mkdir log
4、把/usr/local/redis目录下的所有文件复制到/usr/local/redis-cluster/redis6661
进入/usr/local/redis执行:cp -r * /usr/local/redis-cluster/redis6661
5、复制得到另外5个redis
进入/usr/local/redis-cluster分别执行:
cp -r redis6661 ./redis6662
cp -r redis6661 ./redis6663
cp -r redis6661 ./redis6664
cp -r redis6661 ./redis6665
cp -r redis6661 ./redis6666
6、修改主从redis的配置文件redis.conf
端口号分别修改为6661-6666
将# cluster-enabled yes改成cluster-enabled yes(开启集群创建模式)
将logfile "/usr/local/redis/log/redis.log"改成logfile “/usr/local/redis-cluster/redis(6661-6666)/log/redis.log”
7、修改client.rb密码(如果不修改,创建集群会报错)
进入/usr/lib/ruby/gems/1.8/gems/redis-3.2.1/lib/redis:将client.rb里面的(:password => nil,)改成(:password => “密码”,)
8、创建1个启动、关闭6个redis的脚本(具体脚本见文末),放到/usr/local/redis-cluster
9、修改脚本权限,让其可以执行
进入/usr/local/redis-cluster执行:
chmod +x start-all.sh stop-all.sh
10、修改脚本的格式为unix
进入/usr/local/redis-cluster执行:vim start-all.sh,按shift+冒号输入set ff=unix,回车,保存
11、将/usr/local/redis-3.2.1/src下的redis-trib.rb复制到redis-cluster目录下
进入/usr/local/redis-3.2.1/src执行:cp redis-trib.rb /usr/local/redis-cluster
至此,/usr/local/redis-cluster下的内容如下:
12、防火墙放开端口
进入/etc/sysconfig分别执行:
iptables -A INPUT -p tcp --dport 16661 -j ACCEPT
iptables -A INPUT -p tcp --dport 16662 -j ACCEPT
iptables -A INPUT -p tcp --dport 16663 -j ACCEPT
iptables -A INPUT -p tcp --dport 6661 -j ACCEPT
iptables -A INPUT -p tcp --dport 6662 -j ACCEPT
iptables -A INPUT -p tcp --dport 6663 -j ACCEPT
iptables -A INPUT -p tcp --dport 16664 -j ACCEPT
iptables -A INPUT -p tcp --dport 16665 -j ACCEPT
iptables -A INPUT -p tcp --dport 16666 -j ACCEPT
iptables -A INPUT -p tcp --dport 6664 -j ACCEPT
iptables -A INPUT -p tcp --dport 6665 -j ACCEPT
iptables -A INPUT -p tcp --dport 6666 -j ACCEPT
service iptables save
13、重启防火墙
进入/etc/sysconfig执行:service iptables restart
14、启动
进入/usr/local/redis-cluster执行:./start-all.sh
15、检查redis是否运行正常
ps -ef|grep redis
16、创建集群
进入/usr/local/redis-cluster执行:./redis-trib.rb create --replicas 1 ip:6661 ip:6662 ip:6663 ip:6664 ip:6665 ip:6666
1、start-all.sh
#!/bin/bash
cd ./redis-6551/bin
./redis-server redis.conf
cd …/…/redis-6552/bin
./redis-server redis.conf
cd …/…/redis-6553/bin
./redis-server redis.conf
2、stop-all.sh
#!/bin/bash
cd ./redis-6551/bin
./redis-cli -h ip -p 6551 -a 密码 shutdown
cd …/…/redis-6552/bin
./redis-cli -h ip -p 6552 -a 密码 shutdown
cd …/…/redis-6553/bin
./redis-cli -h ip -p 6553 -a 密码 shutdown
1、start-all-sentinel.sh
#!/bin/bash
cd ./redis-6551/bin
./redis-sentinel sentinel.conf
cd …/…/redis-6552/bin
./redis-sentinel sentinel.conf
cd …/…/redis-6553/bin
./redis-sentinel sentinel.conf
2.stop-all-sentinel.sh
#!/bin/bash
cd ./redis-6551/bin
./redis-cli -h ip -p 26551 -a 密码 shutdown
cd …/…/redis-6552/bin
./redis-cli -h ip -p 26552 -a 密码 shutdown
cd …/…/redis-6553/bin
./redis-cli -h ip -p 26553 -a 密码 shutdown
1、start-all.sh
#!/bin/bash
cd ./redis6661/bin
./redis-server redis.conf
cd …/…/redis6662/bin
./redis-server redis.conf
cd …/…/redis6663/bin
./redis-server redis.conf
cd …/…/redis6664/bin
./redis-server redis.conf
cd …/…/redis6665/bin
./redis-server redis.conf
cd …/…/redis6666/bin
./redis-server redis.conf
2、stop-all.sh
#!/bin/bash
cd ./redis6661/bin
./redis-cli -h ip -p 6661 -a 密码 shutdown
cd …/…/redis6662/bin
./redis-cli -h ip -p 6662 -a 密码 shutdown
cd …/…/redis6663/bin
./redis-cli -h ip -p 6663 -a 密码 shutdown
cd …/…/redis6664/bin
./redis-cli -h ip -p 6664 -a 密码 shutdown
cd …/…/redis6665/bin
./redis-cli -h ip -p 6665 -a 密码 shutdown
cd …/…/redis6666/bin
./redis-cli -h ip -p 6666 -a 密码 shutdown
1、查看主从信息
info replication
2、集群状态
redis-cli -h ip -p 6661 -a 密码 cluster info
3、集群节点信息
redis-cli -h ip -p 6661 -a 密码 cluster nodes
1、搭建集群出现以下报错的解决办法
进入/usr/local/redis-cluste分别执行(每个端口对应的redis执行的步骤一样):
redis-cli -h ip -p 端口 -a 密码
cluster reset
flushdb
exit