使用redis部署叢集

來源:互聯網
上載者:User

我們現在在一台伺服器上,通過6個連接埠來類比一下redis叢集部署,要搭建出的模型為:三個主要資料庫7001,7002,7003,它們各有一個從資料庫7004,7005,7006。

首先建立目錄/usr/local/redis-cluster,然後在其中建立6個目錄7001-7006:

然後先複製一份redis設定檔redis.conf到7001目錄下,執行vi命令編輯redis.conf,需要修改的地方為:

daemonize yes(後台運行)port 700* (分別對每個機器的連接埠號碼進行設定)bind 192.168.202.131 (必須綁定當前的主機IP)dir /usr/local/redis-cluster/700*/ (指定資料檔案dump.rdb的存放位置,必須指明,否則資料可能丟失)cluster-enabled yes(啟動叢集模式)cluster-config-file nodes700*.conf (700*最好和port對應上)cluster-node-timeout 5000 (到期時間,可選)appendonly yes (啟動aof持久化,可選)

將編輯好後的redis.conf各複製一份到7002-7006目錄下,再分別修改為對應的連接埠號碼7002-7006,為了方便可以使用全文替換:執行vi命令後,按冒號進入最後行模式,然後執行%s/7001/700*/g。

由於redis叢集需要使用到ruby命令,所以我們需要先安裝ruby,ubuntu下安裝ruby的方式如下:

sudo apt-get updatesudo apt-get install rubysudo apt-get install rubygems

然後執行如下命令安裝redis和ruby的介面:

gem install redis

然後分別啟動6個redis執行個體:(我的redis-server程式安裝在/usr/local/bin/,請對應你自己的)

/usr/local/bin/redis-server /usr/local/redis-cluster/7001/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7002/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7003/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7004/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7005/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7006/redis.conf 

開啟好後可以執行ps -el|grep redis查看是否啟動成功。

然後執行redis的src目錄下的redis-trib.rb命令,其中create代表建立叢集,–replicas代表主從結點比例,1代表一主一從:

./usr/redis/redis-3.2.6/src/redis-trib.rb create --replicas 1 192.168.202.131 7001 192.168.202.131 7002 192.168.202.131 7003 192.168.202.131 7004 192.168.202.131 7005 192.168.202.131 7006

通過叢集方式啟動服務,輸入info命令可以查看主從資訊:

輸入cluster info命令可以查看叢集資訊:

通過cluster nodes命令可以查看叢集結點資訊:(redis會給主庫結點分配雜湊槽)

現在開啟多個終端,分別串連7001,7002,7003連接埠的redis服務:

然後在7001中執行set k1 v1,會發現k1被存放到7003的雜湊槽12706中,此時在7001,7002中執行keys *看不到k1,但是可以通過get k1訪問到k1,而且會被重新導向到7003連接埠的redis服務:

現在,我們在7001中執行set k4 v4,發現k4被存放到了7002,然後我們退出7002服務,啟動7002的從庫即7005,執行get k4,會發現仍然需要重新導向到7002去擷取,這是不合理的。我們需要在從庫7005中執行READONLY命令,然後再擷取k4,就可以直接從從庫7005中擷取了:(但是好在在jedis中不需要這樣設定)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.