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

一、说明

        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.gz
tar -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)截图

【Linux】linux | redis集群 | 搭建redis集群_第1张图片

 ~~

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-mode
port
daemonize
pidfile
logfile
appendonly
cluster-enabled
cluster-config-file

5)复制配置好的49001下的redis.conf到其他目录下

cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49002/redis.conf
cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49003/redis.conf
cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49004/redis.conf
cp /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.conf
sed -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

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

部分截图

【Linux】linux | redis集群 | 搭建redis集群_第2张图片

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

cluster info

【Linux】linux | redis集群 | 搭建redis集群_第3张图片

8)再试试set

set hg hello

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

【Linux】linux | redis集群 | 搭建redis集群_第4张图片

~~

 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 49001
cluster info

【Linux】linux | redis集群 | 搭建redis集群_第5张图片

 此时节点还是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集群_第6张图片

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 49001
keys *

 6)键入密码

auth root123

【Linux】linux | redis集群 | 搭建redis集群_第7张图片

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

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

~~

7、主从 + 哨兵

1)先备份,后续再说

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

~~

你可能感兴趣的:(Linux,redis,linux,java)