redis環境搭建

由於工做環境中有redis,因此對redis進行了學習,固然首先就是從搭建環境開始,下面是我對於搭建redis環境的記錄。node


系統是SuSE 11 sp2,linux

軟件環境以下所示:redis

linux-svnfile:/home/apps/redis # lsruby

redis-3.0.0.gem     ruby-1.9.2-p290.tar.gz  zlib-1.2.7.tar.gzapp

redis-3.0.0.tar.gz  rubygems-2.4.6.tgzide

redis.conf          zlib-1.2.6.tar.gzsvn


安裝基礎環境:學習

linux-svnfile:/home/apps/redis # tar -zxf zlib-1.2.6.tar.gz -C /usr/local/srcspa


linux-svnfile:/usr/local/src/zlib-1.2.6 # ./configure --prefix=/usr/local/zlibserver


linux-svnfile:/usr/local/src/zlib-1.2.6 # make && make install


linux-svnfile:/home/apps/redis # tar -zxf ruby-1.9.2-p290.tar.gz -C /usr/local/src


linux-svnfile:/usr/local/src/ruby-1.9.2-p290 # ./configure --prefix=/usr/local/ruby


linux-svnfile:/usr/local/src/ruby-1.9.2-p290 # make && make install


linux-svnfile:/usr/local/ruby # ln -s /usr/local/ruby/bin/ruby /usr/local/bin


linux-svnfile:/home/apps/redis # tar xf rubygems-2.4.6.tgz -C /usr/local/src


linux-svnfile:/usr/local/src # mv rubygems-2.4.6 ../gem


linux-svnfile:/usr/local/gem # ruby setup.rb


linux-svnfile:/usr/local/gem # cp bin/gem /usr/local/bin/


linux-svnfile:/home/apps/redis # gem install -l redis-3.0.0.gem 

Successfully installed redis-3.0.0

Installing ri documentation for redis-3.0.0

Done installing documentation for redis after 0 seconds

1 gem installed


linux-svnfile:/home/apps/redis # tar -zxf redis-3.0.0.tar.gz -C /usr/local/src


linux-svnfile:/usr/local/src # mv redis-3.0.0 ../redis


linux-svnfile:/usr/local/redis # make


至此基礎環境搭建完成


下面進行集羣的搭建

linux-svnfile:/usr/local/redis # cp src/redis-server /usr/local/bin/

linux-svnfile:/usr/local/redis # cp src/redis-cli /usr/local/bin/

linux-svnfile:/usr/local/redis # cp src/redis-trib.rb /usr/local/bin


linux-svnfile:/usr/local/redis # mkdir -p /usr/local/cluster/{7000..7005}


linux-svnfile:/usr/local/redis # vi redis.conf

daemonize yes

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes


linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7000

linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7001

linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7002

linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7003

linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7004

linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7005


這裏須要注意的是文件名對應文件裏端口的配置,例如7001文件下的port參數須要改成7001,其餘同樣作修改。


linux-svnfile:/usr/local/redis # redis-server ../cluster/7000/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7001/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7002/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7003/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7004/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7005/redis.conf 


linux-svnfile:/usr/local/redis # ps -ef | grep redis

root     15590     1  0 18:52 ?        00:00:00 redis-server *:7000 [cluster]    


linux-svnfile:/usr/local/redis # 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

>>> Creating cluster

Connecting to node 127.0.0.1:7000: OK

Connecting to node 127.0.0.1:7001: [ERR] Sorry, can't connect to node 127.0.0.1:7001

You have new mail in /var/mail/root


linux-svnfile:/usr/local/cluster/7000 # redis-server redis.conf 

linux-svnfile:/usr/local/cluster/7000 # cd ../7001

linux-svnfile:/usr/local/cluster/7001 # redis-server redis.conf 

linux-svnfile:/usr/local/cluster/7001 # cd ../7002

linux-svnfile:/usr/local/cluster/7002 # redis-server redis.conf 

linux-svnfile:/usr/local/cluster/7002 # cd ../7003

linux-svnfile:/usr/local/cluster/7003 # redis-server redis.conf 

linux-svnfile:/usr/local/cluster/7003 # cd ../7004

linux-svnfile:/usr/local/cluster/7004 # redis-server redis.conf 

linux-svnfile:/usr/local/cluster/7004 # cd ../7005

linux-svnfile:/usr/local/cluster/7005 # redis-server redis.conf 

linux-svnfile:/usr/local/cluster/7005 # ps -ef | grep redis

root     17575     1  0 20:05 ?        00:00:00 redis-server *:7000 [cluster]

root     17590     1  0 20:06 ?        00:00:00 redis-server *:7001 [cluster]

root     17604     1  0 20:06 ?        00:00:00 redis-server *:7002 [cluster]

root     17612     1  0 20:06 ?        00:00:00 redis-server *:7003 [cluster]

root     17616     1  0 20:06 ?        00:00:00 redis-server *:7004 [cluster]

root     17624     1  0 20:06 ?        00:00:00 redis-server *:7005 [cluster]


像是上面在啓動服務時須要注意切換到相應的配置文件的目錄下,否則相應端口的服務沒法啓動,例如我以前在/usr/local/redis目錄下啓動後只有7000對應的服務啓動了。

linux-svnfile:/usr/local/redis # redis-server ../cluster/7000/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7001/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7002/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7003/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7004/redis.conf 

linux-svnfile:/usr/local/redis # redis-server ../cluster/7005/redis.conf 

linux-svnfile:/usr/local/redis # ps -ef | grep redis

root     15144 19064  0 18:37 pts/0    00:00:00 vi redis.conf

root     15590     1  0 18:52 ?        00:00:00 redis-server *:7000 [cluster]          

root     15616 19443  0 18:52 pts/1    00:00:00 grep redis


wKioL1gUsVGTy1ktAACcXA2HQ7I909.png-wh_50

wKiom1gUsWHA2ghmAAB7LIwXl5c461.png-wh_50


linux-svnfile:/usr/local/cluster #redis-cli -p 7000

127.0.0.1:7000>


wKiom1gUsWyw8msoAACHNGZL9Qw401.png-wh_50


wKiom1gUskrS1pOWAAAx6D1Xb30422.png-wh_50


刪除slave節點

wKiom1gUskvj3PZqAABAGCwwZWc713.png-wh_50


wKioL1gUskyA5D9EAAB3jAr3fCg783.png-wh_50


刪除master節點

linux-svnfile:/usr/local/redis # redis-trib.rb reshard 127.0.0.1:7001

How many slots do you want to move (from 1 to 16384)? 5461 

What is the receiving node ID? 42929649e533ec8aad7cbb81f204f04c849d4bff

Please enter all the source node IDs.  

  Type 'all' to use all the nodes as source nodes for the hash slots.  

  Type 'done' once you entered all the source nodes IDs.  

Source node #1: 6fe9561e605b7ee85e67a2557f7fb641f482afb4 

Source node #2:done  

#Do you want to proceed with the proposed reshard plan (yes/no)? yes  


說明:

5461表示要刪除master全部的slot數量

 

What is the receiving node ID是指將7000的slot遷移的節點7001的node-id

Source node #1是指要刪除的master的node-id

 

下面能夠看到7000的slot爲0,而7001多了4561


wKiom1gUsr-jlbKGAAB5SG7dAD4996.png-wh_50



在刪除master節點出現以下面所示的錯誤,是由於刪除master節點以前沒有刪除master節點的slave節點。

wKioL1gUtIKwj1WEAACzLG3OZU0318.png-wh_50


上面是在單臺機器上作的集羣,下面展現兩臺機器上作集羣,其實也很簡單。


參考以前的環境編譯源碼到另外一臺機器

在兩臺機器上編輯配置文件

/usr/local/redis # vi redis.conf

daemonize yes

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

cluster-config-file nodes-7001.conf

 

分別建立目錄和文件

linux-svnfile:/usr/local/redis # mkdir -p/usr/local/cluster/{7001..7003}

 

localhost:/usr/local/redis # mkdir -p/usr/local/cluster/{8001..8003}

 

linux-svnfile:/usr/local/redis # cpredis.conf ../cluster/7001

linux-svnfile:/usr/local/redis # cpredis.conf ../cluster/7002

linux-svnfile:/usr/local/redis # cpredis.conf ../cluster/7003

 

localhost:/usr/local/redis # cp redis.conf../cluster/8001

localhost:/usr/local/redis # cp redis.conf../cluster/8002

localhost:/usr/local/redis # cp redis.conf../cluster/8003

 

修改對應目錄的配置文件其中port 和cluster-config-file分別對應各自的目錄名,可以使用sed命令作修改

sed -i "s/7001/7002/g"

 

啓動服務

wKioL1gUtaKguh01AAA4DhGJk9I944.png-wh_50


wKioL1gUtdjRqx1gAABEkptl5Bs141.png-wh_50


wKioL1gUt36TZ4nUAAEpXdHmXSw780.png-wh_50


wKiom1gUt76gFniqAACGznwanxM878.png-wh_50

wKiom1gUt76D4ChQAAAvVWsVq60807.png-wh_50

相關文章
相關標籤/搜索