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>
以上是所有步驟,其中遇到了一些問題,後續再整理記錄