本篇文章給大家分享的內容是關於Redis叢集搭建教程的總結,內容很詳細,有需要的朋友可以參考一下,希望可以協助到大家。
前言
本文收集並整理了Redis叢集搭建的網文、網站、自己的經驗。水平有限,只分享環境搭建。本文分為以下幾個部分:
Redis 安裝
Rvm 安裝更換源
Rvm Ruby 安裝、使用、卸載
RubyGems 升級、更換源、安裝redis
叢集配置
成果測試
請大家按照以上步驟來查看此文
說明:
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
強制終止
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: 沒有那個檔案或目錄
相關推薦:
CentOS7系統安裝和配置Memcached的方法
PHP中鎖機制的應用