數據庫基礎之12(redis集羣)

目錄

1、準備集羣環境

1-1、爲六臺主機安裝並運行redis服務

1-2、修改配置文件

2、創建集羣

2-1、 集羣工作原理

2.2 創建集羣

2-3、在客戶端連接集羣存儲數據(連接master庫的ip地址)

 2-4、測試集羣的高可用

 3、管理集羣

3.1  向集羣裏添加新的redis服務器

3.2 刪除集羣裏的redis服務器

3.3 把修復的redis服務器再次添加到集羣裏

3-3-1、  把修復master的redis服務器再次添加到集羣裏

3-3-2、 把修復slave的redis服務器再次添加到集羣裏


 部署Redis集羣


1、準備集羣環境

 

1-1、爲六臺主機安裝並運行redis服務

rpm -q gcc gcc-c++---------檢查有沒有安裝gcc  gcc-c++
yum -y install gcc gcc-c++----若沒裝則裝一下
# tar -xzf redis-4.0.8.tar.gz
# cd redis-4.0.8------進入redis目錄
#make----編譯
#make install---安裝

[root@host151 redis-4.0.8]# ls  --------編譯安裝完之後redis目錄下詳情
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src

[root@host151 redis-4.0.8 ]#./utls/install_server.sh----------初始化
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] ----選擇主配置文件名
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] ----選擇日誌文件名
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]----選擇數據庫目錄
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] ---選擇redis服務器軟件存儲路徑
Selected config:
Port           : 6379-------服務端口號
Config file    : /etc/redis/6379.conf----– 主配置文件
Log file       : /var/log/redis_6379.log-----日誌文件
Data dir       : /var/lib/redis/6379------數據庫目錄
Executable     : /usr/local/bin/redis-server----redis-server程序
Cli Executable : /usr/local/bin/redis-cli-----redis-cli程序
Is this ok? Then press ENTER to go on or Ctrl-C to abort.-----回車以繼續或Ctrl-C退出
Copied /tmp/6379.conf => /etc/init.d/redis_6379-----redis啓動腳本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...    -----------正在啓動redis服務
Installation successful!    -----------安裝成功
-----------------------------服務默認初始化後就已經啓動了

 

1-2、修改配置文件

#vim /etc/redis/redis.conf
bind IP地址    --------------只寫物理接口IP地址
daemonize yes  -----------守護進程方式運行
port xxxx   ------------------端口號不要使用默認的6379
cluster-enabled yes  -----------開啓集羣
cluster-config-file nodes-xxxx.conf ------------集羣的配置文件不要使用默認的名稱
cluster-node-timeout 5000 -------------請求超時時間爲 5秒

 

2、創建集羣


2-1、 集羣工作原理

存儲數據的工作原理:
set 變量名   值
set name  bob
set age  109
key  和 crc16算法  把計算後得到的數字  和 16384 做求模計算   
                                                  
 
讀取數據的工作原理:
set 變量名
get  name
key  和 crc16算法  把計算後得到的數字  和 16384 做求模計算
 
 

2.2 創建集羣

  • 部署腳本運行環境

    ]#  yum  -y  install  ruby   rubygems--------------------安裝ruby rubygems
   rpm -ivh ruby-devel-2.0.0.648-30.el7.x86_64.rpm  -------安裝依賴包
   gem install redis-3.2.1.gem  
 

  • 創建ruby腳本   

 cd redis-4.0.8/
 cd src/
   ls *.rb
   echo  $PATH
  mkdir /root/bin
  cp  redis-trib.rb  /root/bin/
 

  • 創建集羣

redis-trib.rb create --replicas 1  192.168.4.51:6351   192.168.4.52:6352   192.168.4.53:6353  192.168.4.54:6354  192.168.4.55:6355  192.168.4.56:6356
 
]# redis-trib.rb create --replicas 1  192.168.4.51:6351 192.168.4.52:6352   192.168.4.53:6353  192.168.4.54:6354 192.168.4.55:6355  192.168.4.56:6356--------此處的1是指自動爲每一個master節點分配一個slave節點
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.4.51:6351
192.168.4.52:6352
192.168.4.53:6353
Adding replica 192.168.4.55:6355 to 192.168.4.51:6351
Adding replica 192.168.4.56:6356 to 192.168.4.52:6352
Adding replica 192.168.4.54:6354 to 192.168.4.53:6353
M: 2c4794730d932a81bcb68840d29e26fd11f08284 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
M: 1ab7910802f76addcae10d5dd0e059759620ecb0 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
M: 3c84d32c1834259bb9a841181e34b5d4d3228ca5 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
S: f46897c9379b2d64fcf97538626b81cdf29873ab 192.168.4.54:6354
   replicates 3c84d32c1834259bb9a841181e34b5d4d3228ca5
S: 93d81d72305626761491a004a04d89e7fc50e58e 192.168.4.55:6355
   replicates 2c4794730d932a81bcb68840d29e26fd11f08284
S: 962a9f5ca2dd214dc43e40b0b7cfcfb8e5e51c85 192.168.4.56:6356
   replicates 1ab7910802f76addcae10d5dd0e059759620ecb0
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 192.168.4.51:6351)
M: 2c4794730d932a81bcb68840d29e26fd11f08284 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 93d81d72305626761491a004a04d89e7fc50e58e 192.168.4.55:6355
   slots: (0 slots) slave
   replicates 2c4794730d932a81bcb68840d29e26fd11f08284
S: 962a9f5ca2dd214dc43e40b0b7cfcfb8e5e51c85 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 1ab7910802f76addcae10d5dd0e059759620ecb0
S: f46897c9379b2d64fcf97538626b81cdf29873ab 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 3c84d32c1834259bb9a841181e34b5d4d3228ca5
M: 3c84d32c1834259bb9a841181e34b5d4d3228ca5 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 1ab7910802f76addcae10d5dd0e059759620ecb0 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@host51 src]#  


2-3、在客戶端連接集羣存儲數據(連接master庫的ip地址)

存儲數據必須連接集羣中的master主機 (連接任意一個master主機都可以)
[root@host50 ~]# redis-cli -c -h 192.168.4.51 -p 6351------- -c值連接集羣
> set  name  bob
> set  age  109
> keys *
> get  name
> get age

 
2-4、測試集羣的高可用

]#redis-trib.rb   check  192.168.4.51:6351
 

 
3、管理集羣

準備:

2臺新的redis服務  要求如下: 運行redis服務並啓用集羣
bind   192.168.4.57
port   6357
nodes-6357.conf
 
bind   192.168.4.58
port   6358
nodes-6358.conf


3.1  向集羣裏添加新的redis服務器

  • 添加主庫節點
  • redis-trib.rb add-node 新主機Ip:端口 192.168.4.51:6351

~]# redis-trib.rb add-node 192.168.4.57:6357  192.168.4.51:6351
~]# redis-trib.rb  check 192.168.4.51:6351
 
~]# redis-trib.rb reshard 192.168.4.51:6351
 
 
M: 7b473f069f6cbd5cb2ca45ff8b1cac1b11ce420e 192.168.4.57:6357
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   0 additional replica(s)
 

  • 添加從庫節點
  • redis-trib.rb add-node --slave --master-id id值 從節點ip: 端口 192.168.4.51:6351
  • 注:如果不指定主節點的id的話,會把新節點隨機添加爲從節點最少的主的從節點

]#redis-trib.rb add-node  --slave  192.168.4.58:6358 192.168.4.51:6351
 
]#redis-trib.rb  check   192.168.4.51:6351
 
 
S: 4346ba4892675f3ab99480200c73bc7e73168da7 192.168.4.58:6358
   slots: (0 slots) slave
   replicates 7b473f069f6cbd5cb2ca45ff8b1cac1b11ce420e
 
]# redis-trib.rb add-node --slave \
--master-id  1ab7910802f76addcae10d5dd0e059759620ecb0 \  192.168.4.50:6350 192.168.4.51:6351
 
]# redis-trib.rb  check   192.168.4.51:6351


3.2 刪除集羣裏的redis服務器

  • 刪除slave主機   192.168.4.50    192.168.4.58
  • redis-trib.rb del-node 192.168.4.51:6351 被移除節點主機id

 
]# redis-trib.rb del-node 192.168.4.51:6351 2239c74a6b36eb3bec81a5051a5bef462e0be997-------直接刪
 
]# redis-trib.rb del-node 192.168.4.51:6351  4346ba4892675f3ab99480200c73bc7e73168da7
 
]# redis-trib.rb check 192.168.4.51:6351  
 

  • 刪除master主機   192.168.4.57
  • redis-trib.rb del-node 192.168.4.51:6351 被移除節點主機id

]# redis-trib.rb reshard 192.168.4.51:6351------先釋放hash槽位
]# redis-trib.rb check 192.168.4.51:6351  -------查看是否已釋放
]# redis-trib.rb del-node 192.168.4.51:6351  57主機id---------再刪除
  

3.3 把修復的redis服務器再次添加到集羣裏


3-3-1、  把修復master的redis服務器再次添加到集羣裏

master:
]# /etc/init.d/redis_6379  start
]# redis_cli   -h  192.168.4.57  -p  6357
>  cluster  reset
> exit
 
51:
]#redis-trib.rb  add-node   192.168.4.57:6357    192.168.4.51:6351
]#redis-trib.rb  check 192.168.4.51:6351
]#redis-trib.rb  reshard 192.168.4.51:6351------給分配hash槽位
 


3-3-2、 把修復slave的redis服務器再次添加到集羣裏


 
slave:
]# /etc/init.d/redis_6379  start
]# redis_cli   -h  192.168.4.58  -p  6358
>  cluster  reset
> exit
 
51:
]#redis-trib.rb  add-node  --slave  192.168.4.58:6358   192.168.4.51:6351
]#redis-trib.rb  check 192.168.4.51:6351
 
 

 

發佈了41 篇原創文章 · 獲贊 20 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章