redis单机、集群搭建(linux下适合新手的超详细搭建步骤)

前言

1、linux操作系统发行版:CentOS release 6.9
2、redis集群是在一个服务器分6个端口搭建的
3、redis版本:redis-3.2.1.tar.gz

环境准备

语言环境

安装c语言(一般情况下,centos自带c语言环境)、ruby语言环境(搭建redis集群时需要用到)
进入/roo分别t执行:
yum install gcc-c++
yum install rubyredis单机、集群搭建(linux下适合新手的超详细搭建步骤)
yum install rubygems
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)

安装包

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
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)

redis单机搭建

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
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)
5、将解压安装包里面的配置文件拷贝到安装目录下
进入/usr/local/redis-3.2.1执行:cp ./redis.conf …/redis/bin
6、将redis的启动改成后端启动
进入/usr/local/redis/bin执行:将redis.conf里面的daemonize no改成daemonize yes
7、放开redis访问的ip权限,使得所有ip都可以访问
进入/usr/local/redis/bin执行:将redis.conf里面的bind 127.0.0.1改成# bind 127.0.0.1(注释掉,如果是redis3.2之后版本,将protected-mode yes改成protected-mode no)
8、设置密码
进入/usr/local/redis/bin执行:将redis.conf里面的# requirepass foobared改成requirepass 密码(放开注释
进入/usr/local/redis/bin执行:将redis.conf里面的# masterauth 改成masterauth 密码(如果不搭redis集群,这一步不需要做
9、防火墙放开6379端口
进入/etc/sysconfig分别执行:
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
service iptables save
10、重启防火墙
进入/etc/sysconfig执行:service iptables restart
11、启动
进入/usr/local/redis/bin执行:./redis-server redis.conf
12、检查redis是否运行正常
进入/usr/local/redis/bin执行:ps -ef|grep redis
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)
13、关闭
进入/usr/local/redis/bin执行:./redis-cli -h ip地址 -p 端口 -a 密码 shutdown
14、删除安装包
进入/usr/local执行:rm -rf redis-3.2.1.tar.gz

redis集群搭建

集群需要3台主机,3台从机。为了方便,在一台主机上分6个端口号安装

创建6个redis实例

1、创建redis-cluster目录
进入/usr/local执行:mkdir redis-cluster
2、创建第1个redis目录
进入/usr/local/redis-cluster执行:mkdir redis6661
3、把/usr/local/redis目录下的所有文件复制到/usr/local/redis-cluster/redis6661
进入/usr/local/redis执行:cp -r * /usr/local/redis-cluster/redis6661
4、删除redis6661目录下的快照文件dump.rdb
进入/usr/loca/redis-clusterl/redis6661/bin执行:rm -rf dump.rdb
5、修改redis6661目录下的redis.cnf文件
进入/usr/local/redis6661/bin分别执行:
将redis.cnf里面的port 6379改成port 6661
将# cluster-enabled yes改成cluster-enabled yes(放开注释,开启集群创建模式)
6、复制得到另外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
7、将5个文件下的redis.conf里面的端口号分别修改为6662-6666

创建集群

1、修改client.rb密码(如果不修改,创建集群会报错
进入/usr/lib/ruby/gems/1.8/gems/redis-3.2.1/lib/redis执行:将client.rb里面的(:password => nil,)改成(:password => “密码”,)
2、创建一个启动、关闭6个redis的脚本(具体脚本见文末),放到/usr/local/redis-cluster
3、修改脚本权限,让其可以执行
进入/usr/local/redis-cluster执行:
chmod +x start-all.sh stop-all.sh
4、修改脚本的格式为unix
进入/usr/local/redis-cluster执行:vim start-all.sh,按shift+冒号输入set ff=unix,回车,保存
5、将/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下的内容如下:
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)
6、防火墙放开端口
进入/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
7、重启防火墙
进入/etc/sysconfig执行:service iptables restart
8、进入/usr/local/redis-cluster执行:./start-all.sh
9、检查redis是否运行正常
进入/usr/local/redis-cluster执行:ps -ef|grep redis
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)
10、搭建集群
进入/usr/local/redis-cluster执行:./redis-trib.rb create --replicas 1 ip:6661 ip:6662 ip:6663 ip:6664 ip:6665 ip:6666
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)

相关脚本

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、将相关命令复制到/usr/bin下(使得相关命令成为全局命令,在任何目录下都可执行)
进入/usr/local/redis/bin执行:cp redis-server redis-cli /usr/bin
2、集群状态
redis-cli -h ip -p 6661 -a 密码 cluster info
3、集群节点信息
redis-cli -h ip -p 6661 -a 密码 cluster nodes

常见问题

1、搭建集群出现以下报错的解决办法
redis单机、集群搭建(linux下适合新手的超详细搭建步骤)
进入/usr/local/redis-cluste分别执行(每个端口对应的redis执行的步骤一样):
redis-cli -h ip -p 端口 -a 密码
cluster reset
flushdb
exit