redis集群配置教程

技术文档网 2021-04-28
Redis集群

说明

  • redis支持集群最小的单位为6个实例,3个主节点,3个从节点
  • 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点
  • redis使用源码安装方式,安装目录redis-4.0.14

配置

# 192.168.0.1
cd redis-4.0.14
mkdir redis_cluster
cd redis_cluster
mkdir 7000 7001 7002
# 在文件夹 7000/7001/7002中分别创建文件redis.conf

其中,7000/redis.conf文件如下,7001和7002中redis.conf文件请修改相应端口

# redis后台运行
daemonize yes
# pidfile文件对应7000,7002,7003
pidfile /var/run/redis_7000.pid
# 数据文件存放位置对应7000,7001,7002,7003,7004,7005
dir /var/run/redis_cluster/7000/
# 默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.0.1
# 端口7000,7002,7003
port 7000
# 开启集群
cluster-enabled  yes
# 集群的配置, 配置文件首次启动自动生成
cluster-config-file nodes.conf
# 请求超时, 设置5秒够了
cluster-node-timeout 5000
# aof日志开启, 有需要就开启, 它会每次写操作都记录一条日志
appendonly yes

在 192.168.0.2 机器上重复上述步骤,然后分别在2台服务器上启动redis

# 启动
cd redis-4.0.14
./bin/redis-server redis_cluster/7000/redis.conf
./bin/redis-server redis_cluster/7001/redis.conf
./bin/redis-server redis_cluster/7002/redis.conf

测试服务是否正常启动

# 查看服务是否正常运行
ps -ef | grep redis
# 测试客户端是否可正常连接
./bin/redis-cli -h 192.168.0.1 -p 7000
192.168.0.1:7000> ping
PONG
# 停止redis运行
./bin/redis-cli -h 192.168.0.1 -p 7000 shutdown

创建集群

# redis安装目录src中redis-trib.rb完成集群创建,redis-trib.rb命令需要安装gem redis模块才能运行,gem redis需要Ruby环境
# 安装ruby
yum -y install ruby ruby-devel rubygems rpm-build
# gem 这个命令来安装 redis接口
gem install redis
cd redis-4.0.14
# 创建新集群命令:命令create
# --replicas 1 表示 自动为每一个master节点分配一个slave节点. 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)
# 其他参数用于创建新集群的实例的地址列表
./src/redis-trib.rb create --replicas 1 192.168.0.1:7000 192.168.0.1:7001 192.168.0.1:7002 192.168.0.2:7000 192.168.0.2:7001 192.168.0.2:7002

测试

# 集群客户端连接方式 redis-cli  -c
./bin/redis-cli -c -h 192.168.0.1 -p 7000
192.168.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 192.168.0.1:7002
OK
192.168.0.1:7002> get foo
"bar"
192.168.0.1:7002> keys *
1) "foo"
192.168.0.1:7002> exit
[root@node21 redis-cluster]# redis-cli -c -h 192.168.0.1 -p 7000
192.168.0.1:7000> keys *
(empty list or set)
192.168.0.1:7000> get foo
-> Redirected to slot [12182] located at 192.168.0.1:7002
"bar"
192.168.0.1:7002>

其他常用命令

# 查看集群情况
其中,ip代表服务器地址,port为服务器端口号
# 检查集群状态
redis-trib.rb check ip:port
# 使用-c进入集群命令模式
redis-cli -c -h ip -p port
# 重新分配权重
redis-trib.rb rebalance ip:port --auto-weights
# 使用add-node命令将新节点的地址指定为第一个参数,并将集群中随机存在节点的地址指定为第二个参数,redis-trib在运行之前也会检查集群的状态。
redis-trib.rb add-node ip:port(新增节点) ip:port(现有效节点)
 # 删除master节点之前首先要使用reshard移除master的全部slot
redis-trib.rb del-node ip:port id(目标节点的id)
# 重新划分slot
redis-trib.rb reshard ip:port
# 将master转换为salve
cluster replicate master-id # 转换前6380端必须没有slots

参考

相关文章

  1. redis-setnx-实现原理

    setGenericCommand 方法实现 //setGenericCommand()函数是以下命令: SET, SETEX, PSETEX, SETNX.的最底层实现 //flags 可以是NX

  2. Linux安装redis并配置成service系统服务

    前言 写作这一篇文章纯粹的目的就是快速上手redis,人的精力有限,将你的精力花在学习知识上,而不是安装。 我就是喜欢简单的命令管理 Linux 上的程序,信奉傻瓜式操作是流行的前提。当你希望弄懂为什

  3. Zookeeper、Redis及其它各种中间件的集群方式

    Zookeeper 1、Server分成Leader、Follower和Observer三种角色,Leader通过选举产生,Observer不参与投票。2、客户端可以连接任何一个Zookeeper实例

  4. redis集群配置教程

    Redis集群 说明 redis支持集群最小的单位为6个实例,3个主节点,3个从节点 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点 redis使用源码安装方

  5. Redis源码阅读笔记之链表

    链表结构 链表在Redis中应用广泛,其中列表键的底层实现之一为链表,当列表键包含的元素太多或者其值为较长的内容时会使用链表来实现,比如范围查询: LRANGE nums 0 100。 除了列表键,r

随机推荐

  1. redis-setnx-实现原理

    setGenericCommand 方法实现 //setGenericCommand()函数是以下命令: SET, SETEX, PSETEX, SETNX.的最底层实现 //flags 可以是NX

  2. Linux安装redis并配置成service系统服务

    前言 写作这一篇文章纯粹的目的就是快速上手redis,人的精力有限,将你的精力花在学习知识上,而不是安装。 我就是喜欢简单的命令管理 Linux 上的程序,信奉傻瓜式操作是流行的前提。当你希望弄懂为什

  3. Zookeeper、Redis及其它各种中间件的集群方式

    Zookeeper 1、Server分成Leader、Follower和Observer三种角色,Leader通过选举产生,Observer不参与投票。2、客户端可以连接任何一个Zookeeper实例

  4. redis集群配置教程

    Redis集群 说明 redis支持集群最小的单位为6个实例,3个主节点,3个从节点 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点 redis使用源码安装方

  5. Redis源码阅读笔记之链表

    链表结构 链表在Redis中应用广泛,其中列表键的底层实现之一为链表,当列表键包含的元素太多或者其值为较长的内容时会使用链表来实现,比如范围查询: LRANGE nums 0 100。 除了列表键,r