Redis Cluster叢集部署搭建詳解

來源:互聯網
上載者:User

Redis Cluster叢集部署搭建詳解

在Oracle的路上走了許多年,換換感覺,嘗試一下新的知識,也是一個不錯的感覺。Redis,一個超輕量化的記憶體資料庫,只做一小塊資料庫功能實現,卻非常優秀的一個產品。今天,就分享一下安裝Redis叢集的過程。

搭建redis叢集,建議至少需要準備3台伺服器,共搭建6個節點,3個master,3個slave,並且要求3個master節點不能全部跑到同一台伺服器上,保證節點安全,3台伺服器的配置相同,使用redistest帳號搭建,對應的連接埠是7000/7001/7002連接埠

我的叢集分配如下,每個節點運行兩個連接埠。第一列做主庫,第二列做備庫

192.8.8.136:7000  192.8.8.136:7001 
192.8.8.137:7001  192.8.8.137:7002
192.8.8.138:7002  192.8.8.138:7000

1、使用已經編譯完成的安裝報安裝(就使用文檔末尾串連的安裝包即可),解壓並放到/home/redistest目錄下,修改對應的redis.conf檔案,並複製出6份,每個節點兩個redis目錄
[redistest]$ ll
total 13284

drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7000
drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7001
drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7002
-rwxr-xr-x 1 redistest users 5708657 Aug 22 2016 redis-cli
-rwxr-xr-x 1 redistest users 7817132 Aug 22 2016 redis-server
-rwxr-xr-x 1 redistest users 60578 Aug 9 06:21 redis-trib.rb

2、此時有3個執行檔案,redis-server/redis-cli/redis-trib.rb

3、建立7000檔案夾,並將redis.conf拷貝到7000檔案目錄下,注意修改對應的幾個關鍵配置項(主要就是改連接埠號碼)

daemonize yes // redis後台運行
pidfile /var/run/redis_7000.pid // pid檔案,運行多個執行個體時,需要指定不同的pid檔案
port 7000 // 監聽連接埠,運行多個執行個體時,需要指定不同的斷奶口
tcp-backlog 511
tcp-keepalive 0
loglevel notice // 日誌等級
logfile ./redis.log // 記錄檔位置
databases 16 // 可用資料庫數
appendonly yes // redis會把所接收到的每一次寫操作請求都追加到appendonly.aof檔案中,當redis重新啟動時,會從該檔案恢複出之前的狀態。
appendfilename "appendonly.aof" // AOF檔案名稱
appendfsync everysec // 表示對寫操作進行累積,每秒同步一次
no-appendfsync-on-rewrite yes // AOF 自動重寫
auto-aof-rewrite-percentage 80-100 // 重寫百分比
auto-aof-rewrite-min-size 64mb //

註:完整配置,請參考軟體包中的redis.conf檔案
 
4、拷貝7000檔案夾,粘貼出新檔案夾7001/7002,分別將7001/7002檔案夾中的redis.conf檔案中的7000替換成為7001/7002。

5、切換到root使用者,使用yum安裝ruby,yum -y install ruby rubygems,並執行gem install redis,這樣便完成ruby安裝,可以使用redis-trib.rb搭建叢集
註:redis-trib.rb是基於ruby開發的,所以必須要安裝ruby環境。

yum安裝很方便,但是有的風場是無法串連外網的,也就無法使用yum。軟體包中已經包含ruby rubygems的軟體包,直接安裝即可。

ruby的下載路徑:
https://rubygems.org/gems/redis

然後通過下面命令本地安裝ruby

yum -y localinstall ruby rubygems
gem install redis

6、另外兩台伺服器做同樣的配置操作,開啟該機器的2個redis節點,當完成3台機器的redis節點搭建後,可以啟動redis,並使用ps查看redis運行情況情況

7、開啟redis服務
進入7000目錄,啟動redis

cd 7000
../redis-server redis.conf
cd ..
cd 7001
../redis-server redis.conf

[redistest@ip-172-18-98-136 redis]$ ps -ef|grep redis
redistest  3864    1  0 13:02 ?        00:00:00 ../redis-server *:7000 [cluster]
redistest  3869    1  0 13:02 ?        00:00:00 ../redis-server *:7001 [cluster]
redistest  3888  3778  0 13:05 pts/3    00:00:00 grep redis

注意:由於redis.conf檔案使用的都是相對路徑,並且產生的一些檔案,如aof檔案是不能覆蓋重複的,因此標準的開啟redis-server的操作是,進入到7000/7001/7002等目錄中執行,../redis-server redis.conf,這樣各個執行個體產生的檔案就在各自的目錄下,互不干擾;當然如果修改redis.conf的設定檔目錄,則可以實現在不同的目錄下執行redis-server,這個可以靈活掌握和運用

8、redis節點搭建起來後,需要完成redis cluster叢集搭建,搭建叢集過程中,需要保證6個redis執行個體都是運行狀態。
Redis是根據IP和Port的順序,確定master和slave的,所以要排好序,再執行。
輸出如下

[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb create --replicas 1 192.8.8.136:7000 192.8.8.137:7001 192.8.8.138:7002 192.8.8.137:7002 192.8.8.136:7001  192.8.8.138:7000
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.8.8.138:7002
192.8.8.137:7001
192.8.8.136:7000
Adding replica 192.8.8.137:7002 to 192.8.8.138:7002
Adding replica 192.8.8.138:7000 to 192.8.8.137:7001
Adding replica 192.8.8.136:7001 to 192.8.8.136:7000
M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000
  slots:10923-16383 (5461 slots) master
M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001
  slots:5461-10922 (5462 slots) master
M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002
  slots:0-5460 (5461 slots) master
S: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002
  replicates 6f9c383ec47461c2a86265f5db506e10397605d8
S: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001
  replicates 6780f0fadd82825d04e524fd81fa710403e7152e
S: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000
  replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399
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.8.8.136:7000)
M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000
  slots:10923-16383 (5461 slots) master
M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001
  slots:5461-10922 (5462 slots) master
M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002
  slots:0-5460 (5461 slots) master
M: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002
  slots: (0 slots) master
  replicates 6f9c383ec47461c2a86265f5db506e10397605d8
M: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001
  slots: (0 slots) master
  replicates 6780f0fadd82825d04e524fd81fa710403e7152e
M: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000
  slots: (0 slots) master
  replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

其中Master的節點是:192.8.8.136:7000/192.8.8.137:7001/192.8.8.138:7002分布在不同的伺服器上,該叢集的搭建的實現了負載平衡,至此redis叢集的搭建過程基本完畢;
 
9、檢查叢集狀態

[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb check 192.8.8.136:7000
>>> Performing Cluster Check (using node 192.8.8.136:7000)
M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000
  slots:10923-16383 (5461 slots) master
  1 additional replica(s)
M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002
  slots:0-5460 (5461 slots) master
  1 additional replica(s)
S: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001
  slots: (0 slots) slave
  replicates 6780f0fadd82825d04e524fd81fa710403e7152e
S: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002
  slots: (0 slots) slave
  replicates 6f9c383ec47461c2a86265f5db506e10397605d8
M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001
  slots:5461-10922 (5462 slots) master
  1 additional replica(s)
S: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000
  slots: (0 slots) slave
  replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb info 192.8.8.136:7000
192.8.8.136:7000 (6780f0fa...) -> 0 keys | 5461 slots | 1 slaves.
192.8.8.138:7002 (6f9c383e...) -> 0 keys | 5461 slots | 1 slaves.
192.8.8.137:7001 (b00521fd...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

10 、檢查叢集資訊

./redis-trib.rb info 192.8.8.136:7000

11、如果在執行./redis-trib.rb create --replicas 過程中,長時間沒有完成,或者遇到其他錯誤。如果需要重新執行配置叢集的話。
需要關閉redis執行個體,刪除7000/7001/7002目錄下,除了redis.conf檔案之外的全部檔案,再啟動redis執行個體,並再次執行./redis-trib.rb create即可。

12、串連資料庫,查詢資料

[root@localhost src]# redis-cli -c -p 7000
127.0.0.1:7000> cluster meet 127.0.0.1 7000
OK

至此,redis叢集已經大家完成,下面我們需要完成redis隨著作業系統啟動,減少後續維護的成本。

13、編輯檔案/home/redistest/startAll.sh,注意,要寫全路徑

/home/redistest/redis/redis-server /home/redistest/redis/7000/redis.conf
/home/redistest/redis/redis-server /home/redistest/redis/7001/redis.conf

命令列,加入/etc/rc.local檔案夾下,需要以redistest使用者啟動redis

su - redistest -c /home/redistest/startAll.sh

相關資料可從以下資訊得到下載:

點擊這個 連結關注 幫客之家官方,關注後回複數字151185。即可得到網友的分享密碼。

如果取消追蹤幫客之家公眾號,即使再次關注,也將無法提供本服務!

連結:https://pan.baidu.com/s/1qZg2Hcg 密碼:獲得見上面的方法,地址失效請在下面留言。

------------------------------------------分割線------------------------------------------

全部下載見

FTP地址:ftp://ftp1.bkjia.com

使用者名稱:ftp1.bkjia.com

密碼:www.bkjia.com

在 2018年LinuxIDC.com/3月/Redis Cluster叢集部署搭建詳解/

下載方法見

------------------------------------------分割線------------------------------------------ 

本文永久更新連結地址:https://www.bkjia.com/Linux/2018-03/151185.htm

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.