Redis3.0.1集群环境搭建

 

2015年06月04日 16:12:29 雨花山人 阅读数:1315

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tzszhzx/article/details/46363353

需要安装(ruby-2.2.2.tar.gz/rubygems/zlib/openssl/redis-3.2.1.gem)

 

      1、准备工作:需要安装ruby,通过源代码安装

      tar -zxvf ruby-2.2.2.tar.gz

      mkdir -p /usr/local/ruby

      cd ruby-2.2.2 进入到解压包下面

      ./configure -prefix=/usr/local/ruby

      make && make install

      安装完毕后,vi /etc/profile  追加

      export PATH=/usr/local/ruby/bin:$PATH

      执行

      source /etc/profile

 

       2、执行ruby -v 可以查看是否安装成功

       

       3、安装rubygems

        tar -zxvf rubygems-2.4.7.tgz

        cd rubygems-2.4.7

        ruby setup.rb

        执行gem -v 可以查看是否安装成功

 

       4、安装zlib

       tar -zxvf zlib-1.2.6.tar.gz

       cd zlib-1.2.6

       ./configure

       make && make install

 

      5、安装 openssl

        tar -zxvf openssl-1.0.1k.tar

        cd openssl-1.0.1k

        ./config

        make && make install

 

     6、安装rbuy 与 redis的接口(将文件redis-3.2.1.gem上传到/soft目录下)

        gem install -l /soft/redis-3.2.1.gem

        (如果执行本操作报错,此时需要将ruby重新安装编译,即第1步需要重新执行)

       

 

 

    1.要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点。

      这里创建3个主节点、3个从节点(大型系统可以使一主多从),IP规划

      192.168.62.153 7001   主

      192.168.62.153 7002   从

      192.168.62.154 7003   主

      192.168.62.154 7004   从

      192.168.62.155 7005   主

      192.168.62.155 7006   从

      

    2.将安装包上传到各个服务器上,在所有主从节点下解压后执行

      #make

      #make install

    3、创建集群所需要的目录(7001/7002在153机上执行,7003/7004在154机器上,7005/7006在154机器上)

       在真实的商用环境上,一般在6台不同的机器上执行。

      mkdir -p /usr.local/cluster

      cd  /usr.local/cluster

      mkdir 7001

      mkdir 7002

      mkdir 7003

      mkdir 7004

      mkdir 7005

      mkdir 7006

  4、选择其中一台机器修改配置文件(以153为例子)

       cd /soft/redis-cluster-153.master/

       vi redis.conf

      修改文件中的如下内容

     port 7001

     daemonize yes
     cluster-enabled yes
     cluster-config-file nodes.conf
     cluster-node-timeout 5000
     appendonly yes

     ##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7001/7002/7003/7004/7005/7006目录下面

     cp redis.conf /usr.local/cluster/7001

     cp redis.conf /usr.local/cluster/7002
     ##注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称

  5、以153机器为例子,在153上启动2个redis服务,

      cd /usr.local/cluster/7001

      redis-server redis.conf

      cd /usr.local/cluster/7002

      redis-server redis.conf

      此时,在153机器上启动了2个redis服务

      root     25164     1  0 23:27 ?        00:00:00 redis-server *:7001 [cluster]

      root     25170     1  0 23:28 ?        00:00:00 redis-server *:7002 [cluster]   6、在其他机器上重复执行3-4-5的操作.

     最终将redis集群中的所有节点全部启动

       root     25164     1  0 23:27 ?        00:00:00 redis-server *:7001 [cluster]

       root     25170     1  0 23:28 ?        00:00:00 redis-server *:7002 [cluster]

       root     25395     1  3 23:36 ?        00:00:00 redis-server *:7003 [cluster]

       root     25403     1  0 23:36 ?        00:00:00 redis-server *:7004 [cluster]

       root     26584     1  1 23:42 ?        00:00:00 redis-server *:7005 [cluster]
       root     26588     1  0 23:42 ?        00:00:00 redis-server *:7006 [cluster]

   7、创建集群,在任意一台服务器上执行,以153为例

       # cd /soft/redis-cluster-153.master/src/

       # ./redis-trib.rb  create --replicas 1 192.168.62.153:7001 192.168.62.153:7002 192.168.62.154:7003 192.168.62.154:7004 192.168.62.155:7005 192.168.62.155:7006

 

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

 

 

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

    8、查看集群中机器ID、主从、及hash槽情况:./redis-trib.rb check  192.168.62.155:7005 可以查看集群中机器的情况。

         对数据重新分片: ./redis-trib.rb reshard 192.168.62.154:7004   

         列出集群中的所有主节点:redis-cli -p 7001 cluster nodes | grep master

         让某个主节点崩溃,测试故障转移:redis-cli -h 192.168.62.154 -p 7003 debug segfault

 

      9、增加主节点到集群

         加入新节点:   ./redis-trib.rb add-node 192.168.62.152:7007 192.168.62.153:7001

                                                            7007是新机器,7001是集群中的某一台机器

         需要注意的是此时新节点不能成为真正的主节点,需要进行重新分片才可以。

                             ./redis-trib.rb reshard 192.168.62.152:7007

                      

          1)、自动分片程序会询问移动几个hash槽,如果要保证数据的均匀,此时应该是16384/N,
                   N代表包括当前主机的所有希望成为主节点的数量。

          2)、会询问从哪些节点移动数据,此时可以选择某些节点的ID,也可以直接选择all,从所有主节点,这样数据就会均分。

      10、增加从节点到集群

             ./redis-trib.rb add-node --slave 192.168.62.152:7008 192.168.62.153:7001

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

             ./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 192.168.62.152:7008 192.168.62.153:7001

 

      11、删除一个节点:

            1)、从节点删除:d598f4cf29cc4fea3616a00a0e707f71a7777cf1是指被删除的redis的ID

                  ./redis-trib.rb del-node 192.168.62.153:7001 d598f4cf29cc4fea3616a00a0e707f71a7777cf1

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

                  执行./redis-trib.rb reshard 192.168.62.152:7007 (被删除的主节点,先进行数据迁移,到其他主节点上)

              

 

   12、连接集群中的机器命令

         redis-cli -c -h 192.168.62.153 -p 7001
 

    13、修改集群:redis-trib.rb fix

 

    14、集群相关命令:通过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 目前包含的键值对数量。  

 

   集群注意点:集群中低于一半的集群挂了,整个集群将对外停止服务。

                       部署的时候,建议将主节点,设置为内存型,将从节点设置为固化存储型。

                       主机挂了,从机会自动选举成为主机。

   部署方式 : 主(哈希槽) ------- 主(哈希槽)  ------- 主(哈希槽)

                 从-从-从             从-从-从                从-从-从

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值