部署和管理redis集群

一创建redis 集群

在51-58主机上运行redis服务,要求如下

在51-58主机上运行redis服务并设置的ip地址和端口:要求
可以使用/etc/init.d/redis_6379 脚本停止 启动服务
redisA     192.168.4.51     6351
redisB     192.168.4.52     6352
redisC     192.168.4.53    6353
redisD     192.168.4.54    6354
redisE  192.168.4.55    6355
redisF  192.168.4.56    6356
redisG  192.168.4.57    6357
redisH  192.168.4.58    6358

在51-56主机上执行以下操作

   ]# /etc/init.d/redis_6379 stop
    ]#rm -rf  /var/lib/redis/6379/*           数据库目录下没有数据
    ]#   /etc/init.d/redis_6379 start
   ]#    netstat  -anptul  | grep redis-server

 

        1.1  部署管理主机(管理集群)

[root@host56 soft]# scp -r redis-cluster/ [email protected]:/root/
[root@host51 ~]#  cd redis-cluster/

                1装包   (部署ruby脚本运行环境)

[root@host51 src]# yum  -y install  ruby

[root@host51 src]# yum  -y install  rubygems      # 提供gem 装包工具

[root@host51 src]#  cd redis-cluster/

[root@host51 src]#  yum  -y install  ruby-devel-2.0.0.648-30.el7.x86_64.rpm 
[root@host51 src]#   gem  install redis-3.2.1.gem 
[root@host51 src]#  cd redis-4.0.8/
[root@host51 src]#  cd src/
[root@host51 src]# ls  *.rb
redis-trib.rb
[root@host51 src]# echo $PATH
/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@host51 src]#  mkdir /root/bin
[root@host51 src]# cp redis-trib.rb /root/bin/redis-trib   #将redis-trib.rb复制到/root/bin/并重命名/redis-trib
[root@host51 src]#  chmod  +x /root/bin/redis-trib

[root@host51 src]# redis-trib  --help    

                     2 创建管理集群

                     1.2    在管理主机上执行:

                       1创建命令

         [root@host51 src]# redis-trib  create --replicate 1   \  --replicate 1 自动为每一个master节点分配一个slave 节点

192.168.4.51:6351 192.168.4.52:6352 192.168.4.53:6353      \   y一般选这3台为主的

192.168.4.54:6354 192.168.4.55:6355 192.168.4.56:6356

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

2查看集群信息

2.1连接任意一台redis服务其查看集群

192.168.4.52:6352> cluster info
192.168.4.52:6352> cluster nodes
2.2 在管理主机上使用脚本查看

[root@host51 src]# redis-trib info 192.168.4.54:6354
[root@host51 src]# redis-trib check 192.168.4.54:6354   #  查看详细信息

如果创建不成功,首先查看服务有没有起来

然后查看日志[root@host53 ~]# cat  /var/log/redis_6379.log 

                       3 在客户端访问集群

    redis-cli   -c  -h   -p    #   -c 表示连接集群

   redis-cli  -c -h  192.168.4.53 -p6353     #连接到 192.168.4.53 这个redis集群 

    50]# redis-cli  -c -hip地址  -p端口 
                ]# redis-cli -c  -h 192.168.4.55  -p 6355
                > set  x  101
                > set  y  102
                > set  z  102
                50]# redis-cli -c  -h 192.168.4.52  -p 6352
                > keys *
                > get x
                > get y

                         4 测试集群功能

 redis-cli  -c -h  192.168.4.53 -p6353    # 往里写数据,不一定写到主机53里面,可能写到其他库里面,在任何一个库里面都可以查到所写到的变量

                  4.1 集群中的主服务器宕机后,对应的从服务器            会自动升级为主库

                  4.2 宕机的主服务器启后,自动配置为 当前主建     服务器的从库 并自动同步宕机期间的数据

                       5 集群存取数据工作原理

二 管理redis 集群

            4.1 向集群中添加新的redis 服务其

  1.添加master角色redis服务机器1 192.168.4.57

1.1 在192.168.4.57运行redis服务,且启用集群功能
            1.2 在管理主机192.168.4.51 添加master角色服务器
            51 ~]# redis-trib add-node 192.168.4.57:6357  192.168.4.51:6351
            1.3 数据分片
            51 ~]# redis-trib reshard 192.168.4.51:6351
            51 ~]# redis-trib check 192.168.4.51:6351

[root@host51 src]# redis-trib  add-node 192.168.4.57:6357 192.168.4.51:6351  在57主机添加为master角色redis服务机器
[root@host51 src]# redis-trib  reshard 192.168.4.51:6351              #   分片   ,192.168.4.51:6351为任意集群中的一个主机,表示从这个集群移出hash 槽值

                                                                                                         

>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4096      #移出的个数
What is the receiving node ID? fcd7b6c5b87f6d4a6d166523e1e2057e433d4031          接收id 是主机192.168.4. 57
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1:all                         #从所有主库 中移出对应的槽值个数

Ready to move 4096 slots.
  Source nodes:
    M: fac5e1b5ef19ae83babe6fe4c5b064a74a4557fa 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
    M: 8e53221a011e1a34d693d59063233a82e01e1539 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
    M: fa0e1507de875d78587a2e07cfe4beb696989568 192.168.4.54:6354
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
  Destination node:
    M: fcd7b6c5b87f6d4a6d166523e1e2057e433d4031 192.168.4.57:6357
   slots: (0 slots) master
   0 additional replica(s)
 

           2添加slave 角色redis 服务         如果没有指定master,则选拥有从库最少的主库,如果主库中的从库数量相等则随机选择

            2.1 192.168.4.58 运行redis 服务 且启用了集群配置

           2.2 在管理主机上添加slave 角色服务器

[root@host51 src]# redis-trib add-node --slave 192.168.4.58:6358 192.168.4.51:6351    #  192.168.4.51:6351 可以是任意的集群    添加192.168.4.58:6358这个从库

[OK] All 16384 slots covered.
Automatically selected master 192.168.4.57:6357
>>> Send CLUSTER MEET to node 192.168.4.58:6358 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 192.168.4.57:6357.
[OK] New node added correctly.

 

[root@host51 src]# redis-trib check 192.168.4.51:6351    #  查看redis 集群
 

如果redis 主从有一组挂掉了,则整个redis 集群则坏掉了 

            4.2 把redis 服务器移出集群   (先移除从库再移除主库)

                        1移出 slave 角色redis 服务其

[root@host51 src]# redis-trib  del-node 192.168.4.51:6351 692866bb12675bd908947e2bb36146d75b4b399b  (需要移除的ID)

#192.168.4.51:6351(集群中任意一个主机)  
>>> Removing node 692866bb12675bd908947e2bb36146d75b4b399b from cluster 192.168.4.51:6351
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

]#redis-trib check 192.168.4.51:6351

                      2移出master 角色redis 服务器

在管理主机51上

[root@host51 src]# redis-trib  reshard 192.168.4.51:6351      #重新分片释放占用的hash 槽

指定移出hash 槽 个数

指定接受hash 槽主机id

指定移出hash 槽的主机id 

[root@host51 src]# redis-trib del-node 192.168.4.51:6351   fcd7b6c5b87f6d4a6d166523e1e2057e433d4031
[root@host51 src]# redis-trib  info 192.168.4.51:6351
[root@host51 src]# redis-trib  check 192.168.4.51:6351

   4.3  把移出redis 服务在添加到集群里

在redis 服务机器的主机操作

             1 启动redis 服务

[root@host58 ~]# /etc/init.d/redis_6379 start
 2. 重置集群服务信息

[root@host58 ~]#  redis-cli  -h 192.168.4.58 -p 6358      
192.168.4.58:6358> cluster reset   # 重置集群信息      也可以通过[root@host578~]# rm -rf /var/lib/redis/6379/* 这样重置
OK
192.168.4.58:6358>  keys *      
(empty list or set)
192.168.4.58:6358>   flushall     #删除所有的数据

192.168.4.58:6358> save        #  数据从内存里存到硬盘里
  

在管理主机上操作

          3 在管理主机上添加redis 服务其

51 ~]# redis-trib add-node ip:port 192.168.4.51:6351

[root@host51 src]#   redis-trib  add-node 192.168.4.58:6358 192.168.4.51:6351  # 把192.168.4.58:6358
[root@host51 src]# redis-trib  check 192.168.4.51:51
[root@host51 src]# redis-trib  info  192.168.4.51:51

4.4 把集群主机恢复为独立的redis 独立的数据库

[root@host51 src]# /etc/init.d/redis_6379  stop
[root@host51 src]# rm -rf  /var/lib/redis/6379/*
[root@host51 src]#    vim  /etc/redis/6379.conf 

#cluster-enabled yes                            取消集群服务
#cluster-config-file nodes-63XX.conf
#cluster-node-timeout 5000
 

猜你喜欢

转载自blog.csdn.net/weixin_43669585/article/details/90437148