redis之 3.0集群安裝
1. 集群
即使有了主從復制,每個數據庫都要保存整個集群中的所有數據,容易形成木桶效應。
使用Jedis實現了分片集群,是由客戶端控制哪些key數據保存到哪個數據庫中,如果在水平擴容時就必須手動進行數據遷移,而且需要將整個集群停止服務,這樣做非常不好的。
Redis3.0版本的一大特性就是集群(Cluster),接下來我們一起學習集群。
1.0. 架構
(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.
(2)節點的fail是通過集群中超過半數的節點檢測失效時才生效.
(3)客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連接集群所有節點
(4)redis-cluster把所有的物理節點映射到[0-16383]slot(插槽)上,cluster 負責維護node<->slot<->value
1.1. 解壓安裝包
[root@mysql5 local]# pwd
/usr/local
[root@mysql5 redis]# tar -zxvf redis-3.0.2.tar.gz
[root@mysql5 redis]# ln -s redis-3.0.2 redis
[root@mysql5 redis]# pwd
/usr/local/redis
[root@mysql5 redis]# make
[root@mysql5 redis]# make install PREFIX=/usr/local/redis
# 創建六個實例目錄
[root@mysql5 redis]# mkdir /usr/local/redis7001
[root@mysql5 redis]# mkdir /usr/local/redis7002
[root@mysql5 redis]# mkdir /usr/local/redis7003
[root@mysql5 redis]# mkdir /usr/local/redis7004
[root@mysql5 redis]# mkdir /usr/local/redis7005
[root@mysql5 redis]# mkdir /usr/local/redis7006
# 拷貝軟件到相應的實例
[root@mysql5 redis]# pwd
/usr/local/redis
[root@mysql5 redis]# cp -rf * /usr/local/redis7001
[root@mysql5 redis]# cp -rf * /usr/local/redis7002
[root@mysql5 redis]# cp -rf * /usr/local/redis7003
[root@mysql5 redis]# cp -rf * /usr/local/redis7004
[root@mysql5 redis]# cp -rf * /usr/local/redis7005
[root@mysql5 redis]# cp -rf * /usr/local/redis7006
1.2. 修改配置文件
1、 設置不同的端口,7001、7002、7003、7004、7005、7006
2、 開啟集群,cluster-enabled yes
3、 指定集群的配置文件,cluster-config-file "nodes-xxxx.conf"
4、打開redis後臺執行, daemonize yes
5、啟動集群
1.3. 創建集群
1.3.1. 安裝ruby環境
因為redis-trib.rb是有ruby語言編寫的所以需要安裝ruby環境。
yum -y install zlib ruby rubygems
gem install redis
手動安裝:
rz上傳redis-3.2.1.gem
gem install -l redis-3.2.1.gem
1.3.2. 創建集群
首先,進入redis的安裝包路徑下:
cd /usr/local/src/redis/redis-3.0.1/src/
執行命令:
./redis-trib.rb create --replicas 1 10.100.25.44:7001 10.100.25.44:7002 10.100.25.44:7003 10.100.25.44:7004 10.100.25.44:7005 10.100.25.44:7006
--replicas 0:指定了從數據的數量為0 ,如果指定為1的話,每個集群節點會有一個副本
註意:這裏不能使用127.0.0.1,否則在Jedis客戶端使用時無法連接到!
redis-trib用法:
1.3.3. 集群檢測
[root@mysql5 redis7001]# redis-cli -p 7001
127.0.0.1:7001> cluster nodes
dbec41c5a8406c18810a9962ed68068fbcf9aaac 10.100.25.44:7005 slave d277e9e7267b8e6f7da2e72b0d4070868c51bfe3 0 1538674374274 5 connected
d42782bf3eaf1e130d0d694533f3e1bea7e3ef2c 10.100.25.44:7003 master - 0 1538674373770 3 connected 10923-16383
9a0ab8d1772787bde727b0e78b1b8db242f60d2b 10.100.25.44:7004 slave 1e0d1bea4f1f95ca2d673bbbe342afa2646e942b 0 1538674376293 4 connected
17d51731c87847ed5dd6d78146f68a899e0028ab 10.100.25.44:7006 slave d42782bf3eaf1e130d0d694533f3e1bea7e3ef2c 0 1538674371251 6 connected
d277e9e7267b8e6f7da2e72b0d4070868c51bfe3 10.100.25.44:7002 master - 0 1538674375284 2 connected 5461-10922
1e0d1bea4f1f95ca2d673bbbe342afa2646e942b 10.100.25.44:7001 myself,master - 0 0 1 connected 0-5460
redis之 3.0集群安裝