一、说明
1、两种集群方式
2、单机多实例
3、多机多实例
二、准备工作
1、下载redis服务包
1)redis5.0.5
http://download.redis.io/releases/redis-5.0.5.tar.gz
2)其他版本
2、安装依赖
1)下载
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
下载的慢可以盘
https://pan.baidu.com/s/1DuBQk1FFQjvqVnhkonT3Ug
6326
2)解压
tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
3)进入工作目录
cd /usr/local/tcl8.6.1/unix/
4)连接
./configure
5)编译
make
6)编译安装
make install
~~
三、单机多实例
1、上传redis包到服务器
1)先上传
2)解压
gzip -d redis-5.0.5.tar.gztar -xvf redis-5.0.5.tar
3)解压后
4)进入redis目录
cd redis-5.0.5
5)编译并安装
make & make install
~~
2、创建实例所需要的的端口目录
1)创建目录
mkdir 49001 49002 49003 49004 49005
端口不能大于55535;
2)截图
~~
3、配置与启动
1)复制配置文件
cp redis.conf ./49001
2)示例
3)打开./49001下的配置文件
vi redis.conf
4)修改配置
protected-mode yes -> no port 6379 -> 49001 daemonize no -> yes pidfile /var/run/redis_6379.pid -> /opt/redis/redis-5.0.5/49001/redis_49001.pid logfile "" -> /opt/redis/redis-5.0.5/49001/redis_49001.log appendonly no -> yes # cluster-enabled yes -> cluster-enabled yes # cluster-config-file nodes-6379.conf -> cluster-config-file nodes-49001.conf
protected-modeportdaemonizepidfilelogfileappendonlycluster-enabledcluster-config-file
5)复制配置好的49001下的redis.conf到其他目录下
cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49002/redis.confcp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49003/redis.confcp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49004/redis.confcp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49005/redis.conf
6)修改配置文件(49001->4900*)
sed -i 's/49001/49002/g' /opt/redis/redis-5.0.5/49002/redis.conf sed -i 's/49001/49003/g' /opt/redis/redis-5.0.5/49003/redis.conf sed -i 's/49001/49004/g' /opt/redis/redis-5.0.5/49004/redis.conf sed -i 's/49001/49005/g' /opt/redis/redis-5.0.5/49005/redis.confsed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49001/redis.conf sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49002/redis.conf sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49003/redis.conf sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49004/redis.conf sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49005/redis.conf
192.168.100.131是我服务器的ip,可改成你的;目的是要让局域网可连接
7)创建日志文件
touch /opt/redis/redis-5.0.5/49001/redis_49001.log touch /opt/redis/redis-5.0.5/49002/redis_49002.log touch /opt/redis/redis-5.0.5/49003/redis_49003.log touch /opt/redis/redis-5.0.5/49004/redis_49004.log touch /opt/redis/redis-5.0.5/49005/redis_49005.log
8)监控日志
tail -f /opt/redis/redis-5.0.5/49001/redis_49001.log tail -f /opt/redis/redis-5.0.5/49002/redis_49002.log tail -f /opt/redis/redis-5.0.5/49003/redis_49003.log tail -f /opt/redis/redis-5.0.5/49004/redis_49004.log tail -f /opt/redis/redis-5.0.5/49005/redis_49005.log
9)启动
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49001/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49002/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49003/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49004/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49005/redis.conf &
10)验证是否启动(端口存在即成功)
netstat -anp | grep 4900*
11)成功示例
~~
4、集群配置
1)服务启动只是第一步,后面还有
2)登录服务
redis-cli -c -h 192.168.100.131 -p 49001
a> 因为是集群,所以要 -c
b> -h 要用配置的IP,不能是127.0.0.1,因为监听的是192.168.100.131
c> -p 就是端口了
3)查看集群节点
cluster nodes
看到没,启动了5个示例,只有一个节点;所以还有好些事要做
4)发现集群
cluster meet 192.168.100.131 49002 cluster meet 192.168.100.131 49003 cluster meet 192.168.100.131 49004 cluster meet 192.168.100.131 49005
再cluster nodes
5)设置个key,发现会失败的
set hg hello
错误信息
(error) CLUSTERDOWN Hash slot not served
意思是没有分配哈希槽
RedisCluster使用数据分片(sharding)来实现: 一个 Redis 集群包含16384个哈希槽(hash slot), 数据库中的每个键都属于这16384个哈希槽的其中一个,集群使用公式HASH_SLOT = CRC16(key) % 16384来计算键key属于哪个槽。
6)分配hash槽
redis-cli --cluster fix 192.168.100.131:49001
不要有疑问,就是执行一个端口即可了;因为已经把集群关联起来了;所以会在集群中分配
部分截图
7)重新用redis-cli连接,然后查看集群信息
cluster info
8)再试试set
set hg hello
9)这个时候集群就可以用了,用客户端连接下看看
~~
5、增加个节点
1)新增目录
mkdir 49006
2)复制集群49001的配置
cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49006/redis.conf
3)替换端口
sed -i 's/49001/49006/g' /opt/redis/redis-5.0.5/49006/redis.conf
4)创建日志文件
touch /opt/redis/redis-5.0.5/49006/redis_49006.log
5)启动redis服务
/usr/local/bin/redis-server /opt/guoqifei/redis/redis-5.0.5/49006/redis.conf &
6)查看是否启动成功
netstat -anp | grep 49006
7)查看此时集群
ps -ef | grep redis
8)连接集群,查看节点信息
redis-cli -c -h 192.168.100.131 -p 49001cluster info
此时节点还是5个,需要发现一下
cluster meet 192.168.100.131 49006
9)重新分配
a> 虽然有了新节点,但是无法使用;因为槽位已经分配完了;所以这个节点就是看着有用;
b> 重新分片,不需要重启的重新分片还未掌握;从“10)开始操作就比较霸道了,考虑清楚再往下看”
10)关闭所有redis服务,查询PID
netstat -anp | grep 4900*
11)kill了所有pid
kill -9 ...
12)重启所有redis服务
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49001/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49002/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49003/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49004/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49005/redis.conf & /usr/local/bin/redis-server /opt/redis/redis-5.0.5/49006/redis.conf &
这次多了个49006
13)登录其中一个服务
redis-cli -c -h 192.168.100.131 -p 49001
14)集群服务发现
cluster meet 192.168.100.131 49002 cluster meet 192.168.100.131 49003 cluster meet 192.168.100.131 49004 cluster meet 192.168.100.131 49005 cluster meet 192.168.100.131 49006
15)退出redis临近,然后重新自动分片
redis-cli --cluster fix 192.168.100.131:49001
如果已经设置了密码,则执行
redis-cli --cluster fix 192.168.100.131:49001 -a {密码}
~~
6、集群设置密码
1)编辑所有配置文件
vi /opt/redis/redis-5.0.5/49001/redis.conf
2)搜索
requirepass
3)修改密码
masterauth root123 requirepass root123
示例
4)逐个关闭,逐个重启
a> 查询对应PID端口
netstat -anp | grep 49001
b> 关闭pid
kill -9 2182
c> 启动服务
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49001/redis.conf &
d> 查看重启结果
netstat -anp | grep 49001
e> 然后逐个查询、杀掉、启动服务
5)登录验证,查询时,无权限
redis-cli -c -h 192.168.100.131 -p 49001keys *
6)键入密码
auth root123
7)也可在连接时直接输入命令(提示不安全)
redis-cli -c -h 192.168.100.131 -p 49001 -a root123
~~
7、主从 + 哨兵
1)先备份,后续再说
https://www.jianshu.com/p/74007aab5e4b
~~