Redis叢集搭建教程的總結

來源:互聯網
上載者:User
本篇文章給大家分享的內容是關於Redis叢集搭建教程的總結,內容很詳細,有需要的朋友可以參考一下,希望可以協助到大家。

前言

本文收集並整理了Redis叢集搭建的網文、網站、自己的經驗。水平有限,只分享環境搭建。本文分為以下幾個部分:

  • Redis 安裝

  • Rvm 安裝更換源

  • Rvm Ruby 安裝、使用、卸載

  • RubyGems 升級、更換源、安裝redis

  • 叢集配置

  • 成果測試

請大家按照以上步驟來查看此文

說明:

  • 僅限學習使用,若用於線上,本人不承擔任何責任。

  • 如有問題,請在下方留言。

  • 文中有些命令沒有帶sudo,是因為我用的root許可權。

Redis 安裝

編譯安裝

wget http://download.redis.io/releases/redis-4.0.10.tar.gztar xzf redis-4.0.10.tar.gzcd redis-4.0.10make PREFIX=/usr/local/redis install

註:如果不想將Redis作為一個服務,到這就已經安裝完了

將Redis做成一個服務 參考:Redis Quick Start

  • Create a directory where to store your Redis config files and your data:(有道詞典:建立一個目錄來儲存Redis設定檔和資料:)

    # 這隻是一個目錄結構,大家不要著急為什麼自己沒有,往下看,一步一步來[root@amor ~]# cd /usr/local/redis[root@amor redis]# tree.├── bin  # 編譯安裝指定目錄後自動組建目錄及檔案│   ├── redis-benchmark│   ├── redis-check-aof│   ├── redis-check-rdb│   ├── redis-cli│   ├── redis-sentinel -> redis-server│   └── redis-server├── conf # 自己建立的儲存設定檔的目錄及自己建立的單個Redis設定檔│   └── 6379.conf└── data # 自己建立的儲存Redis資料的目錄及單個Redis服務資料存放區目錄    └── 63794 directories, 7 files

    注意:cp /usr/src/redis-4.0.10/src/redis-trib.rb /usr/local/redis/bin/ 後面建立叢集要用到

  • Copy the init script that you'll find in the Redis distribution under the utils directory into /etc/init.d. We suggest calling it with the name of the port where you are running this instance of Redis. For example:(有道詞典:將在utils目錄下的Redis發行版中找到的init指令碼複製到/etc/init.d中我們建議使用正在運行這個Redis執行個體的連接埠的名稱來調用它。例如:)

    sudo cp utils/redis_init_script /etc/init.d/redis_6379
  • Edit the init script.(有道詞典:編輯init指令碼。)

    #!/bin/sh# chkconfig 2345 90 25                         # linux 開機啟動設定 2345 運行層級 90 啟動優先順序(參考 memcached head /etc/rc.d/rc3.d/S90memcached ) 25 關閉優先順序 (參考memcached)# Simple Redis init.d script conceived to work on Linux systems# as it does use of the /proc filesystem.### BEGIN INIT INFO# Provides:     redis_6379# Default-Start:        2 3 4 5# Default-Stop:         0 1 6# Short-Description:    Redis data structure server# Description:          Redis data structure server. See https://redis.io### END INIT INFOREDISPORT=6379EXEC=/usr/local/redis/bin/redis-server         # 修改為自己的可執行檔所在目錄CLIEXEC=/usr/local/redis/bin/redis-cli         # 修改為自己的可執行檔所在目錄PIDFILE=/var/run/redis_${REDISPORT}.pid        # 預設就好CONF="/usr/local/redis/conf/${REDISPORT}.conf" # 修改為自己的設定檔存放目錄···省略···esac

    開始修改redis.conf

    Make sure to modify REDISPORT accordingly to the port you are using. Both the pid file path and the configuration file name depend on the port number.(有道詞典:請確保根據您正在使用的連接埠對重新分配進行相應的修改。pid檔案路徑和設定檔名都取決於連接埠號碼。)

    • Set daemonize to yes (by default it is set to no). (需要修改為 yes)

    • Set the pidfile to /var/run/redis_6379.pid (modify the port if needed). (預設即可)

    • Change the port accordingly. In our example it is not needed as the default port is already 6379. (預設即可,設定叢集的時候需要拷貝設定檔並且重新設定連接埠)

    • Set your preferred loglevel. (預設即可)

    • Set the logfile to /var/log/redis_6379.log (預設好像為空白,需要修改)

    • Set the dir to /var/redis/6379 (very important step!) (redis資料儲存目錄,需要修改位置自訂路徑)

    • sudo cp redis.conf /usr/local/redis/conf/6379.conf (修改成自己定義的目錄。參考上述目錄結構 redis.conf 在你們redis解壓目錄中的src目錄下)

    • sudo mkdir /usr/local/redis/data/6379 (修改成自己定義的目錄。參考上述目錄結構)

    • Edit the configuration file, making sure to perform the following changes:(有道詞典:編輯設定檔,確保執行以下更改:)

      註:上面的意思是讓你們修改 /usr/local/redis/conf/6379.conf,用vim 開啟,搜尋上述關鍵詞即可,參考以下設定(如果所有的步驟都是粘貼複製的走下來的,直接修改成下面這樣:0.0):
      port 6379daemonize yespidfile /var/run/redis_6379.pidloglevel noticelogfile "/var/log/redis_6379.log"dir /usr/local/redis/data/6379
  • Finally add the new Redis init script to all the default runlevels using the following command:(有道詞典:最後,使用以下命令將新的Redis init指令碼添加到所有預設的運行層級:)

    # ubuntusudo update-rc.d redis_6379 defaults
    # centoschkconfig --add redis_6379
  • You are done! Now you can try running your instance with:

    sudo /etc/init.d/redis_6379 start

測試

Redis停止、啟動

yum 安裝

  • /etc/init.d/redis-server stop

  • /etc/init.d/redis-server start

  • /etc/init.d/redis-server restart

源碼安裝 三種方式

sudo /etc/init.d/redis_6379 start/usr/local/redis/bin/redis-server redis.conf  # 注意此處預設:設定檔路徑redis-cli -h 127.0.0.1 -p 6379 shutdown

註:如果只是停止本地redis 請執行: redis-cli shutdown

強制終止

  • kill -9 進程號

  • pkill redis

Rvm 安裝 更換源

curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -curl -L get.rvm.io | bash -s stable rvm user gemsets # 建立使用者配置目錄,更換源的時候需要向 db 檔案寫入配置資訊echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db # 更換源

Rvm Ruby 安裝、使用、卸載

rvm list knownrvm install 2.6rvm use 2.6yum -y remove ruby # 卸載centos yum 安裝的 1.8 版本ruby --versionrvm uninstall ruby # 此處帶不帶版本自己測試

RubyGems 升級、更換源、安裝redis

gem install rubygems-update rubygems-updategem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/gem sources -l gem install redis

叢集配置

註:下面的內容是我自己參考這篇博文加上我熟悉Redis安裝後自己的配置過程。大家可以參考NrwLm - Redis 叢集搭建詳細指南。

開啟 Redis cluster

cd /usr/local/redis/confcp 6379.conf redis.conf.default  # 用作叢集其他設定檔的藍本sudo vim redis.conf.default

修改內容如下

bind 192.168.2.123  # 綁定當前機器 IPcluster-enabled yes # 取消注釋,啟動叢集模式cluster-config-file nodes-6379.conf # 取消注釋,修改為 /usr/local/redis/data/6379/nodes-6379.conf  (如果遇到需要重建立立叢集,不將此項修改為指定路徑而和啟動設定檔放在一起,會導致建立叢集時,刪除重建conf 檔案)cluster-node-timeout 15000 # 取消注釋appendonly yes # 將 no 修改為 yes

建立設定檔

cd /usr/local/redis/confecho 9001.conf 9002.conf 9003.conf 9004.conf 9005.conf 9006.conf | xargs -n 1 cp -v redis.conf.defaultsed -i 's/6379/9001/g'  9001.conf sed -i 's/6379/9002/g'  9002.conf sed -i 's/6379/9003/g'  9003.conf sed -i 's/6379/9004/g'  9004.conf sed -i 's/6379/9005/g'  9005.conf sed -i 's/6379/9006/g'  9006.conf

建立資料存放區檔案

cd /usr/local/redis/datamkdir -p 9001 9002 9003 9004 9005 9006# 後期可能需要刪除該檔案件下的檔案,用於重建叢集,所以,刪除命令也寫一下rm -rf 900*/*

啟動Redis cluster 節點

/usr/local/redis/bin/redis-server /usr/local/redis/conf/9001.conf/usr/local/redis/bin/redis-server /usr/local/redis/conf/9002.conf/usr/local/redis/bin/redis-server /usr/local/redis/conf/9003.conf /usr/local/redis/bin/redis-server /usr/local/redis/conf/9004.conf/usr/local/redis/bin/redis-server /usr/local/redis/conf/9005.conf/usr/local/redis/bin/redis-server /usr/local/redis/conf/9006.conf

建立叢集

/usr/local/redis/bin/redis-trib.rb create --replicas 1 192.168.2.123:9001 192.168.2.123:9002 192.168.2.123:9003 192.168.2.123:9004 192.168.2.123:9005 192.168.2.123:9006

測試

執行命令: /usr/local/redis/bin/redis-cli -c -h 192.168.2.123 -p 9001

問題匯總

  • 如果遇到timeout 請查看自己的防火牆,安裝寶塔的尤其注意,請先去安全裡面允許存取 9001:9006 的連接埠

  • redis叢集 Waiting for the cluster to join 一直等待,redis叢集不僅需要開通redis用戶端串連的連接埠,而且需要開通叢集匯流排連接埠,叢集匯流排連接埠為redis用戶端串連的連接埠 + 1000

  • redis /usr/bin/env: ruby: 沒有那個檔案或目錄

    • 執行這個命令 rvm get stable --auto-dotfiles,或者執行 nvm list 有詳細的錯誤說明(查了資料說,線上不要用rvm安裝ruby)

    • 這是我自己的解決方案

      # 把這個添加到 /etc/profile 檔案中(放到最後就行)rvm use ruby-2.6.0-preview2

相關推薦:

CentOS7系統安裝和配置Memcached的方法

PHP中鎖機制的應用

相關文章

聯繫我們

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