在一些环境中,我们但并不担心Redis的数据丢失,因为其只做为缓存层。在数据库前会有保护,以保证突发请示不会把MySQL打挂。所以在这种情况下,Redis Cluster 的主从结构上,从节点的需求只是在主节点挂掉后上位,而不需要数据保持完全一致,那往往在这种情况下我希望搭建一种不对称的主从分布,主节点的内存大,而从节点的内存小。
一、Redis 的安装
1. 下载Redis
进入 https://redis.io/download 官网下载安装包,通常会下载稳定版,Stable 版本,以 6.2.6 版本为例,下载完成后解压到 /usr/local 内
tar -xzf redis-6.2.6.tar.gz -C /usr/local
2. 安装Redis
进入解压好的目录内执行make
命令
cd /usr/local/redis-6.2.6
make
待命令完成后,将会在 redis 目录下的 src 文件夹内生成可执行文件,通常最常用的就是 redis-server 和 redis-cli 文件,我们将其链接到 bin 目录内,并增加环境变量,以便使用。
cd /usr/local/redis-6.2.6/src
ln -vf redis-server ../bin/
ln -vf redis-cli ../bin/
echo "PATH=/usr/local/redis-6.2.6/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
二、设计 Redis Cluster 集群
设计集群为六台节点,三主三从,虽然可以不设从节点。但由于 Redis Cluster 的集群设计为 hash slot 方式,只要有一台主节点挂了,整个集群便无法继续使用了。所以还是建议增加从节点。暂时先都在本地部署,如部署在多台机器上,则需要修改ip。
设计结构如下:
主1: 端口7000,不设最大内存限制
主2: 端口7001,不设最大内存限制
主3: 端口7002,不设最大内存限制
从1: 端口7010,最大内存限制为500mb,主1从节点
从2: 端口7011,最大内存限制为500mb,主2从节点
从3: 端口7012,最大内存限制为500mb,主3从节点
三、搭建 Redis Cluster 集群
redis-server 可以启动多个实例,所以只要设置多个配置文件即可启动多个redis服务。
在home路径创建redis目录,并配置文件。每个实例的目录为 redis-node-端口号,然后将配置文件复制到各个节点目录内,然后修改配置文件。
cd ~
mkdir redis
cd redis
mkdri redis-node-70{0,1}{0,1,2}
ls | xargs -n1 cp /usr/local/redis-6.2.6/redis.conf
此时每个节点目录都包含了 redis.conf 这上配置文件,接下来就是修改这些配置文件了。
需要修改的字段如下:
bind 改为当前服的ip,也可以不改,但不改的话只能在本地用 127.0.0.1 连接。
port 改为对应的端口
dir 数据文件存在哪,比如此案例就放在 /home/用户名/redis/redis-node-端口
maxmemory 最大内存用量,默认情况下为不限制,注意从节点默认忽略该配置,会与主节点保持一致
maxmemory-policy 缓存淘汰算法此处使用 allkey-lru
replica-ignore-maxmemory 从节点是否忽略 maxmemory 配置,默认会忽略,如想做非对称,则需要设为 no
启动集群
集群创建完成后,我们就可以起动集群了,启动多个终端,轮流启动所有节点。
也可使用 redis-server redis.conf &
的方式在一个终端内启动所有节点。
cd ~/redis/redis-node-端口
redis-server redis.conf
所有接点启动完成后,这些节点还没有组成集群,需要我们手动设置。先连接三个主节点。
redis-cli --clusster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7001
然后逐个加上从节点。
redis-cli --cluster add-node 127.0.0.1:7010 127.0.0.1:7000 --cluster-slave
redis-cli --cluster add-node 127.0.0.1:7011 127.0.0.1:7001 --cluster-slave
redis-cli --cluster add-node 127.0.0.1:7012 127.0.0.1:7002 --cluster-slave
最后使用 redis-cli --cluster check 127.0.0.1:7000
查看集群信息即可。