linux下redis集群的搭建

本篇博客将演示还ubuntu下redis集群的搭建。

redis-cluster架构图:

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.通过投票机制

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

至少3个节点,为了集群的高可用,为每一个节点增加一个备份机。(6台服务器)。

搭建伪分布式集群方案:在一台机器里面运行6个redis实例。端口需要不同(7001-7006)。分布式的搭建也可以参考。

1.先安装ruby:sudo apt-get install ruby, sudo apt-get install rubygems,gem install redis

2.创建目录,创建6个redis实例,每个实例运行在不同的端口(7001-7006)。

 2.1 hl@ubuntu:/usr/local$ sudo  mkdir redis-cluster

 2.2 复制之前搭建好的redis 并改名为redis01:hl@ubuntu:/usr/local$ sudo cp redis redis-cluster/redis01 -r

 2.3进入redis-cluster目录中cd到redis01的bin目录,删除数据文件,包括RDB和AOF文件:

hl@ubuntu:/usr/local$ sudo cd redis-cluster/redis01/bin

hl@ubuntu:/usr/local$ sudo rm -rf *.rdb *.aof

 2.4修改redis.conf如图

vim redis.conf     可以查找cluster功能,直接定位到

注销密码登录

绑定到服务器节点 

 

按ESC    :wq  

保存退出。

2.5创建6个redis实例

  • cd到redis-cluster目录
  • copy六份并分别命名为redis02,redis03,redis04,redis05,redis06

sudo cp -r redis01 redis02
sudo cp -r redis01 redis03 
sudo cp -r redis01 redis04 
sudo cp -r redis01 redis05 
sudo cp -r redis01 redis06 

2.6 cd到每一个实例的bin目录,修改每一个redis实例的端口分别改为7001-7006

sudo vim redis.conf    每个redis实例依次改成7001到7006

3.启动每个redis实例

sudo vim redis-cluster-start-all.sh

添加如下文字到文件中:

cd /usr/local/redis-cluster/redis01/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis02/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis03/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis04/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis05/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis06/bin

./redis-server redis.conf

修改文件:redis-cluster-start-all.sh 的权限,让其可执行。

chmod u+x redis-cluster-start-all.sh

4.启动

sudo ./redis-cluster-start-all.sh

5.使用ruby脚本搭建集群。 

到redis安装包的解压目录下(/redis-4.0.11/src),复制redis-trib.rb文件到redis-cluster目录中

6.执行创建

sudo ./redis-trib.rb create --replicas 1 192.168.37.129:7001 192.168.37.129:7002 192.168.37.129:7003 192.168.37.129:7004 192.168.37.129:7005 192.168.37.129:7006

 创建关闭集群的脚本

 

cd /usr/local/redis-cluster/redis01/bin

./redis-cli -p 7001 shutdown

 

cd /usr/local/redis-cluster/redis02/bin

./redis-cli -p 7002 shutdown

 

cd /usr/local/redis-cluster/redis03/bin

./redis-cli -p 7003 shutdown

 

cd /usr/local/redis-cluster/redis04/bin

./redis-cli -p 7004 shutdown

 

cd /usr/local/redis-cluster/redis05/bin

./redis-cli -p 7005 shutdown

 

cd /usr/local/redis-cluster/redis06/bin

./redis-cli -p 7006 shutdown

修改文件:redis-cluster-stop-all.sh 的权限,让其可执行。

chmod u+x redis-cluster-stop-all.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux Redis集群搭建是指在Linux操作系统上搭建Redis集群,以实现高可用性和负载均衡。Redis集群是由多个Redis节点组成的分布式系统,每个节点都可以存储数据,并且可以通过复制和分片等技术来实现数据的高可用性和负载均衡。要搭建Redis集群,需要先安装Redis,并配置节点之间的通信和数据同步。然后,使用Redis-trib工具来创建集群,并将数据分片到不同的节点上。最后,可以通过客户端来访问Redis集群,实现数据的读写和查询等操作。 ### 回答2: Redis是一种高性能的开源内存键值数据库,被广泛运用于数据缓存、消息传递、任务调度等领域。然而,在高并发业务场景下,单机Redis可能无法满足业务需求。为了解决这个问题,可以搭建Redis集群,通过分布式机制提高系统性能和可靠性。 本文主要讲述如何使用Docker Compose和Redis官方的Redis Cluster来搭建Redis集群的过程。具体步骤如下: 1.准备环境 首先需要安装Docker和Docker Compose,并保证版本相对较新。然后在本地创建一个目录,用于存放我们的Redis集群配置和数据文件。 2.创建Redis配置文件 在新建的目录中创建一个redis.conf文件,并在其中添加Redis节点的配置信息。其中,每个节点的配置文件应该保证以下信息一致:端口号、IP地址、集群名称、初始集群节点等。例如: # 节点1的配置 port 7000 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes # 节点2的配置 port 7001 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ...... 3.创建Docker Compose文件 在新建的目录中创建一个docker-compose.yml文件,用于定义Redis容器的构建和运行过程。其中,我们需要定义每个Redis节点的服务名称、容器信息、挂载目录、环境变量等信息。例如: version: '3' services: redis-1: image: redis command: redis-server /usr/local/etc/redis/redis.conf ports: - "7000:7000" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/redis-1:/data environment: - REDIS_PORT=7000 - REDIS_CLUSTER_ENABLED=true - REDIS_CLUSTER_CONFIG_FILE=/data/nodes.conf - REDIS_CLUSTER_NODE_TIMEOUT=5000 - REDIS_APPENDONLY=yes redis-2: image: redis command: redis-server /usr/local/etc/redis/redis.conf ports: - "7001:7001" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/redis-2:/data environment: - REDIS_PORT=7001 - REDIS_CLUSTER_ENABLED=true - REDIS_CLUSTER_CONFIG_FILE=/data/nodes.conf - REDIS_CLUSTER_NODE_TIMEOUT=5000 - REDIS_APPENDONLY=yes ...... 4.启动Redis集群 执行docker-compose up命令来启动Redis集群。在完成后,可以使用redis-cli命令来连接集群,进行测试和验证。 5.扩容Redis集群 如果需要扩容Redis集群,只需要在docker-compose.yml文件中添加新的Redis服务信息,并在原有Redis节点中执行cluster addslots命令进行分槽。例如: # 添加新的节点 services: redis-3: image: redis command: redis-server /usr/local/etc/redis/redis.conf ports: - "7002:7002" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/redis-3:/data environment: - REDIS_PORT=7002 - REDIS_CLUSTER_ENABLED=true - REDIS_CLUSTER_CONFIG_FILE=/data/nodes.conf - REDIS_CLUSTER_NODE_TIMEOUT=5000 - REDIS_APPENDONLY=yes # 在旧的节点中执行分槽命令 docker exec -it redis-1 redis-cli cluster addslots {16384...32767} cluster rebalance 以上就是利用Docker Compose和Redis官方的Redis Cluster搭建Redis集群的整个过程。通过分布式机制,可以将请求分摊到多个节点,提高系统性能和可靠性,为高并发业务场景下Redis提供了一种有效的解决方案。 ### 回答3: Redis作为一款高性能的Key-Value存储系统,被广泛应用于缓存、数据统计和聊天室等应用场景。在数据量较大的情况下,单机Redis性能无法满足需求,这时可以通过Redis集群搭建提高系统性能和容错能力。 搭建Redis集群一般需要满足以下条件: • Redis版本为3.0及以上 • 需要至少3个Redis节点 • Redis节点与Redis节点之间可以互相通信 搭建Redis集群主要分为以下四个步骤: 1. 安装Redis 首先需要在每个节点上安装Redis,可以通过apt或yum等方式安装。安装完成后,修改每个节点的配置文件redis.conf,添加以下配置项: # cluster-enabled yes # cluster-config-file nodes-6379.conf # cluster-node-timeout 5000 其中cluster-enabled用于启用Redis集群,cluster-config-file用于指定节点配置文件的存储路径,cluster-node-timeout用于指定节点互相通信的超时时间。 2. 创建Redis集群 在任意一个节点上,通过redis-cli工具创建Redis集群,可以使用如下命令: redis-cli --cluster create node1:6379 node2:6379 node3:6379 其中node1、node2、node3为每个节点的主机名,6379为Redis端口号。执行命令后,系统会自动执行数据迁移,并将集群信息存储在节点配置文件中。 3. 添加节点 如果需要扩容Redis集群,可以通过如下命令添加新的节点: redis-cli --cluster add-node new_node:6379 existing_node:6379 其中new_node为新节点主机名,6379为新节点端口号,existing_node为现有节点的主机名和端口号。添加节点后,系统会自动进行数据迁移和负载均衡。 4. 删除节点 如果需要删除Redis集群中的节点,可以通过如下命令删除: redis-cli --cluster del-node node:6379 其中node为需要删除的节点主机名,6379为节点端口号。删除节点后,系统会自动进行数据迁移和负载均衡。 总之,通过Redis集群搭建可以提高系统的性能和容错能力,但也需要注意节点之间的通信、数据迁移和负载均衡等问题,以保证集群的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值