zoukankan      html  css  js  c++  java
  • linux运维、架构之路-redis集群

    一、介绍

               redis cluster 3.0之后的功能,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。

    二、安装部署

    1、环境

    [root@redsi ~]# cat /etc/redhat-release 
    CentOS release 6.9 (Final)
    [root@redsi ~]# uname -r
    2.6.32-696.el6.x86_64
    [root@redsi ~]# /etc/init.d/iptables status
    iptables: Firewall is not running.
    [root@redsi ~]# getenforce 
    Disabled
    [root@redsi ~]# hostname -I
    10.0.0.2

    2、redis cluster是基于上一篇博文已经安装好的redis

    ①创建集群节点目录

    mkdir /usr/local/redis-cluster/{9001..9006}/data -p
    [root@redsi redis-cluster]# ll /usr/local/redis-cluster/
    total 28
    drwxr-xr-x 5 root root 4096 2018-05-16 17:17 9001
    drwxr-xr-x 5 root root 4096 2018-05-16 14:23 9002
    drwxr-xr-x 5 root root 4096 2018-05-16 14:24 9003
    drwxr-xr-x 5 root root 4096 2018-05-16 14:28 9004
    drwxr-xr-x 5 root root 4096 2018-05-16 14:30 9005
    drwxr-xr-x 5 root root 4096 2018-05-16 14:34 9006
    drwxr-xr-x 2 root root 4096 2018-05-16 14:54 bin

    ②创建命令目录

    mkdir /usr/local/redis-cluster/bin -p
    cd /server/tools/redis-3.2.8/src
    cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

    ③创建一个redis实例

    cp -a /usr/local/redis/* /usr/local/redis-cluster/9001/

    修改redis.conf配置文件

    port 9001                                #每个节点的端口号
    daemonize yes
    bind 10.0.0.2                            #绑定当前机器 IP
    dir /usr/local/redis-cluster/9001/data/  #数据文件存放位置
    pidfile /var/run/redis_9001.pid          #pid 9001和port要对应
    cluster-enabled yes                      #启动集群模式
    cluster-config-file nodes9001.conf       #9001和port要对应
    cluster-node-timeout 15000
    appendonly yes

    ④再创建其它5个redis实例

    cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002
    cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
    cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
    cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
    cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006

    再依次修改redis.conf配置文件

    port 9001                                #修改以下4处,依次改为9002、9003、9004、9005、9006
    dir /usr/local/redis-cluster/9001/data/  
    pidfile /var/run/redis_9001.pid         
    cluster-config-file nodes9001.conf       

    ###到此为止基础环境已准备好###

    三、安装完ruby环境

    ###直接执行gem install redis时,报错###

    gem install redis  
        ERROR:  Error installing redis:  
                redis requires Ruby version >= 2.2.2.  

    ①安装安装RVM

    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3  
    curl -L get.rvm.io | bash -s stable  
    find / -name rvm -print  

    ②查看rvm库中已知的ruby版本

    rvm list known 

    ③安装一个ruby版本

    rvm install 2.3.3 

    ④使用一个ruby版本

    rvm use 2.3.3  

    ⑤设置默认版本

    rvm use 2.3.3 --default 

    ⑥卸载一个已知版本

    rvm remove 2.0.0

    ⑦安装redis

    gem install redis 

    ⑧查看ruby版本

    ruby --version 

    四、集群搭建

    1、启动六个节点的redis

    redis-server /usr/local/redis-cluster/9001/redis.conf 
    redis-server /usr/local/redis-cluster/9002/redis.conf 
    redis-server /usr/local/redis-cluster/9003/redis.conf 
    redis-server /usr/local/redis-cluster/9004/redis.conf 
    redis-server /usr/local/redis-cluster/9005/redis.conf 
    redis-server /usr/local/redis-cluster/9006/redis.conf
    ###查看进程###
    [root@redsi ~]# ps aux|grep redis
    root       2441  0.1  0.9 135592  9788 ?        Ssl  08:28   0:21 redis-server 10.0.0.2:9001 [cluster]                
    root       2445  0.1  0.9 135592  9800 ?        Ssl  08:29   0:20 redis-server 10.0.0.2:9002 [cluster]                
    root       2449  0.1  0.9 135592  9792 ?        Ssl  08:29   0:21 redis-server 10.0.0.2:9003 [cluster]                
    root       2453  0.1  0.7 133544  7728 ?        Ssl  08:29   0:21 redis-server 10.0.0.2:9004 [cluster]                
    root       2457  0.1  0.9 135592  9808 ?        Ssl  08:29   0:20 redis-server 10.0.0.2:9005 [cluster]                
    root       2461  0.1  0.9 135592  9784 ?        Ssl  08:29   0:20 redis-server 10.0.0.2:9006 [cluster]

    2、创建集群

    /usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 10.0.0.2:9001 10.0.0.2:9002 10.0.0.2:9003 10.0.0.2:9004 10.0.0.2:9005 10.0.0.2:9006

    ###命令说明###

    调用ruby命令来进行创建集群,--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及solt的大小,因为在Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

    ###输入yes后开始创建集群###

    ###如上图所示,集群创建成功###

    3、集群验证

    ①使用客户端命令连接集群节点

    [root@redsi ~]# redis-cli -h 10.0.0.2 -c -p 9001
    10.0.0.2:9001> set name lulu
    -> Redirected to slot [5798] located at 10.0.0.2:9002  #自动连接到了9002节点,这是集群的一个数据分配特性
    OK
    10.0.0.2:9002> get name
    "lulu"

    ②连接其它节点验证

    [root@redsi ~]# redis-cli -h 10.0.0.2 -c -p 9003
    10.0.0.2:9003> get name
    -> Redirected to slot [5798] located at 10.0.0.2:9002
    "lulu"

    ###至此,redis集群搭建完毕###

    成功最有效的方法就是向有经验的人学习!
  • 相关阅读:
    java-String类
    多线程的细节
    java-多线程的练习----妖,等待唤醒,代码重构,lock到condition
    javascript函数的声明和调用
    表单
    java-多线程的入门_进阶总结
    uboot命令
    u-boot移植 III
    u-boot移植 II
    汇编词典
  • 原文地址:https://www.cnblogs.com/yanxinjiang/p/9050859.html
Copyright © 2011-2022 走看看