zoukankan      html  css  js  c++  java
  • redis集群配置

    redis集群安装配置

    1.redis集群从3.0开始支持,要让集群正常工作至少需要3个主节点。
    集群中任何一个实例都可以读写数据,集群中的节点超过半数失败
    整个集群就不可用,使用haproxy或者lvs实现负载均衡以及后端健康检测

    2.安装

    tar xf redis-3.0.2.tar.gz
    cd redis-3.0.2
    make
    make PREFIX=/usr/local/redis install
    mkdir /usr/local/redis/etc
    mkdir /usr/local/redis/var
    mkdir /usr/local/redis/var2
    cp redis.conf /usr/local/redis/etc cp src/redis-trib.rb /usr/local/redis/bin/

    3.配置集群(3台机器每台启动两个实例)(不支持设置密码认证)

    mv /usr/local/redis/etc/redis.conf /usr/local/redis/etc/redis.conf.ori
    cat >>/usr/local/redis/etc/redis_6379.conf<<EOF
    daemonize yes
    bind 192.168.1.221
    port 6379
    timeout 300
    loglevel notice
    logfile "/usr/local/redis/var/redis.log"
    databases 16
    dbfilename dump.rdb
    dir "/usr/local/redis/var"
    maxclients 10000 
    maxmemory 1024MB

    #开启日志记录,相当于MySQL的binlog

    appendonly yes
    appendfilename "appendonly.aof"
    appendfsync everysec

    #集群配置

    cluster-enabled yes

    #不需要创建集群自动更新

    cluster-config-file nodes_6379.conf
    cluster-node-timeout 5000
    EOF
    cat >>/usr/local/redis/etc/redis_6380.conf<<EOF
    daemonize yes
    bind 192.168.1.221
    port 6380
    timeout 300
    loglevel notice
    logfile "/usr/local/redis/var2/redis.log"
    databases 16
    dbfilename dump.rdb
    dir "/usr/local/redis/var2"
    #requirepass 123456
    #masterauth 123456
    maxclients 10000 
    maxmemory 1024MB
    #开启日志记录,相当于MySQL的binlog
    appendonly yes 
    appendfilename "appendonly.aof" 
    appendfsync everysec
    EOF

    #集群配置

    cluster-enabled yes

    #不需要创建集群自动更新

    cluster-config-file nodes_6380.conf
    cluster-node-timeout 5000
    EOF

    4.启动集群中的实例

    /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_6379.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_6380.conf

    #查看启动情况

    ps -ef|grep redis

    #连接测试

    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 quit
    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6380 quit
    /usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6379 quit
    /usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6380 quit
    /usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6379 quit
    /usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6380 quit

    #停止服务

    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 shutdown
    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6380 shutdown
    /usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6379 shutdown
    /usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6380 shutdown
    /usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6379 shutdown
    /usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6380 shutdown

    5.创建集群
    #安装ruby环境

    yum install -y ruby rubygems
    gem install redis

    #创建集群

    /usr/local/redis/bin/redis-trib.rb create --replicas 1 192.168.1.221:6379 192.168.1.221:6380 192.168.1.222:6379 192.168.1.222:6380 192.168.1.223:6379 192.168.1.223:6380

    #输入yes,则创建成功,系统会自动匹配主机,从机。

    #--replicas 1 手动可以自己添加从节点
    #代表为每个主节点创建1个从节点,在商用环境下,比如30台机器,可以配置为3,每个主节点有3个从。

    6.集群管理
    1.查看集群中机器ID,主从,及hash槽情况,可以查看集群中机器的情况

    /usr/local/redis/bin/redis-trib.rb check 192.168.1.221:6379 

    2.对数据重新分片:

    /usr/local/redis/bin/redis-trib.rb reshard 192.168.1.221:6379 

    3.列出集群中的所有主节点

    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 cluster nodes | grep master

    4.让某个主节点崩溃,测试故障转移

    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 debug segfault

    5.增加主节点到集群

    /usr/local/redis/bin/redis-trib.rb add-node 192.168.1.221:6381 192.168.1.221:6379

    #192.168.1.222:6381是新节点,192.168.1.221:6379是一个已在集群中的节点
    #需要注意的是此时新节点不能成为真正的主节点,需要进行重新分片才可以

    /usr/local/redis/bin/redis-trib.rb reshard 192.168.1.221:6381

    1).自动分片程序会询问移动几个hash槽,如果要保证数据的均匀,此时应该是16384/N,

    N代表包括当前主机的所有希望成为主节点的数量。
    2).然后会询问移动到哪个节点,输入新的主节点的id即可。
    3).会询问从哪些节点移动数据,此时可以选择某些节点的ID,也可以直接选择all,从所有主节点,这样数据就会均分。

    6.增加从节点到集群

    /usr/local/redis/bin/redis-trib.rb add-node --slave 192.168.1.222:6381 192.168.1.221:6379

    #此时没有指定从从节点的主节点,一般会自动选择一个,也可以指定主节点,如下:

    /usr/local/redis/bin/redis-trib.rb add-node --slave --master-id 6b45acde96e4225856c8652070e8c8edeec00c79 192.168.1.223:6381 192.168.1.221:6379

    #192.168.1.222:6381新加的节点
    #192.168.1.221:6379已在集群中的节点

    7.删除一个节点(删除后redis实例会被关闭)
    1).从节点删除:d598f4cf29cc4fea3616a00a0e707f71a7777cf1是指被删除的redis的ID

    /usr/local/redis/bin/redis-trib.rb del-node 192.168.1.223:6381 56cfd4a0d4631fdf046c20caac7e5f1a0fce3b39

    2).主节点删除,此时应该确保主节点数据为空,如果不为空,需要将该节点的数据重新分片到其他节点上

    /usr/local/redis/bin/redis-trib.rb reshard 192.168.1.223:6381 

    (被删除的主节点,先进行数据迁移,到其他主节点上)

    /usr/local/redis/bin/redis-trib.rb del-node 192.168.1.223:6381 791b834b1a5292bba236956c076849bb45a0ff17
    
    8.集群相关命令:通过redis-cli -c -p 的命令后进行查看

    CLUSTER NODES :集群信息,包括了节点ID,主从关系

    CLUSTER INFO:查看集群是否健康
    CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
    CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
    CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
    CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
    CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。

    /usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 CLUSTER NODES

    7.注意事项


    集群注意点:集群中多于一半的集群挂了,整个集群将对外停止服务。
    部署的时候,建议将主节点,设置为内存型,将从节点设置为固化存储型。
    主机挂了,从机会自动选举成为主机。

  • 相关阅读:
    “耐撕”团队 2016.3.25 站立会议
    “耐撕”团队 2016.03.24 站立会议
    “耐撕”团队 2016.3.22 站立会议
    windows环境下的git安装及使用
    词频统计(三)
    第二周作业
    Unity之GUI控件
    Lua的协同程序(coroutine)
    Lua与C++的交互
    Lua的元方法__newindex元方法
  • 原文地址:https://www.cnblogs.com/love19791125/p/5102182.html
Copyright © 2011-2022 走看看