简介
本文使用单服务器模拟搭建redis集群,都是自己亲自搭建,避开过程中的坑,成功后才做的笔记。多服务起搭建只需参考本文,修改部分IP地址即可。
安装redis
这里只给出了简化后的安装过程,如果想看详细安装步骤和各个配置文件的作用,见:CentOS7安装Redis
1.下载
cd /usr/local/
mkdir redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2.解压
tar -zxvf redis-5.0.7.tar.gz
3.进入src目录安装
cd redis-5.0.7/src
//安装到指定目录
sudo make install PREFIX=/usr/local/redis
4.从之前的Redis解压目录拷贝Redis配置文件到指定目录
cd /usr/local/redis
mkdir etc
cd redis-5.0.7
cp redis.conf /usr/local/redis/etc
搭建集群
1.创建文件
mkdir redis-cluster
cd redis-cluster/
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
mkdir bin
2.复制脚本
cd /usr/local/redis-5.0.7/src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
3.复制一个新的redis实例
cp -r /usr/local/redis /usr/local/redis-cluster/9001
4.修改配置文件
cd /usr/local/redis-cluster/9001/redis/etc/
vim redis.conf
#修改以下配置,900*代表对应端口,由于我们是测试,就不执行10和11配置密码操作
#注意:如果需要外网访问,需要注释步骤3 bind,并将 protected-mode 修改为 no,下面所有的ip变为 127.0.0.1
1)port 900*(分别对每个机器的端口号进行设置)
2)daemonize yes(允许后台运行)
3)bind 172.16.228.165(去掉bind绑定访问ip信息,一定要是内网ip)
4)dir /usr/local/redis-cluster/900*/data/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
5)pidfile /var/run/redis_900*.pid(pid 900*和port要对应)
6)cluster-enabled yes(启动集群模式)
7)cluster-config-file nodes-900*.conf(集群节点信息文件,这里900x最好和port对应上)
8)cluster-node-timeout 15000(node超时时间)
9)appendonly yes
*10)requirepass 密码 (设置redis密码)
*11)masterauth xxx (设置集群节点间访问密码,跟上面一致)
5.重复步骤3、4,把9001的redis文件复制给9002-9006即可,配置文件只需修改步骤1、4、5、7即可
cp -r redis/ /usr/local/redis-cluster/9002/
cp -r redis/ /usr/local/redis-cluster/9003/
cp -r redis/ /usr/local/redis-cluster/9004/
cp -r redis/ /usr/local/redis-cluster/9005/
cp -r redis/ /usr/local/redis-cluster/9006/
#再依次修改redis.conf
cd /usr/local/redis-cluster/900*/redis/etc/
vim redis.conf
6.依次启动9001-9006六个节点
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/900*/redis/etc/redis.conf
7.查看启动状态
ps -ef|grep redis
如图代表启动成功:
8.随便找一个节点测试
/usr/local/redis-cluster/9001/redis/bin/redis-cli -h 172.16.228.165 -p 9001
>set name 123456
此时发现报错:(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)
这是因为虽然我们配置并启动了 Redis 集群服务,但是他们暂时还并不在一个集群中,互相直接发现不了,而且还没有可存储的位置,就是所谓的slot(槽)。
9.执行搭建集群命令
*注意:redis5 以前的版本集群是依靠 ruby 脚本 redis-trib.rb 实现,我们用的是 redis5.0 版本,无需 ruby 脚本
/usr/local/redis-cluster/bin/redis-cli --cluster create 172.16.228.165:9001 172.16.228.165:9002 172.16.228.165:9003 172.16.228.165:9004 172.16.228.165:9005 172.16.228.165:9006 --cluster-replicas 1
*注意:如果开启了 redis 密码验证,需要在 redis-cli 后加 -a ***(密码)
*注意:–cluster-replicas 1中,1代表的是一个 master 有一个 slave;前三个 ip 是 master,后三个 ip 是对应的 slave 。
10.使用集群模式再次测试
测试9001
*注意:一定要加 -c
/usr/local/redis-cluster/bin/redis-cli -c -h 172.16.228.165 -p 9001
测试其他节点是否能查到name
至此安装完成。