Redis專題-- redis cluster搭建

Redis cluster 3.0搭建(ubuntu, 單機模擬)

引用:
http://www.cnblogs.com/gomysql/p/4395504.html
http://xiaorui.cc/2015/05/16/
http://xiezefan.me/2015/12/03/redis_cluster_research_1/
http://blog.csdn.net/dc_726/article/details/48552531            //非常詳細


本篇文章意在Redis Cluster環境的搭建
Redis集羣的基本知識、原理以及使用等內容,不在本篇文章中介紹,請移步到我的相關篇目中。

前置準備:
1. redis 3.0及以上版本,我是用的3.0.7版本。
2. ruby 環境和gem環境
3. gcc等編譯c語言的工具和工具包
4. redis基礎知識(我的篇目)

搭建步驟
1. 安裝3.0以上版本redis
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
tar -xvf redis-3.0.7.tar.gz
cd redis-3.0.7
make    // make install

2. 安裝ruby和gem
apt-get install ruby
apt-get install gem
gem install redis

3. 創建存放多個redis實例的目錄

mkdir redis_cluster/ -p
cd redis_cluster
mkdir 7000 7001 7002 7003 7004 7005        // 以端口號作爲實例目錄的名稱

4. redis實例的配置文件---redis.conf創建redis.conf文件,在裏面添加如下內容作爲redis實例的配置
port 7000
#daemonize yes     #是否作爲守護進程。對於新手來說,不設置的話,可以通過輸出查看一些redis服務器的輸出內容。
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

將該redis.conf文件分別放置到各個實例目錄中,並修改相應的端口號。


5. 分別啓動6個redis實例
cd 7000/
redis-server redis.conf


查看進程是否存在

[root@redis-server 7005]# ps -ef | grep redis
root      4168     1  0 11:49 ?        00:00:00 redis-server *:7000 [cluster]
root      4176     1  0 11:49 ?        00:00:00 redis-server *:7001 [cluster]
root      4186     1  0 11:50 ?        00:00:00 redis-server *:7002 [cluster]
root      4194     1  0 11:50 ?        00:00:00 redis-server *:7003 [cluster]
root      4202     1  0 11:50 ?        00:00:00 redis-server *:7004 [cluster]
root      4210     1  0 11:50 ?        00:00:00 redis-server *:7005 [cluster]
root      4219  4075  0 11:50 pts/2    00:00:00 grep redis

6. 創建集羣
使用redis-3.0.7/src 目錄下的 redis-trib 集羣管理程序創建集羣

redis-trib 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 是redis-trib程序的參數,表示創建一個新的集羣
--replicas 1 表示爲集羣中的每個主節點創建一個從節點,隨後是實例的地址列表。目前只支持 IP:PORT 的形式添加。目前命令裏有6個地址參數,前三個是master,後三個是slave。

這條命令,讓redis-trib程序創建一個包含三個主節點和三個從節點的集羣。
隨後,redis-trib會輸出預想的配置給你,並詢問是否按照該配置進行創建。

>>> Creating cluster
Connecting to node 127.0.0.1:7000: OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: 2774f156af482b4f76a5c0bda8ec561a8a1719c2 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 2d03b862083ee1b1785dba5db2987739cf3a80eb 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 0456869a2c2359c3e06e065a09de86df2e3135ac 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: 37b251500385929d5c54a005809377681b95ca90 127.0.0.1:7003
   replicates 2774f156af482b4f76a5c0bda8ec561a8a1719c2
S: e2e2e692c40fc34f700762d1fe3a8df94816a062 127.0.0.1:7004
   replicates 2d03b862083ee1b1785dba5db2987739cf3a80eb
S: 9923235f8f2b2587407350b1d8b887a7a59de8db 127.0.0.1:7005
   replicates 0456869a2c2359c3e06e065a09de86df2e3135ac
Can I set the above configuration? (type 'yes' to accept): 

輸入 yes 並按下回車後,集羣會將配置應用到各個節點,並連接各個節點。
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: 2774f156af482b4f76a5c0bda8ec561a8a1719c2 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 2d03b862083ee1b1785dba5db2987739cf3a80eb 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 0456869a2c2359c3e06e065a09de86df2e3135ac 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
M: 37b251500385929d5c54a005809377681b95ca90 127.0.0.1:7003
   slots: (0 slots) master
   replicates 2774f156af482b4f76a5c0bda8ec561a8a1719c2
M: e2e2e692c40fc34f700762d1fe3a8df94816a062 127.0.0.1:7004
   slots: (0 slots) master
   replicates 2d03b862083ee1b1785dba5db2987739cf3a80eb
M: 9923235f8f2b2587407350b1d8b887a7a59de8db 127.0.0.1:7005
   slots: (0 slots) master
   replicates 0456869a2c2359c3e06e065a09de86df2e3135ac
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

7. 集羣客戶端,查看信息
目前集羣的客戶端很少,但是redis自帶的客戶端(redis-cli)支持集羣模式(-c 參數)。 redis-cli -h查看詳細參數說明
redis-cli -p xxxx -c cluster nodes 或登陸後,通過cluster nodes來查看該節點所在的集羣的信息。

2d03b862083ee1b1785dba5db2987739cf3a80eb 127.0.0.1:7001 master - 0 1428293673322 2 connected 5461-10922
0456869a2c2359c3e06e065a09de86df2e3135ac 127.0.0.1:7002 master - 0 1428293670262 3 connected 10923-16383
2774f156af482b4f76a5c0bda8ec561a8a1719c2 127.0.0.1:7000 myself,master - 0 0 1 connected 0-5460

37b251500385929d5c54a005809377681b95ca90 127.0.0.1:7003 slave 2774f156af482b4f76a5c0bda8ec561a8a1719c2 0 1428293672305 4 connected
e2e2e692c40fc34f700762d1fe3a8df94816a062 127.0.0.1:7004 slave 2d03b862083ee1b1785dba5db2987739cf3a80eb 0 1428293674340 5 connected
9923235f8f2b2587407350b1d8b887a7a59de8db 127.0.0.1:7005 slave 0456869a2c2359c3e06e065a09de86df2e3135ac 0 1428293675362 6 connected

從左到右的各個域分別是: 節點 ID , IP 地址和端口號, 標誌(flag), 最後發送 PING 的時間, 最後接收 PONG 的時間, 連接狀態, 節點負責處理的槽。
[節點id] [ip:端口] [標誌(master、myself、salve)] [(- 或者主節id)] [ping發送的毫秒UNIX時間,0表示沒有ping] [pong接收的unix毫秒時間戳] [配置-epoch] [連接狀態] [槽點]

集羣節點屬性
每個節點在集羣中都有一個獨一無二的 ID , 該 ID 是一個十六進制表示的 160 位隨機數, 在節點第一次啓動時由 /dev/urandom 生成。
節點會將它的 ID 保存到配置文件, 只要這個配置文件不被刪除, 節點就會一直沿用這個 ID 。

節點 ID 用於標識集羣中的每個節點。 一個節點可以改變它的 IP 和端口號, 而不改變節點 ID 。 集羣可以自動識別出 IP/端口號的變化, 並將這一信息通過 Gossip 協議廣播給其他節點知道。

===================================

關注如下的配置:
pidfile /home/work/redis/redis_6380/tmp/redis.pid

logfile "/home/work/redis/redis_6380/log/redis.log"

dir /home/work/redis/redis_6380/

daemonize yes


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章