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集群搭建完毕###

    成功最有效的方法就是向有经验的人学习!
  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/yanxinjiang/p/9050859.html
Copyright © 2011-2022 走看看