Centos6下Redis学习(零)——集群搭建

官方文档https://redis.io/topics/cluster-tutorial

1 基本概念

1.1 hash slot

Redis不使用一致性哈希算法,而使用一种称为哈希槽(hash slot)的方法,哈希值是用CRC16计算出的。Redis一共有16384个哈希槽,每个集群节点负责其中一部分哈希槽,这让增加、删除集群节点需要进行的变动非常小。例如,增加一个新节点,只要从每个原有节点拿出一部分哈希槽分配给新节点;删除一个节点,把这个节点上的哈希槽分配给其他节点就可以

1.2 主从模式

主从模式指的是每个哈希槽都在主节点和从节点上存放,在主节点失效后,从节点会被推举为主节点,继续提供数据

Redis集群无法提供强一致性,在某些条件下,集群向客户端确认已经写入的消息可能会丢失,这是由于从节点同步数据是异步的。客户端向主节点发送信息,主节点接收消息并向客户端发送确认,然后主节点将数据写入从节点。这样的设计是因为,如果等待所有从节点同步完成再发送确认消息,延迟会很长。因此在从节点没有同步数据之前主节点就崩溃的时候,数据就会丢失

另外一种丢失数据的情况发生在网络分区时,若一个主节点和客户端处在一个网络分区,另外的集群节点处于另一个不可达的分区,集群会认为主节点已经失效并选出新的主节点,这期间客户端向老主节点发送的数据就会丢失。因此Redis设计了一个参数node timeout,一旦主节点在超时时间内都无法感知到集群的大部分节点,它自身会进入错误状态并停止接收数据;同样地,当超时时间内某个节点都无法被集群感知,集群会认为这个节点已经失效

2 集群搭建

2.1 单点搭建

首先要运行几个Redis实例,然后搭建一个伪分布式的集群。我们直接在一台机器上的6个端口运行一个Redis,这是一个最小主从集群的配置

从官网下载你需要的Redis版本,我下的是这个http://download.redis.io/releases/redis-5.0.4.tar.gz

编译就可以运行了,直接执行redis-server以默认配置运行,会出现这样的画面

tar -xzvf redis-5.0.4.tar.gz  # 解压
cd redis-5.0.4
make  # 编译
./src/redis-server  # 试运行

这就证明src/redis-server这个文件可以用了

现在来创建6个Redis实例

绑定IP地址一定要修改,默认是127.0.0.1,只能在localhost上访问,远程是访问不了的,如果你很难确认是哪个IP就改成0.0.0.0,在所有IP上绑定

mkdir /your/work/path
cp src/redis-server /your/work/path  # 复制可执行程序
cp redis.conf /your/work/path  # 复制配置文件
cp src/redis-cli /your/work/path  # 复制客户端
cd /your/work/path
sed -i "s/daemonize no/daemonize yes/g" redis.conf  # 设为后台启动
sed -i "s/bind 127.0.0.1/bind 你的IP/g" redis.conf  # 更换绑定IP地址
sed -i "s/# requirepass foobared/requirepass 你想设置的密码/g" redis.conf  # 设置密码
sed -i "s/# masterauth <master-password>/masterauth 你想设置的密码/g" redis.conf  # 主从连接也需要密码,和上面的密码保持一致
sed -i "s/# cluster-enabled no/cluster-enabled yes/g" redis.conf  # 开启集群模式

for i in {7000..7005}  # 在端口7000到7005启动Redis
do
    mkdir $i
    cp redis.conf $i
    cp redis-server $i
    sed -i "s/6379/$i/g" $i/redis.conf
    cd $i
    ./redis-server redis.conf
    cd ../
done

可以看到六个Redis实例启动完毕

2.2 创建集群

创建集群是通过客户端发送命令的,回到redis编译后的目录,src/redis-cli即是客户端

./redis-cli --cluster create 你的IP:7000 你的IP:7001 你的IP:7002 你的IP:7003 你的IP:7004 你的IP:7005 --cluster-replicas 1 -a password

需要输入一个yes,最后会看到成功标志

现在用redis客户端访问一个master节点,查看节点情况

./redis-cli -h 你的IP -p 7000 -a 你的密码
info  # 查看信息

找到Replication这一项,看一下slave情况是否正常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值