Redis單機和叢集環境搭建

來源:互聯網
上載者:User

標籤:http   分離   指定   分布式   建議   ror   解決方案   only   cal   

一、安裝單機版redis 1、可以自己去官網下載,當然也可以用課程提供的壓縮包
# yum install gcc# wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz# tar -xzvf tcl8.6.1-src.tar.gz# cd  /usr/local/tcl8.6.1/unix/# ./configure  # make && make install
2、使用redis-3.2.8.tar.gz(穩定版)
# tar -zxvf redis-3.2.8.tar.gz# cd /usr/local/redis-3.2.8# make# make test# make install

3、redis的生產環境啟動方案(1)redis utils目錄下,有個redis_init_script指令碼
(2)將redis_init_script指令碼拷貝到linux的/etc/init.d目錄中,將redis_init_script重新命名為redis_6379,6379是我們希望這個redis執行個體監聽的連接埠號碼
(3)修改redis_6379指令碼的第6行的REDISPORT,設定為相同的連接埠號碼(預設就是6379)
(4)建立兩個目錄:/etc/redis(存放redis的設定檔),/var/redis/6379(存放redis的持久化檔案)
(5)修改redis設定檔(預設在根目錄下,redis.conf),拷貝到/etc/redis目錄中,修改名稱為6379.conf
(6)修改redis.conf中的部分配置為生產環境

daemonize    yes                            #讓redis以daemon進程運行pidfile      /var/run/redis_6379.pid        #設定redis的pid檔案位置port        6379                           #設定redis的監聽連接埠號碼dir         /var/redis/6379                 #設定持久化檔案的儲存位置

(7)啟動redis,執行cd /etc/init.d, chmod 777 redis_6379,./redis_6379 start

(8)確認redis進程是否啟動,ps -ef | grep redis

(9)讓redis跟隨系統啟動自動啟動

在redis_6379指令碼中,最上面,加入兩行注釋

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

chkconfig redis_6379 on

4、redis cli的使用
redis-cli SHUTDOWN                                  #串連原生6379連接埠停止redis進程redis-cli -h 127.0.0.1 -p 6379 SHUTDOWN         #制定要串連的ip和連接埠號碼redis-cli PING                                      #ping redis的連接埠,看是否正常redis-cli                                           #進入互動式命令列SET k1 v1GET k1
二、Redis叢集(讀寫分離+高可用+多master)1、redis cluster的重要配置

       cluster-enabled <yes/no>

  cluster-config-file <filename>:這是指定一個檔案,供cluster模式下的redis執行個體將叢集狀態儲存在那裡,包括叢集中其他機器的資訊,比如節點的上線和下限,容錯移轉,不是我們去維護的,給它指定一個檔案,讓redis自己去維護的

  cluster-node-timeout <milliseconds>:節點存活逾時時間長度,超過一定時間長度,認為節點宕機,master宕機的話就會觸發主備切換,slave宕機就不會提供服務

2、在三台機器上啟動6個redis執行個體

(1)在eshop-cache03上部署目錄

  /etc/redis(存放redis的設定檔);

  /var/redis/6379(存放redis的持久化檔案)

(2)編寫設定檔

redis cluster叢集,要求至少3個master,去組成一個高可用,健壯的分布式的叢集,每個master都建議至少給一個slave,3個master,3個slave,最少的要求

正式環境下,建議都是說在6台機器上去搭建,至少3台機器

保證,每個master都跟自己的slave不在同一台機器上,如果是6台自然更好,一個master+一個slave就死了

3、台機器去搭建6個redis執行個體的redis cluster
# mkdir -p /etc/redis-cluster# mkdir -p /var/log/redis# mkdir -p /var/redis/7001

.conf設定檔:

port 7001cluster-enabled yescluster-config-file /etc/redis-cluster/node-7001.confcluster-node-timeout 15000daemonize    yes                            pidfile        /var/run/redis_7001.pid                         dir         /var/redis/7001        logfile /var/log/redis/7001.logbind 192.168.31.187        appendonly yes

  至少要用3個master節點啟動,每個master加一個slave節點,先選擇6個節點,啟動6個執行個體

  將上面的設定檔,在/etc/redis下放6個,分別為: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf

(3)準備生產環境的啟動指令碼

  在/etc/init.d下,放6個啟動指令碼,分別為: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006

  每個啟動指令碼內,都修改對應的連接埠號碼

(4)分別在3台機器上,啟動6個redis執行個體

將每個設定檔中的slaveof給刪除

3、建立叢集
# yum install -y ruby# yum install -y rubygems
# gem install redis

 3.1、在執行 gem install redis時候,出現
    ERROR:  Error installing redis:
        redis requires Ruby version >= 2.2.2.
 這是由於linux本身預設的ruby版本過低
  

    # sudo yum install curl    # curl -L get.rvm.io | bash -s stable    # source /usr/local/rvm/scripts/rvm    # rvm list known    # rvm install 2.5.1    # rvm use 2.5.1    # rvm use 2.5.1 --default

   3.2、執行中出現:[curl: (35) SSL connect error
  解決方案:升級網路安全服務即可。
 

# yum update nss 
# cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin

# redis-trib.rb create --replicas 1 192.168.51.118:7001 192.168.51.118:7002 192.168.51.119:7003 192.168.51.119:7004 192.168.51.120:7005 192.168.51.120:7006
>>> Creating cluster
[ERR] Sorry, can‘t connect to node 192.168.51.119:7003

 出現這個error,是由於防火牆導致,此時,關閉防火牆的方法為:

  3.3、永久性生效

開啟:chkconfig iptables on

關閉:chkconfig iptables off

  3.4、 即時生效,重啟後失效

開啟:service iptables start

關閉:service iptables stop


--replicas: 每個master有幾個slave

6台機器,3個master,3個slave,盡量自己讓master和slave不在一台機器上

>>> Creating cluster>>> Performing hash slots allocation on 6 nodes...Using 3 masters:192.168.51.118:7001192.168.51.119:7003192.168.51.120:7005Adding replica 192.168.51.119:7004 to 192.168.51.118:7001Adding replica 192.168.51.118:7002 to 192.168.51.119:7003Adding replica 192.168.51.120:7006 to 192.168.51.120:7005M: c929af23011ce7e6888721845d1d300196c3046f 192.168.51.118:7001   slots:0-5460 (5461 slots) masterS: 60643541639fa838a23708027dfd8f05084fa0bb 192.168.51.118:7002   replicates c330af95e5053ead51943d17b7ede77ff26e357cM: c330af95e5053ead51943d17b7ede77ff26e357c 192.168.51.119:7003   slots:5461-10922 (5462 slots) masterS: bde24d208a5c42771348bbedb2351f0b7ef9c06a 192.168.51.119:7004   replicates c929af23011ce7e6888721845d1d300196c3046fM: 422632826b23edf928d213e980ea0680b1a15ac0 192.168.51.120:7005   slots:10923-16383 (5461 slots) masterS: 1e242b9cd55bd702dd386ed3d74916ad6fb78a10 192.168.51.120:7006   replicates 422632826b23edf928d213e980ea0680b1a15ac0Can I set the above configuration? (type ‘yes‘ to accept): yes

 redis-trib.rb check 192.168.31.187:7001

4、讀寫分離+高可用+多master

讀寫分離:每個master都有一個slave
高可用:master宕機,slave自動被切換過去
多master:橫向擴容支援更大資料量

Redis單機和叢集環境搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.