一、说明

        1、两种集群方式

        2、单机多实例

        3、多机多实例

二、准备工作

1、下载redis服务包

1)redis5.0.5

​http://download.redis.io/releases/redis-5.0.5.tar.gz​

2)其他版本


​http://download.redis.io/releases/​

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)解压后

【Linux】linux | redis集群 | 搭建redis集群_redis

4)进入redis目录

cd redis-5.0.5

5)编译并安装

make & make install

~~

2、创建实例所需要的的端口目录

1)创建目录

mkdir 49001 49002 49003 49004 49005

端口不能大于55535;


2)截图

【Linux】linux | redis集群 | 搭建redis集群_配置文件_02


 ~~

3、配置与启动

1)复制配置文件

cp redis.conf ./49001

2)示例

【Linux】linux | redis集群 | 搭建redis集群_java_03


 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)成功示例

【Linux】linux | redis集群 | 搭建redis集群_redis_04


~~

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

【Linux】linux | redis集群 | 搭建redis集群_java_05

看到没,启动了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

【Linux】linux | redis集群 | 搭建redis集群_redis_06

5)设置个key,发现会失败的

set hg hello

【Linux】linux | redis集群 | 搭建redis集群_redis_07

 错误信息

(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

不要有疑问,就是执行一个端口即可了;因为已经把集群关联起来了;所以会在集群中分配

部分截图

【Linux】linux | redis集群 | 搭建redis集群_linux_08

7)重新用redis-cli连接,然后查看集群信息

cluster info

【Linux】linux | redis集群 | 搭建redis集群_java_09

8)再试试set

set hg hello

【Linux】linux | redis集群 | 搭建redis集群_sed_10

9)这个时候集群就可以用了,用客户端连接下看看

【Linux】linux | redis集群 | 搭建redis集群_sed_11


~~

 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

【Linux】linux | redis集群 | 搭建redis集群_linux_12

7)查看此时集群

ps -ef | grep redis

【Linux】linux | redis集群 | 搭建redis集群_linux_13

 8)连接集群,查看节点信息

redis-cli -c -h 192.168.100.131 -p 49001cluster info

【Linux】linux | redis集群 | 搭建redis集群_java_14

 此时节点还是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


示例

【Linux】linux | redis集群 | 搭建redis集群_linux_15

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 *

【Linux】linux | redis集群 | 搭建redis集群_sed_16

 6)键入密码

auth root123

【Linux】linux | redis集群 | 搭建redis集群_java_17

7)也可在连接时直接输入命令(提示不安全)

redis-cli -c -h 192.168.100.131 -p 49001 -a root123

【Linux】linux | redis集群 | 搭建redis集群_配置文件_18


~~

7、主从 + 哨兵

1)先备份,后续再说

​https://www.jianshu.com/p/74007aab5e4b​

~~