页面加载中...

Redis集群搭建

| Linux | 0 条评论 | 480浏览

Preface

介绍redis集群的搭建部署操作,以及集群加密等功能。

集群搭建

准备工作

我本地用的是windows自带的bash,也就是一个Ubuntu版本的linux。

  • 下载redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz 
  • 安装gcc
apt install gcc
  • 安装ruby
apt install ruby

部署

创建目录

创建一个新目录,刚才下载的包redis安装包扔在改目录下,然后解压

mkdir /mnt/e/env/redis-linux
mv redis-5.0.7.tar.gz  /mnt/e/env/redis-linux/
tar -xvf releases/redis-5.0.7.tar.gz

编译安装单机redis

在解压的目录下,编译redis

make MALLOC=libc
make install

install完成之后,默认会在/usr/local/bin/下面生成redis的命令

root@DESKTOP-2EH4V6S:/mnt/e/env/redis-linux/7001# ll /usr/local/bin
total 19392
drwxr-xr-x 1 root root     512 Jul 28 10:13 ./
drwxr-xr-x 1 root root     512 Jun 20  2019 ../
-rwxr-xr-x 1 root root  383840 Jul 28 10:13 redis-benchmark*
-rwxr-xr-x 1 root root 4263752 Jul 28 10:13 redis-check-aof*
-rwxr-xr-x 1 root root 4263752 Jul 28 10:13 redis-check-rdb*
-rwxr-xr-x 1 root root  869280 Jul 28 10:13 redis-cli*
lrwxrwxrwx 1 root root      12 Jul 28 10:13 redis-sentinel -> redis-server*
-rwxr-xr-x 1 root root 4263752 Jul 28 10:13 redis-server*

此时,也可以测试下,直接启动一个redis实例:

redis-server redis.conf 

然后可以使用redis-cli命令来连接该server:

redis-cli -h 127.0.0.1 -p 6379

配置redis集群

创建集群目录

在上述的新目录下,需要创建6个目录,稍后将用来作为集群的端口配置文件所在地方。

mkdir /mnt/e/env/redis-linux/700{1,2,3,4,5}

为什么redis集群至少需要6个节点? Redis集群至少需要3个master节点,而1个master至少需要一个slave,也就是一主一备。所以至少需要6个节点。 如果启动没有6个节点,就会报如下错误

Creating cluster*** ERROR: Invalid configuration for cluster creation.*** Redis Cluster requires at > least 3 master nodes.*** This is not possible with 6 nodes and 2 replicas per node. 

配置文件

创建完目录后,需要配置各自的redis.conf文件,该文件从redis-5.0.7拷贝出来即可, 需要修改下配置,然后复制到各个集群目录中去。

# redis.conf文件配置 ,大部分配置基本上都不需要动,找到如下配置,增加/修改即可
bind 0.0.0.0
port 7001
daemonize yes 
masterauth 5172551
requirepass 5172551

# REDIS集群的配置#
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000

主要是指定下端口。然后也开启了redis集群的密码功能,稍后登录redis集群就需要通过密码认证。

然后把修改后的配置文件redis.conf,以及redis-cliredis-server拷贝到各个目录中去。

cd /mnt/e/env/redis-linux/redis-linux/redis-5.0.7/
cp redis.conf redis-cli redis-server ../7001/
cp redis.conf redis-cli redis-server ../7002/
cp redis.conf redis-cli redis-server ../7003/
cp redis.conf redis-cli redis-server ../7004/
cp redis.conf redis-cli redis-server ../7005/
cp redis.conf redis-cli redis-server ../7006/

此时可以把这些节点全部启起来

redis-server /mnt/e/env/redis-linux/7001/redis.conf
redis-server /mnt/e/env/redis-linux/7002/redis.conf
redis-server /mnt/e/env/redis-linux/7003/redis.conf
redis-server /mnt/e/env/redis-linux/7004/redis.conf
redis-server /mnt/e/env/redis-linux/7005/redis.conf
redis-server /mnt/e/env/redis-linux/7006/redis.conf

集群启动

刚才启动的只是6个redis实例,并不是集群模式,此时需要通过命令将这些实例联系起来,组成一个集群:

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 -a 5172551

此时,继续可以使用redis-cli连接任意一个redis实例即可。需要指定参数-c为集群连接模式

redis-cli -c -p 7001 -a 5172551

集群停止

如果需要停止redis集群,需要先kill调每个redis实例: 但这样有点麻烦,也可以通过如下命令kill调所有的redis实例

pkill -9 redis

结果如下:

至此,一个简单的redis集群搭建完毕!

常见问题

  • redis停止后再启动出现node is not empty错误 错误描述如下:
[ERR] Node 127.0.0.1:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

只是因为7001目录下有rdb/aof数据缓存文件,删除该目录下的rdb/aof以及node*.conf文件即可。

参考文章

一文看懂 Redis5 搭建集群:https://my.oschina.net/ruoli/blog/2252393 Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案) :https://www.cnblogs.com/xuliangxing/p/7146868.html

发表评论

最新评论

    来第一个评论吧!