1. 程式人生 > >redis單機叢集

redis單機叢集

總結一下當前redis叢集的使用以及一些踩過的坑

以下資源來源於網際網路,綜合於多個blog文章,由鄙人總結,希望給新人一個正確的指導
1、新建一個叢集目錄
mkdir redis_cluser
2、新建6個資料夾
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
3、將配置檔案redis.conf分別拷貝進這6個資料夾(作為節點配置)
cp redis.conf /home/liupan/redis_cluser/7001
cp redis.conf /home/liupan/redis_cluser/7002
cp redis.conf /home/liupan/redis_cluser/7003
cp redis.conf /home/liupan/redis_cluser/7004
cp redis.conf /home/liupan/redis_cluser/7005
cp redis.conf /home/liupan/redis_cluser/7006
4、分別修改這6個配置檔案
修改內容如下:
port 7001  //六個節點配置檔案分別是7001-7006
daemonize yes        //redis後臺執行
pidfile /var/run/redis_7001.pid   //pidfile檔案對應7001-7006
cluster-enabled yes   //開啟叢集
cluster-config-file nodes_7001.conf  //儲存節點配置,自動建立,自動更新對應7001-7006
cluster-node-timeout 5000    //叢集超時時間,節點超過這個時間沒反應就斷定是宕機
appendonly yes   //儲存方式,aof,將寫操作記錄儲存到日誌中
備註:
注意不要配置requirepass屬性,如果配置了則也需要配置masterauth屬性並且修改client.rb中的password屬性,後面會詳細講解


5、啟動各個節點 並檢視啟動狀況
[email protected]
:~/redis/redis/bin$ ./redis-server /home/liupan/redis_cluster/7001/redis.conf 
[email protected]:~/redis/redis/bin$ ./redis-server /home/liupan/redis_cluster/7002/redis.conf 
[email protected]:~/redis/redis/bin$ ./redis-server /home/liupan/redis_cluster/7003/redis.conf 
[email protected]:~/redis/redis/bin$ ./redis-server /home/liupan/redis_cluster/7004/redis.conf 
[email protected]
:~/redis/redis/bin$ ./redis-server /home/liupan/redis_cluster/7005/redis.conf 
[email protected]:~/redis/redis/bin$ ./redis-server /home/liupan/redis_cluster/7006/redis.conf 


[email protected]:~/redis/redis/bin$ ps -ef|grep redis
liupan     6865      1  0 15:44 ?        00:00:09 ./redis-server 127.0.0.1:7005 [cluster]
liupan     6870      1  0 15:44 ?        00:00:09 ./redis-server 127.0.0.1:7006 [cluster]
liupan     6875      1  0 15:44 ?        00:00:08 ./redis-server 127.0.0.1:7004 [cluster]
liupan     6880      1  0 15:44 ?        00:00:09 ./redis-server 127.0.0.1:7003 [cluster]
liupan     6887      1  0 15:44 ?        00:00:09 ./redis-server 127.0.0.1:7002 [cluster]
liupan     6894      1  0 15:44 ?        00:00:08 ./redis-server 127.0.0.1:7001 [cluster]
liupan     7063   2277  0 19:18 pts/0    00:00:00 grep --color=auto redis
[email protected]
:~/redis/redis/bin$ 


6、開啟叢集
由於redis叢集工具redis-trib.rb(安裝資料夾中可以找到)是ruby語言編寫的,所以需要安裝ruby編譯環境
sudo apt-get install ruby安裝ruby
sudo gem install redis安裝ruby-redis整合外掛
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 建立叢集
可能會遇到如下異常
ERR] Sorry, can't connect to node 127.0.0.1:7001
可能原因:
1)ruby版本過低(來源網路,未驗證)
2)配置檔案中bind 設定有問題(來源網路,未驗證),其實bind 屬性是針對多網絡卡計算機提供的,一般情況下127.0.0.1夠用,並不是大家理解的ip監控,實際應用中起不到客戶端過濾作用---來源網路
3)配置檔案中設定了requirepass,並且client.rb中沒有配置password,啟動叢集的時候,叢集工具由於沒有密碼,不能訪問節點,配置了password但沒有配置masterauth 也不行,啟動叢集的時候從伺服器沒有密碼,無法從主伺服器同步資料。由於主從伺服器的不固定性(選舉產生),所以masterauth要保持一致,requirepass也要保持一致,因為你要從叢集中的一個跳板機獲取整個叢集的資料,redis之間的通訊也依賴於一致的requirepass


7、配置redis叢集密碼
依次連線各個節點
./redis-cli -c -p 7001
config set masterauth passwd123 設定資料同步密碼,當叢集啟動時從節點會用該密碼從master主節點同步資料
config set requirepass passwd123 redis連線密碼
auth passwd123(主要是因為上一步設定了redis連線密碼,下面的rewrit命令需要驗證身份)
config rewrite 將命令設定的配置持久化到配置檔案中,具體可以開啟各個節點配置檔案觀察


8、配置了redis叢集密碼之後redis-trib.rb工具的各個命令都不會再起作用了,使用叢集工具訪問節點需要攜帶連線密碼,目前我不太清楚命令列是否可以攜帶密碼操作,故解決方案是把redis連線密碼配置到ruby環境的client.rb中
client.rb路徑
/var/lib/gems/2.3.0/gems/redis-4.0.1/lib/redis/client.rb
路徑不清楚的朋友可以用sudo find / -name 'client.rb'命令來查詢
[email protected]:~/redis/redis/bin$ sudo find / -name 'client.rb'
[sudo] liupan 的密碼: 
對不起,請重試。
[sudo] liupan 的密碼: 
find: ‘/run/user/1000/gvfs’: 許可權不夠
/var/lib/gems/2.3.0/gems/redis-4.0.1/lib/redis/client.rb
/usr/lib/ruby/2.3.0/xmlrpc/client.rb
注意查詢結果有兩個,你需要修改一個程式格式如下的client.rb


require_relative "errors"
require "socket"
require "cgi"


class Redis
  class Client


    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :password => "passwd123",
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :inherit_socket => false
    }


    attr_reader :options


    def scheme
      @options[:scheme]
    end


    def host
      @options[:host]
    end


    def port
      @options[:port]
    end


    def path
      @options[:path]
    end


    def read_timeout
      @options[:read_timeout]
    end


    def connect_timeout
      @options[:connect_timeout]
    end


    def timeout
      @options[:read_timeout]
    end


9、至此帶訪問控制的redis叢集部署成功


10、關閉redis叢集之後啟動節點再建立一次節點測試一些想法,又遇到一個坑爹的錯誤
[ERR] Node 127.0.0.1:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
當然叢集是沒有問題的,在啟動節點之後整個叢集好像自己就啟動了,不需要控制,有空再研究一下吧
[email protected]:~/redis/redis/bin$ ./redis-cli -c -p 7001 -a passwd123
127.0.0.1:7001> lpush l1 111 222  333
-> Redirected to slot [10293] located at 127.0.0.1:7002
(integer) 3
127.0.0.1:7002> 


備註一下,在叢集跳板機上操作整個叢集需要-a加密碼,如果只是單獨連線一個節點在cli客戶端使用auth 命令登入,是無法將資料存到其他節點的哦,其實你可以理解為cli客戶端中的auth只是登入了該節點的redis

相關推薦

redis單機叢集(轉)

一、應用場景介紹   本文主要是介紹Redis叢集在Linux環境下的安裝講解,其中主要包括在聯網的Linux環境和離線的Linux環境下是如何安裝的。因為大多數時候,公司的生產環境是在內網環境下,無外網,伺服器處於離線狀態(最近公司要上線專案,就是無外網環境的Linux,被離線安裝坑慘了,走了很多彎路,說

springboot2.x版本整合redis(單機/叢集)(使用lettuce)

在springboot1.x系列中,其中使用的是jedis,但是到了springboot2.x其中使用的是Lettuce。 此處springboot2.x,所以使用的是Lettuce。關於jedis跟lettuce的區別: Lettuce 和 Jedis 的定位都是Redis的client,所

Linux 實現 Redis 單機叢集模式

環境和基礎 過程 參考連結 本文在虛擬機器中完成 環境和基礎 單機測試使用了橋接模式,多機需要其他配置,虛擬機器聯網參考 VMware 中的

SpringBoot整合Redis(單機+叢集) —— 含Spring版附件文件

首先推薦一個文件: 介紹了redis單機、叢集的搭建,以及Spring專案中如何使用Jedis、JedisCluster進行redis操作,看不懂本文的看這個文件也行。 ---------------------------------------------------

redis單機叢集

總結一下當前redis叢集的使用以及一些踩過的坑 以下資源來源於網際網路,綜合於多個blog文章,由鄙人總結,希望給新人一個正確的指導 1、新建一個叢集目錄 mkdir redis_cluser 2、新建6個資料夾 mkdir 7001 mkdir 7002 mkdir 7

Redis單機叢集環境搭建

一、安裝單機版redis  1、可以自己去官網下載,當然也可以用課程提供的壓縮包 # yum install gcc # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz # tar -xzvf tcl8.6.1-s

開啟運維之路之第 9 篇——Redis單機多點叢集

Redis叢集 redis cluster是去中心化,去中介軟體的,也就是說,叢集中的每個節點都是平等的關係,都是對等的,每個節點都儲存各自的資料和整個叢集的狀態。每個節點都和其他所有節點連線,而且這些連線保持活躍,這樣就保證了我們只需要連線叢集中的任意一個節點,就可以獲取到其他節點的資料。

CentOS 7 安裝Redis單機版和叢集

Redis下載 http://download.redis.io/releases/redis-4.0.11.tar.gz 一、單機版搭建 1.上傳壓縮包到 /usr/download (我自定義放安裝包的目錄) 2.安裝gcc編譯環境,命令 yum install gcc-c++

通過jedis連線redis單機成功,使用redis客戶端可以連線叢集,但使用JedisCluster連線redis叢集一直報Could not get a resource from th

原因是這個地方以前我沒註釋redis.conf檔案中的bind 127.0.0.1 然後做叢集時使用的命令是: ./redis-trib.rb create –replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.

redis之20分鐘輕鬆搞定springCache快取(單機+叢集

redis之20分鐘輕鬆搞定springCache快取(單機+叢集) 原文地址:https://m.baidu.com/from=1013843a/bd_page_type=1/ssid=0/uid=0/pu=sz%401321_1002%2Cta%40utouch_2_7.0_2_7.3%2Cu

redis單機版和叢集版工具類

單機版叢集版共同實現的介面 package com.hr.common.redis; public interface JedisClient { String set(String key ,String value); String get(Stri

使用jedis客戶端連線redis,單機版和叢集

單機版 1.入門例項 @Test public void testJedis(){ //建立一個jedis物件,需要指定服務的ip和埠號 Jedis jedis=new Jedis("192.168.25.11",

redis之mybatis快取(單機+叢集

1. 快取的概念。 1.1. 什麼是快取(cache) 1) cache是高速緩衝儲存器,主要解決頻繁使用的資料快速訪問的問題。 2) 如果兩個硬體或者軟體之間的速度存在較大差異,主要使用快取協調兩者的速度差異。 1.2. 快取的分類 1) 作業系統磁碟快取:減

SpringBoot整合Redis單機/叢集

前言   前面redis弄了那麼多, 就是為了在專案中使用.    那這裡, 就分別來看一下, 單機版和叢集版在springboot中的使用吧.  在裡面, 我會同時貼出Jedis版, 作為比較. 單機版 1. pom.xml  <!-- https://

Redis單機叢集搭建(筆記)

單機部署 1.下載安裝包 2.解壓安裝 tar -xzvf redis-4.0.1.tar.gz cd redis-4.0.1/ make PREFIX=/usr/local/redis/ install 如果是一般使用者,前面加sudo 3.拷貝配置檔

redis單機叢集的安裝

2018年11月03日 13:59:32 Balaenoptera musculu 閱讀數:4 標籤: redis 叢集

Redis單機-主從-叢集

Redis官方網站非常好記:https://redis.io/,安裝也非常簡單。請到官網下載最新發布的穩定版本:http://download.redis.io/releases/redis-3.2.5.tar.gz   ----------------------------

redis單機版偽分散式叢集搭建

    繼上一篇redis單機伺服器搭建成功之後,按如下方式進行叢集搭建。    搭建一個最小的叢集需要6臺機器(由節點投票機制決定至少需要3臺主節點,另外為了高可用每個主節點至少要備一個從節點,所以總共需要6個節點。這裡6個節點全部設在一臺機上,通過埠號來分別。實現偽分散式

redis單機叢集部署

Redis安裝部署 1、Redis單機部署 1.1、安裝步驟 步驟1: 到Redis官網(https://redis.io/download)下載Redis,現在最新的版本為:4.0.2,將下載好的壓縮包上傳到伺服器當中。目錄如下: 步驟2: 解壓包,執行如下指令:

Redis單機安裝|叢集安裝|6臺伺服器 三主三備

此文章中需要的安裝檔案可以從我的網盤下載相同版本的安裝檔案 1、需要在六臺伺服器上面都安裝上redis,將redis-3.0.2.tar.gz分別上傳到六臺伺服器上面。    > tar xvf redis-3.0.2.tar.gz    > cd r