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-cli
、redis-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
发表评论