手把手搭建redis集群-三台虚拟机(三主三从)

Redis集群环境搭建:
Redis 集群简介:

Redis 是一个开源的 key-value 分布式存储系统,由于其出众的性能,大部分互联网企业将其用来作为服务端分布式缓存使用。Redis 在 3.0 以前仅支持单实例模式,也支持主从模式、哨兵模式来达到高可用,避免单点故障。在 3.0 版本以后推出了集群模式,更好的满足业务需求。

Redis 集群采用 P2P 模式,完全去中心化。将所有 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot。集群节点之间定期同步数据保持数据一致性。然后,Redis 客户端可以向任一 Redis 实例发起请求,如果所需数据在该实例中不存在,则会通过重定向命令引导客户端访问所需的其他实例。
本文基于 Redis4.0.1 版本搭建集群。

当然,如果你有 Docker 或 K8S 环境,直接从镜像仓库拉取现成的 Redis 镜像后,通过一些参数配置启动后,就可以很快的搭建一套集群环境。

但这种方式使用对你来说是黑盒的,也就是安装过程你是了解不到的。

为了大家方便学习了解,我们还是使用原始的,通过安装包的形式来部署 Redis。

我们准备三台虚拟机,搭建一个三主三从的 Redis 集群。
在这里插入图片描述
Redis集群

搭建集群过程如下:

1)下载并安装

下载安装包:

# wget下载安装包
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
# 解压缩
tar xzf redis-4.0.14.tar.gz
# 重命名为redis,并拷贝到/usr/local目录
mv redis-4.0.14 redis
cp -r redis /usr/local

安装依赖包:

yum install -y tcl gcc zlib-devel openssl-devel

编译:

make MALLOC=libc

将常用命令添加到系统PATH:

cp -a /usr/local/redis/src/redis-server 
/usr/local/redis/src/redis-cli 
/usr/local/redis/src/redis-sentinel 
/usr/local/redis/src/redis-trib.rb 
/usr/local/redis/src/redis-check-aof 
/usr/local/redis/src/redis-check-rdb 
/usr/local/redis/src/redis-benchmark 
/usr/local/bin/

这样就可以直接在服务器上任意目录使用命令了。

2)集群目录创建并添加配置

创建 Redis 集群目录:

mkdir -p /opt/redis-cluster/nodes-{
   7001,7002}

执行命令后,在 /opt/redis-cluster 目录会创建 nodes-7001 和 nodes-7002 两个目录。

在上述两个目录下新建 redis.conf 文件,添加文件内容:

# 当前机器IP地址绑定设置port
bind 192.168.0.111
# redis 监听端口
port 7001 
# 使用 yes 启用守护进程
daemonize yes
# 当 Redis 以守护进程方式运行时,Redis 默认会把 pid
pidfile redis_7001.pid 
# 日志记录级别,共4个级别:debug、verbose、notice(默认)、warning
loglevel notice
# 日志目录
logfile "/opt/redis-cluster/nodes-7001/redis_7001.log" 
# 本地数据库存放目录
dir /opt/redis-cluster/nodes-7001/ 
# 保存节点配置,自动创建,自动更新
cluster-config-file nodes-7001.conf
# 通过upstart和systemd管理Redis守护进程,与具体的操作系统相关的
supervised no
# 每次更新操作后进行日志记录,默认:no
appendonly yes
# 开启集群模式
cluster-enabled yes
# 集群超时时间,节点超过这个时间没反应就断定是宕机
cluster-node-timeout 15000
# 多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
save 900 1
save 300 10
save 60 10000
# 本地数据库的名字
dbfilename dump.rdb
# 存储到本地文件开启压缩,默认:yes
rdbcompression yes
# 更新日志文件名
appendfilename "appendonly.aof"
# 指定更新日志条件:
# no: 等操作系统进行数据缓存同步到磁盘(快)
# always: 每次更新操作后手动调用 fsync() 将数据写磁盘(慢,安全)
# everysec
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的redis集群部署三主三从的docker-compose编排示例: ```yaml version: '3' services: redis-master-1: image: redis command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - "6379:6379" volumes: - redis-master-data-1:/data networks: - redis-net redis-master-2: image: redis command: redis-server --port 6380 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - "6380:6380" volumes: - redis-master-data-2:/data networks: - redis-net redis-master-3: image: redis command: redis-server --port 6381 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - "6381:6381" volumes: - redis-master-data-3:/data networks: - redis-net redis-slave-1: image: redis command: redis-server --port 6382 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --slaveof redis-master-1 6379 --appendonly yes volumes: - redis-slave-data-1:/data networks: - redis-net redis-slave-2: image: redis command: redis-server --port 6383 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --slaveof redis-master-2 6380 --appendonly yes volumes: - redis-slave-data-2:/data networks: - redis-net redis-slave-3: image: redis command: redis-server --port 6384 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --slaveof redis-master-3 6381 --appendonly yes volumes: - redis-slave-data-3:/data networks: - redis-net volumes: redis-master-data-1: redis-master-data-2: redis-master-data-3: redis-slave-data-1: redis-slave-data-2: redis-slave-data-3: networks: redis-net: ``` 在这个docker-compose文件中,我们定义了6个redis实例,其中3个是主节点,3个是从节点,并且每个节点都会在本地暴露对应的端口。我们还定义了一个名为redis-net的网络,以便在容器之间进行通信。通过这个docker-compose文件,我们可以使用`docker-compose up`命令启动这个redis集群
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值