redis集群部署和搭建


 

  • redis集群部署和搭建

### 安裝集群插件
yum install -y ruby rubygems -y 
gem sources -l
gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources --remove http://rubygems.org/
gem install redis -v 3.3.3
gem sources  -l

 

集群節點准備

mkdir /data/700{0..5}
cd /data/7000
​
vim redis.conf
port 7000
daemonize yes
pidfile "/data/7000/redis.pid"
loglevel notice
logfile "/data/7000/redis.log"
dbfilename "dump.rdb"
dir "/data/7000"
protected-mode no
cluster-enabled yes                ### 是否打開集群功能
cluster-config-file nodes.conf     ### 集群的存放配置文件
cluster-node-timeout 5000          ### 集群的請求超時時間
appendonly yes                     ###  開啟aof持久化功能
vim /data/7001/redis.conf
port 7001
daemonize yes
pidfile "/data/7001/redis.pid"
loglevel notice
logfile "/data/7001/redis.log"
dbfilename "dump.rdb"
dir "/data/7001"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
vim /data/7002/redis.conf
port 7002
daemonize yes
pidfile "/data/7002/redis.pid"
loglevel notice
logfile "/data/7002/redis.log"
dbfilename "dump.rdb"
dir "/data/7002"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
vim /data/7003/redis.conf
port 7003
daemonize yes
pidfile "/data/7003/redis.pid"
loglevel notice
logfile "/data/7003/redis.log"
dbfilename "dump.rdb"
dir "/data/7003"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
vim /data/7004/redis.conf
port 7004
daemonize yes
pidfile "/data/7004/redis.pid"
loglevel notice
logfile "/data/7004/redis.log"
dbfilename "dump.rdb"
dir "/data/7004"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
vim /data/7005/redis.conf
port 7005
daemonize yes
pidfile "/data/7005/redis.pid"
loglevel notice
logfile "/data/7005/redis.log"
dbfilename "dump.rdb"
dir "/data/7005"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

 

使用vim的時候可以使用如下方式進行快速替換文本中的文件

:%s/7000/7001/g       #### 將文件中的所有7000替換成7001

 

啟動redis所有節點

[root@k8s-master 7005]# redis-server /data/7000/redis.conf 
[root@k8s-master 7005]# redis-server /data/7002/redis.conf 
[root@k8s-master 7005]# redis-server /data/7001/redis.conf 
[root@k8s-master 7005]# redis-server /data/7003/redis.conf 
[root@k8s-master 7005]# redis-server /data/7004/redis.conf 
[root@k8s-master 7005]# redis-server /data/7005/redis.conf 
​
[root@k8s-master 7005]# ps -ef|grep redis
root      22736  12989  0 14:37 pts/0    00:00:07 redis-server 127.0.0.1:6379
root      23907      1  0 14:49 ?        00:00:07 redis-server *:6382
root      25210  12989  0 15:03 pts/0    00:00:15 redis-sentinel *:26380 [sentinel]
root      26279      1  0 15:14 ?        00:00:06 redis-server *:6380
root      26650      1  0 15:17 ?        00:00:06 redis-server *:6381
root      35106      1  0 16:40 ?        00:00:00 redis-server *:7000 [cluster]
root      35114      1  0 16:41 ?        00:00:00 redis-server *:7002 [cluster]
root      35127      1  0 16:41 ?        00:00:00 redis-server *:7001 [cluster]
root      35139      1  0 16:41 ?        00:00:00 redis-server *:7003 [cluster]
root      35147      1  0 16:41 ?        00:00:00 redis-server *:7004 [cluster]
root      35155      1  0 16:41 ?        00:00:00 redis-server *:7005 [cluster]

 

  • 創建集群

redis-trib.rb create --replicas 1 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
### create 創建  replicas 副本一個  前3個節點會被認為是主節點  后3個節點會被認為是從節點

 

集群狀態查看

集群主節點狀態
redis-cli -p 7000 cluster nodes | grep master
集群從節點狀態
redis-cli -p 7000 cluster nodes | grep slave 

 

redis集群節點管理

### 增加新的節點
mkdir /data/7006
mkdir /data/7007
​
vim /data/7006/redis.conf
port 7006
daemonize yes
pidfile "/data/7006/redis.pid"
loglevel notice
logfile "/data/7006/redis.log"
dbfilename "dump.rdb"
dir "/data/7006"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
​
​
vim /data/7007/redis.conf
port 7007
daemonize yes
pidfile "/data/7007/redis.pid"
loglevel notice
logfile "/data/7007/redis.log"
dbfilename "dump.rdb"
dir "/data/7007"
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
​
### redis7006-7007啟動節點
[root@k8s-master 7007]# redis-server /data/7006/redis.conf 
[root@k8s-master 7007]# redis-server /data/7007/redis.conf
### 查看節點是否啟動成功
[root@k8s-master 7007]# ps -ef |grep redis
root      22736  12989  0 14:37 pts/0    00:00:09 redis-server 127.0.0.1:6379
root      23907      1  0 14:49 ?        00:00:09 redis-server *:6382
root      25210  12989  0 15:03 pts/0    00:00:20 redis-sentinel *:26380 [sentinel]
root      26279      1  0 15:14 ?        00:00:08 redis-server *:6380
root      26650      1  0 15:17 ?        00:00:08 redis-server *:6381
root      35106      1  0 16:40 ?        00:00:02 redis-server *:7000 [cluster]
root      35114      1  0 16:41 ?        00:00:02 redis-server *:7002 [cluster]
root      35127      1  0 16:41 ?        00:00:02 redis-server *:7001 [cluster]
root      35139      1  0 16:41 ?        00:00:02 redis-server *:7003 [cluster]
root      35147      1  0 16:41 ?        00:00:02 redis-server *:7004 [cluster]
root      35155      1  0 16:41 ?        00:00:02 redis-server *:7005 [cluster]
root      38225      1  0 17:13 ?        00:00:00 redis-server *:7006 [cluster]     #### 啟動成功
root      38237      1  0 17:13 ?        00:00:00 redis-server *:7007 [cluster]     #### 啟動成功
root      38299  12989  0 17:13 pts/0    00:00:00 grep --color=auto redis

 

添加主節點

redis-trib.rb   add-node 127.0.0.1:7006 127.0.0.1:7000
#### 將7006加入到集群中

 

轉移slot(重新分片)

redis-trib.rb  reshard  127.0.0.1:7000
4096
7006的id
all

 

添加一個從節點

###注意先獲取7006的node id
redis-cli -p 7000 cluster nodes | grep master
redis-trib.rb add-node  --slave --master-id 5daee30881a4d1b2ee3e31ae7ff04de42c8690e4  127.0.0.1:7007  127.0.0.1:7000
###5daee30881a4d1b2ee3e31ae7ff04de42c8690e4  為7006的主節點上添加從節點  這里的node  id寫的是7006的id號碼   后面的7007代表是從節點

 

刪除節點

### 將需要的刪除的節點slot移動走
redis-trib.rb  reshard 127.0.0.1:7000
#### 刪除一個節點
redis-trib.rb  del-node 127.0.0.1:7005 
4096                          ###移動走的槽位
a60677f89e2c684549fda4f8182a55ccd10514e2 #### 7000的id號碼    接受的節點
7006的id號碼                 ####需要移動走的id  節點
done
yes
[root@k8s-master 7007]# redis-cli -p 7000 cluster nodes | grep master
a60677f89e2c684549fda4f8182a55ccd10514e2 127.0.0.1:7000 myself,master - 0 0 8 connected 0-6826 10923-12287
5daee30881a4d1b2ee3e31ae7ff04de42c8690e4 127.0.0.1:7006 master - 0 1550743463647 7 connected    ###槽位為空
92fad7817b2093c0dfa7727cd47e773440dd2ed3 127.0.0.1:7001 master - 0 1550743463140 2 connected 6827-10922
4407a7899197370a3a81e38bef541d5264bfc96a 127.0.0.1:7002 master - 0 1550743464189 3 connected 12288-16383###刪除一個節點
刪除一個節點之前先看一下這個節點的node  id號碼
 redis-cli -p 7000 cluster nodes
​
6c93febac43e385c48159ff43dee82df3857cdc7 127.0.0.1:7005 slave 4407a7899197370a3a81e38bef541d5264bfc96a 0 1550743883143 6 connected
f8cccf3137eb2142618070dede315335b26abd11 127.0.0.1:7004 slave 92fad7817b2093c0dfa7727cd47e773440dd2ed3 0 1550743882129 5 connected
69961281e2e8a31e1c903767dc502e8be03e1cd6 127.0.0.1:7007 slave a60677f89e2c684549fda4f8182a55ccd10514e2 0 1550743882130 8 connected
a60677f89e2c684549fda4f8182a55ccd10514e2 127.0.0.1:7000 myself,master - 0 0 8 connected 0-6826 10923-12287
5daee30881a4d1b2ee3e31ae7ff04de42c8690e4 127.0.0.1:7006 master - 0 1550743882639 7 connected
92fad7817b2093c0dfa7727cd47e773440dd2ed3 127.0.0.1:7001 master - 0 1550743883649 2 connected 6827-10922
4407a7899197370a3a81e38bef541d5264bfc96a 127.0.0.1:7002 master - 0 1550743883144 3 connected 12288-16383
c13a3baca507d933c53c880d304c679ef107ac71 127.0.0.1:7003 slave a60677f89e2c684549fda4f8182a55ccd10514e2 0 1550743884152 8 connected
​
69961281e2e8a31e1c903767dc502e8be03e1cd6 127.0.0.1:7007
5daee30881a4d1b2ee3e31ae7ff04de42c8690e4 127.0.0.1:7006
​
redis-trib.rb del-node 127.0.0.1:7007  69961281e2e8a31e1c903767dc502e8be03e1cd6
redis-trib.rb del-node 127.0.0.1:7006  5daee30881a4d1b2ee3e31ae7ff04de42c8690e4
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM