安裝部署任何一個應用其實都很簡單,只要安裝步驟一步一步來就好了。下面說一下 Redis 集羣搭建規劃,因爲集羣至少須要6個節點(3主3從模式),因此,若是沒有這麼多機器,本地也起不了那麼多虛擬機(電腦太爛),如今計劃是在一臺機器上模擬一個集羣,固然,這和生產環境的集羣搭建沒本質區別。html
咱們計劃集羣中 Redis 節點的端口號爲 9001-9006 ,端口號即集羣下各實例文件夾。數據存放在 端口號/data 文件夾中。node
mkdir /usr/local/redis-cluster cd redis-cluster/ mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
在 /usr/local/redis-cluster 下建立 bin 文件夾,用來存放集羣運行腳本,並把安裝好的 Redis 的 src 路徑下的運行腳本拷貝過來。看命令:git
cd /usr/local/redis-cluster mkdir bin cd /usr/local/redis-3.2.9/src cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
##咱們如今從已安裝好的 Redis 中複製一個新的實例到 9001 文件夾,並修改 redis.conf 配置。 cp -r /usr/local/redis /usr/local/redis-cluster/9001 ##注意,修改 redis.conf 配置和單點惟一區別是下面部分,其他仍是常規的這幾項: port 9001(每一個節點的端口號) daemonize yes bind 192.168.140.137(綁定當前機器 IP) dir /usr/local/redis-cluster/9001/data/(數據文件存放位置) pidfile /var/run/redis_9001.pid(pid 9001和port要對應) cluster-enabled yes(啓動集羣模式) cluster-config-file nodes-9001.conf(9001和port要對應) cluster-node-timeout 15000 appendonly yes
咱們已經完成了一個節點了,其實接下來就是機械化的再完成另外五個節點,其實能夠這麼作:把 9001 實例 複製到另外五個文件夾中,惟一要修改的就是 redis.conf 中的全部和端口的相關的信息便可,其實就那麼四個位置。開始操做:github
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006 ## \cp -rf 命令是不使用別名來複制,由於 cp 實際上是別名 cp -i,操做時會有交互式確認,比較煩人。
其實很是簡單了,你經過搜索會發現其實只有四個點須要修改,咱們全局替換下吧,進入相應的節點文件夾,作替換就行了。命令很是簡單:redis
vim /usr/local/redis-cluster/9002/redis/etc/redis.conf vim /usr/local/redis-cluster/9003/redis/etc/redis.conf vim /usr/local/redis-cluster/9004/redis/etc/redis.conf vim /usr/local/redis-cluster/9005/redis/etc/redis.conf vim /usr/local/redis-cluster/9006/redis/etc/redis.conf :%s/9001/9002 :%s/9001/9003 :%s/9001/9004 :%s/9001/9005 :%s/9001/9006 ## 其實咱們也就是替換了下面這四行: port 9002 dir /usr/local/redis-cluster/9002/data/ cluster-config-file nodes-9002.conf pidfile /var/run/redis_9002.pid
##這裏用了/usr/local/redis/bin/ 目錄下的redis服務啓動的, ## 也可使用9001各個目錄下的redis服務分別啓動 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9001/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9002/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9003/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9004/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9005/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9006/redis/etc/redis.conf
啓動成功看下圖:算法
/usr/local/redis-cluster/9001/redis/bin/redis-cli -c -h 192.168.140.137 -p 9001
**添加數據是會報錯: ** spring
(error) CLUSTERDOWN Hash slot not served
這是由於雖然咱們配置並啓動了 Redis 集羣服務,可是他們暫時還並不在一個集羣中,互相直接發現不了,並且尚未可存儲的位置,就是所謂的slot(槽)。shell
##因爲 Redis 集羣須要使用 ruby 命令,因此咱們須要安裝 ruby 和相關接口。 yum install ruby yum install rubygems gem install redis ##執行此行命令會報錯, 要使用本地上傳方式
下載地址: 安裝包GitHubvim
從本地上傳到Linux
將此文件拖到usr/local目錄下緩存
文件上傳到Linux中後 進入/usr/local/到執行下面的命令
gem install -l redis-3.2.1.gem
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.140.137:9001 192.168.140.137:9002 192.168.140.137:9003 192.168.140.137:9004 192.168.140.137:9005 192.168.140.137:9006
執行效果以下,發現有三主三備:
目前來看,9001-9003 爲主節點,9004-9006 爲從節點,並向你確認是否贊成這麼配置。輸入 yes 後,會開始集羣建立。
M: fbec3c1091ff20adbabf8d144043cc3abae9a7f9 ##爲主節點Id S: 09726b68f4a1c849e8e188bd45d506aed17fd970 192.168.140.137:9004 slots: (0 slots) slave replicates fbec3c1091ff20adbabf8d144043cc3abae9a7f9 ##從節點下對應主節點Id
## 這裏要輸入-c,表示集羣環境 /usr/local/redis-cluster/9001/redis/bin/redis-cli -c -h 192.168.140.137 -p 9001 set name 123456 ## 會發現它自動跳轉到9002redis上面
spring: redis: database: 0 # host: 132.168.44.127 # port: 6379 # password: 123456 jedis: pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0 timeout: 10000 cluster: nodes: - 192.168.140.137:9001 - 192.168.140.137:9002 - 192.168.140.137:9003 - 192.168.140.137:9004 - 192.168.140.137:9005 - 192.168.140.137:9006 ###擴展註冊方式 代碼獲取到配置文件 靈活該密碼
Redis集羣默圦是不支持亊各,可是亊各能夠在単獨節點上能夠支持 寫插件Redis+Lua