1. 程式人生 > >【Redis】Redis叢集搭建...爬坑日記

【Redis】Redis叢集搭建...爬坑日記

文章目錄

前言

說好的更新大資料…

抱歉,加班去搞了個redis叢集…

我把搞redis踩的坑都給你們說一下…

BigData 和 微服務 後續更新

小編昨晚搞到晚上3點… 給點面子… 轉載請註明作者~

準備

寫程式碼跟炒菜差不多。先準備好所有的東西,知識,材料就像菜一樣,準備好了再去慢慢炒菜。一開始不好吃,練習練習著會越來越有味道。並且是帶著自己味道的菜。

  1. Redis-3.2.12 原始碼包

  2. Ruby 2.2.2以上

  3. RubyGems

  4. 三臺互通主機

爬坑準備

  1. centos-release-7-5.1804.el7.centos.x86_64.rpm

  2. wget-1.14-15.el7_4.1.x86_64.rpm

踩過的坑

小編Linux不太好…所以還沒深究太多,

這些坑只是表面現象。

很有可能是我自己沒配置好。

  1. 我安裝的centos7.4 minimal,沒安裝好…
  2. yum命令掛了…
  3. weg命令minimal裡面沒有…
  4. make install 編譯有坑…
  5. Node 192.168.31.60:7000 is not empty
  6. You need tcl 8.5 or newer in order to run the Redis test

Core - Code

  • 準備三臺主機

在這裡插入圖片描述

  • 建立好使用者redis,密碼(賬號,安裝路徑自己根據習慣)

    $ useradd redis
    $ passwd redis
    
  • 進入安裝目錄上傳redis原始碼包上去,並解壓

在這裡插入圖片描述

$ cd /home/redis
$ tar -zxvf redis-3.2.12.tar.gz
  • 建立資料夾存放配置等檔案(後面看配置檔案會一一對應這些資料夾)

    # 用於存放後面一些配置檔案
    $ mkdir local
    $ cd local
    $ mkdir redis-3.2.12
    $ cd redis-3.2.12
    # 建立..建立..建立..
    $ mkdir pid
    $ mkdir redis-cluster
    $ mkdir sbin
    
  • 編譯一下原始碼

    $ cd
    /home/redis/redis-3.2.12/src $ make install PREFIX=/home/redis/local/redis-3.2.12/sbin/
  • 建立配置檔案

    # 埠作為資料夾名字
    $ mkdir /home/redis/local/redis-3.2.12/redis-cluster/{7000,7001,7002}
    # 進入每個資料夾建立配置檔案 7000為例
    $ cd /home/redis/local/redis-3.2.12/redis-cluster/7000
    # 方法一自己建立redis.conf檔案 好處:沒那麼多註釋,容易看
    $ touch redis.conf
    $ vi redis.conf
    # 方法二cp官方給的配置檔案 (推薦) 好處: 防止自己配置錯,官方就是官方
    $ cp /home/redis/redis-3.2.12/redis.conf /home/redis/local/redis-3.2.12/redis-cluster/7000/
    $ vi /home/redis/local/redis-3.2.12/redis-cluster/7000/redis.conf
    # 在vim下用/找到配置然後修改
    
  • vi redis.conf 寫入(修改)以下內容

    # 埠7000,7001,7002,與目錄對應
    port 7000   
    #預設ip為127.0.0.1,需要改為其他節點機器可訪問的ip,否則建立叢集時無法訪問對應的埠,無法建立叢集
    bind 192.168.31.60
    #redis後臺執行
    daemonize yes   
    #開啟叢集
    cluster-enabled yes 
    #叢集的配置,配置檔案首次啟動自動生成 7000,7001,7002  
    cluster-config-file nodes_7000.conf  
    #請求超時,預設15秒,可自行設定
    cluster-node-timeout 8000  
    #開啟aof持久化模式,每次寫操作請求都追加到appendonly.aof檔案中
    appendonly yes  
    #每次有寫操作的時候都同步
    appendfsync always 
    #redis服務日誌
    logfile "/home/redis/local/redis-3.2.12/pid/redis.log"
    #pidfile檔案對應7000,7001,7002
    pidfile /home/redis/local/redis-3.2.12/pid/redis_7000.pid  
    
  • 編寫啟動節點(叢集模式)指令碼

    $ cd /home/redis/local/redis-3.2.12/sbin/bin/
    $ vi start-redis.sh
    
  • 指令碼內容

    for((i=0;i<3;i++)); 
    do /usr/local/bin/redis-server /home/redis/local/redis-3.2.12/redis-cluster/700$i/redis.conf; 
    done
    
  • 啟動指令碼

    $ sh start-redis.sh
    
  • 檢視程序和埠監聽

     #檢視是否啟動成功
    $ ps -ef | grep redis  
    #可以看到redis監聽埠
    $ netstat -tnlp | grep redis 
    

在這裡插入圖片描述 在這裡插入圖片描述

  • 另外兩臺主機
 # 建立使用者,設定密碼這些都一樣
 $ scp -r /home/redis/local [email protected]:/home/redis
 $ scp -r /home/redis/local [email protected]:/home/redis
  • 需要修改的地方 redis.conf
  # redis.conf 
  # 61 主機
  bind 192.168.31.61
  # 62 主機
  bind 192.168.31.61
  # 7000埠,檔名等對應修改
  • 啟動叢集
  # 在其中一臺主機 我在192.168.31.60
  $ /home/redis/redis-3.2.12/src/redis-trib.rb create --replicas 1 192.168.31.60:7000 192.168.31.60:7001 192.168.31.60:7002 192.168.31.61:7000 192.168.31.61:7001 192.168.31.61:7002 192.168.31.62:7000 192.168.31.62:7001 192.168.31.62:7002

在這裡插入圖片描述

爬坑日誌

稍後更新…

總結

遇到問題就查。哪怕不知道為什麼可以這樣解決,先記錄下來吧。

我的部落格為的是自己進步,也為遇到坑的人。

歡迎隨時交流。

linux作業系統多學點。

學習不是Ctrl+C+V

轉載註明一下,尊重下作者,謝謝