ubuntu部署redis集羣
記錄第一次在linux(ubuntu)下部署redis集羣
環境準備
redis版本5.0.8
官網下載源碼並解壓
// redis 5.0.8
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar -zxvf redis-5.0.8.tar.gz
cd redis-5.0.8
make PREFIX=/home/slk/software/redis install
集羣部署
目錄創建及配置文件更改
首先創建6個目錄,用來部署6個節點,3主3從,端口號自定義,本文選用7000-7005
並在6個目錄中分別創建conf data log 3個目錄用來存放日誌等文件
將解壓的redis-5.0.8目錄下redis.conf文件分別複製到上面的6個目錄中,對應每個端口號修改內容
port 7000 # 修改端口號對應目錄的端口號
bind 0.0.0.0 # Ip綁定 綁定本機ip或者改爲 0.0.0.0--這個配置我沒有修改,使用默認的127.0.0.1
/home/weblogic/redis/redis-cluster/7000/data # 數據位置dir ./ 改爲>dir /home/weblogic/redis/redis-cluster/7000/data
cluster-enabled yes # 啓用集羣模式
cluster-config-file nodes-7000.conf # 集羣模式中節點的配置文件
cluster-node-timeout 5000 # 超時時間
appendonly yes # redis數據持久化開啓,開啓AOF模式
daemonize yes # 後臺運行
protected-mode no # 非保護模式,允許 Redis 遠程訪問
pidfile /home/weblogic/redis/redis-cluster/7000/data/redis_7000.pid # pidfile 需要隨着文件夾的不同調增
# 如需密碼則修改如下配置--這裏我並未設置密碼
requirepass "guoyuan" # 在:# requirepass foobared 下新增密碼配置
masterauth "密碼" # masterauth <master-password> 下新增密碼配置
使用redis-server工具啓動進程
# 注意6個進程都要啓動,這裏只列舉一個
/home/slk/software/redis/bin/redis-server /home/slk/software/redis/redis-cluster/7000/7000.conf
啓動後用ps命令查看進程是否啓動成功
注意:此時只是啓動了redis的6個實例,但並未創建集羣模式,使用redis-cli命令進入任意一個節點創建key會報錯
127.0.0.1:7005> set test 123
(error) CLUSTERDOWN Hash slot not served
原因是6個節點並未分配slot
create命令創建集羣
進程啓動成功後,使用redis-cli create命令創建集羣,注意安裝過程中需要輸入yes
/home/slk/software/redis/bin/redis-cli --cluster create 127.0.0.1:7000 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 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e 127.0.0.1:7000
slots:[0-5460] (5461 slots) master
M: c173c00989f0f64e390711116141f37d8039ea43 127.0.0.1:7001
slots:[5461-10922] (5462 slots) master
M: 42b09bed1ef637f70f21d7788d3ae4220d72eb18 127.0.0.1:7002
slots:[10923-16383] (5461 slots) master
S: c41bafa0bb3debd8cd37b70df15746bf8dbbb962 127.0.0.1:7003
replicates c173c00989f0f64e390711116141f37d8039ea43
S: 91e9af3e8fa8d4744c85ead86a80556818919707 127.0.0.1:7004
replicates 42b09bed1ef637f70f21d7788d3ae4220d72eb18
S: 678f12ca3af4d2b92f3bbb9f474c307487594ebc 127.0.0.1:7005
replicates 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e 127.0.0.1:7000
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 42b09bed1ef637f70f21d7788d3ae4220d72eb18 127.0.0.1:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: c41bafa0bb3debd8cd37b70df15746bf8dbbb962 127.0.0.1:7003
slots: (0 slots) slave
replicates c173c00989f0f64e390711116141f37d8039ea43
M: c173c00989f0f64e390711116141f37d8039ea43 127.0.0.1:7001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 91e9af3e8fa8d4744c85ead86a80556818919707 127.0.0.1:7004
slots: (0 slots) slave
replicates 42b09bed1ef637f70f21d7788d3ae4220d72eb18
S: 678f12ca3af4d2b92f3bbb9f474c307487594ebc 127.0.0.1:7005
slots: (0 slots) slave
replicates 8e6a3bac108e035bcbd7dd621bd64c0d0ba7432e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
至此,3主3從集羣的部署基本完成了。
問題積累
- redis-cli連接某個節點時只能查看當前節點的key信息