1. 程式人生 > >Redis叢集安裝--叢集搭建及密碼配置遇到的一些問題

Redis叢集安裝--叢集搭建及密碼配置遇到的一些問題

網上關於Redis叢集安裝配置的文章很多,也比較全面,但每個人的需求不一樣,本文搭建一個配置密碼的Redis叢集過程其中遇到的一些問題

其中我見到的以這篇文章最詳細https://www.cnblogs.com/hello-daocaoren/p/8431902.html,很多詳細步驟與這篇文章裡面的大同小異,不想重新再寫一遍了,但這篇文章配置的沒有配置叢集密碼,本文就接以上文章記錄下配置帶密碼的叢集遇到的問題

根據上面連結提供的教程應該能夠配置一個不帶密碼的Redis叢集,上文章沒有提到要安裝perl,實際安裝是需要安裝perl,一般centos執行yum install perl即可安裝。

本文接著上面文章說,在已配置基礎叢集的情況下配置帶密碼的Redis叢集:

第一步:修改redis.conf配置檔案 在6個redis.conf檔案中配置以下密碼資訊,第一個masterauth主要用在slave同步master內容時,能過順利通過驗證,如果不配置slave將連不上master, requirepass用於配置本redis server的密碼。叢集中所有redis節點的masterauth和requirepass都應該配置成一樣的;

   masterauth 123456
   requirepass 123456 

第二步:修改client.rb新增密碼 第一步中設定了叢集中每個server的密碼,我們通過redis-trib.rb構造叢集時需要告知需要連線的redis的密碼是什麼,這個設定在client.rb中。如果不知道client.rb位置,可以通過 find / -name client.rb -print進行查詢,我的檔案位置在/usr/local/lib/ruby/gems/2.5.0/gems/redis-3.2.2/lib/redis/client.rb。

class Redis
  class Client

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

第三步: 關閉所有redis節點並清空環境 清空之前環境的目的主要是為了避免受之前環境影響,需要清理掉的檔案有: 1. appendonly.aof檔案,即操作日誌備份檔案,此檔案為了恢復資料; 2. nodes-7000.conf到nodes-7005.conf的配置檔案 3. redis_7000.pid到redis_7005.pid

第四步: 重啟所有redis 重啟所有的redis節點

./redis-server /app/redis-cluster/7000/redis.conf

// 確保所有節點啟動正常
root      6214     1  0 17:51 ?        00:00:00 ./redis-server 10.143.131.18:7000 [cluster]
root      6216     1  0 17:51 ?        00:00:00 ./redis-server 10.143.131.18:7001 [cluster]
root      6218     1  0 17:51 ?        00:00:00 ./redis-server 10.143.131.18:7002 [cluster]
root      6226     1  0 17:51 ?        00:00:00 ./redis-server 10.143.131.18:7003 [cluster]
root      6230     1  0 17:51 ?        00:00:00 ./redis-server 10.143.131.18:7004 [cluster]
root      6239     1  0 17:51 ?        00:00:00 ./redis-server 10.143.131.18:7005 [cluster]

第五步: 重新構造叢集 使用redis-trib.rb重新構造叢集,並輸入yes確認,等待構造分片成功

./redis-trib.rb create --replicas 1 192.168.80.130:7000 192.168.80.130:7001 192.168.80.130:7002 192.168.80.130:7003 192.168.80.130:7004 192.168.80.130:7005

第六步: 測試 使用以下命令,連線一個redis節點,並保證每個master節點都有轉發到,下面可看出,連的是192.168.80.130的7000節點,但是轉發到7001和7002的都成功了;更進一步連線所有的slave節點,觀察slave節點和master節點的資料是否保持了一致

./redis-cli -c -h 192.168.80.130 -a 123456 -p 7000

192.168.80.130:7000> set zz zz
-> Redirected to slot [14415] located at 10.143.131.18:7002
OK
192.168.80.130:7002> set yy yy
-> Redirected to slot [7551] located at 10.143.131.18:7001
OK
192.168.80.130:7001> set ww ww
OK
192.168.80.130:7001> 

以上是所有步驟,其中遇到了一些問題,後續再整理記錄