環境:centos7.6 redis4.0
模擬在一個Centos7下安裝6個redis實例搭建集群 3主3從
安裝wget
yum -y install wget
安裝gcc
yum -y install gcc automake autoconf libtool make
下載redis
cd /usr/local/software
wget http://download.redis.io/releases/redis-4.0.0.tar.gz
解壓
tar -xzvf redis-4.0.0.tar.gz
切換至程序目錄
cd redis-4.0.0
執行make編譯Redis:
make MALLOC=libc
注意:make命令執行完成編譯后,會在src目錄下生成6個可執行文件,分別是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-rdb、redis-sentinel。
安裝Redis:
make install
--------------------
計划集群中 Redis 節點的端口號為 7001-7006 ,端口號即集群下各實例文件夾。數據存放在 端口號/data 文件夾中,日志存放在 端口號/log 文件夾中
cd /usr/local/software
mkdir redis-cluster
cd redis-cluster
mkdir -p 7001/data 7002/data 7003/data 7004/data 7005/data 7006/data
mkdir -p 7001/log 7002/log 7003/log 7004/log 7005/log 7006/log
把安裝好的Redis的redis.conf 拷貝到這6個端口目錄中
cd redis-4.0.0
cp redis.conf /usr/local/software/redis_cluster/7001
cp redis.conf /usr/local/software/redis_cluster/7002
cp redis.conf /usr/local/software/redis_cluster/7003
cp redis.conf /usr/local/software/redis_cluster/7004
cp redis.conf /usr/local/software/redis_cluster/7005
cp redis.conf /usr/local/software/redis_cluster/7006
修改各個端口的redis配置內容如下,以7001為例
#端口號 port 7001 #默認ip為127.0.0.1 需要改為其他節點機器可訪問的ip(本機ip) 否則創建集群時無法訪問對應的端口,無法創建集群 bind 192.168.182.129 #數據文件存放位置 dir /usr/local/software/redis-cluster/7001/data/ #日志文件存放位置 logfile /usr/local/software/redis-cluster/7001/log/redis.log #redis后台運行 daemonize yes #為保證redis-trib.rb工具的正常運行,需要設置為no,完成后可以改回yes,但每次使用redis-trib.rb都需要改回為no protected-mode no #pidfile文件 pidfile /var/run/redis_7001.pid #開啟集群 cluster-enabled yes #集群的配置 配置文件首次啟動自動生成 cluster-config-file nodes_7001.conf #請求超時 默認15秒,可自行設置 cluster-node-timeout 15000 #rdb文件名 dbfilename dump-7001.rdb #aof日志開啟 有需要就開啟,它會每次寫操作都記錄一條日志 appendonly yes #aof文件名 appendfilename "appendonly-7001.aof" #設置密碼 masterauth 123456 requirepass 123456
注意:各個節點密碼都必須一致,否則Redirected就會失敗
在redis-cluster 下創建 bin 文件夾,用來存放集群運行腳本,並把安裝好的 Redis 的 src 路徑下的運行腳本拷貝過來
cd /usr/local/software/redis_cluster
mkdir bin
cd /usr/local/software/redis-4.0.0
cp -r src/* /usr/local/software/redis-cluster/bin/
啟動節點
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7001/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7002/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7003/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7004/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7005/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7006/redis.conf
可以檢查一下6個節點是否啟動成功:ps -ef | grep redis
創建集群
由於 Redis 集群需要使用 ruby 命令,所以我們需要安裝 ruby 和相關接口
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
在執行gem install redis時
如果提示:
gem install redis
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0
原因,ruby版本小於了2.3.0
安裝RVM
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -L https://get.rvm.io | bash -s stable
find / -name rvm -print
source /usr/local/rvm/scripts/rvm
查看rvm庫中已知的ruby版本
rvm list known
根據列表顯示 選擇一個高版本安裝
rvm install 2.5.5
使用一個ruby版本
rvm use 2.5.5
設置默認版本
rvm use 2.5.5 --default
查看ruby版本
ruby --version
繼續執行安裝redis
gem install redis
Redis 官方提供了 redis-trib.rb 這個工具,就在解壓目錄的 src 目錄中
上面已經將它復制到 /usr/local/software/redis_cluster/bin 目錄中,可以直接在命令行中使用了
/usr/local/software/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.182.129:7001 192.168.182.129:7002 192.168.182.129:7003 192.168.182.129:7004 192.168.182.129:7005 192.168.182.129:7006
節點設置密碼之后如果需要使用redis-trib.rb的各種命令
則會報錯 Sorry, can’t connect to node
解決方法:找到client.rb 然后修改默認password為上面設置的密碼
client.rb路徑可以通過find命令查找:
find / -name 'client.rb'
類似/usr/local/rvm/gems/ruby-2.5.5/gems/redis-4.1.2/lib/redis/client.rb
執行過程中,可能需要輸入 yes
從屏幕輸出,可以很容易地看出哪些是主(master)節點,哪些是從(slave)節點
--replicas 1 表示主從復制比例為 1:1,即一個主節點對應一個從節點;然后,默認給我們分配好了每個主節點和對應從節點服務,以及 solt 的大小
驗證是否成功安裝好集群
通過客戶端命令連接上,通過集群命令看一下狀態和節點信息
/usr/local/software/redis-cluster/bin/redis-cli -c -h 192.168.182.129 -p 7001 -a 123456
cluster info
cluster nodes
設置一個key值
set key1 value1
keys *
get key1
然后登錄另外一個實例
/usr/local/software/redis-cluster/bin/redis-cli -c -h 192.168.182.129 -p 7002 -a 123456
get key1
如果返回value1,說明集群運作正常
開放指定端口
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --zone=public --add-port=7006/tcp --permanent
firewall-cmd --reload