主從環境
centos7.6
redis4.0.1
主 | 從 |
---|---|
192.168.181.139:6379 | 192.168.181.136:6379 |
192.168.181.136:6380 | 192.168.181.137:6380 |
192.168.181.137:6381 | 192.168.181.139:6381 |
集群實例配置
這里展示192.168.181.139:6379節點的,其他配置修改ip、端口號和文件名
bind 192.168.181.139
port 6379
pidfile /var/run/redis-master-6379.pid
logfile "/data/logs/redis/redis-master-6379.log"
dbfilename dump-master-6379.rdb
dir "/data/redis"
appendonly yes
appendfilename "appendonly-master-6379.aof"
aof-use-rdb-preamble yes
cluster-enabled yes
cluster-config-file nodes-master-6379.conf
cluster-node-timeout 10000
啟動實例
完成各個實例啟動,該過程略,自行完成實例啟動
配置三主三從
配置過程有兩種方法,第一個是手動配置,第二個是采用redis-trib.rb工具配置,這先用手動配置。集群配置過程分為節點握手和數據槽分配以及主從關系配置三個操作構成。
手動配置三主三從
以下操作在192.168.181.139主機上完成,集群信息共享,所以只用一個節點操作即可
節點握手
# 實例發現
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.139 6379
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.139 6381
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.136 6380
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.136 6379
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.137 6381
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.137 6380
*數據槽分配
# 分配數據槽
for i in {0..5400}; do redis-cli -h 192.168.181.139 -p 6379 cluster addslots $i; done > /dev/null
for i in {5401..11000}; do redis-cli -h 192.168.181.136 -p 6380 cluster addslots $i; done > /dev/null
for i in {11001..16383}; do redis-cli -h 192.168.181.137 -p 6381 cluster addslots $i; done > /dev/null
到這一步,一個三主的redis集群已經搭建起來了,接下來配置主從關系,注意,盡量不要讓一對主從關系出現在同一個系統上,避免系統故障帶來損失
配置集群主從關系是通過實例ID的來配置的,實例ID是唯一性的,查看集群節點,注意查看節點ID,接下來配置主從關系需要用到
# 查看節點ID
[root@ware2 ~]# redis-cli -h 192.168.181.139 -p 6379 cluster nodes
0b03d2098d7cb7e10d540747eed9b2804c424d18 192.168.181.136:6380@16380 master - 0 1551059531000 2 connected 5401-11000
4bf34e9120d54a4d3d609fdea3cf5613787f0d2d 192.168.181.139:6379@16379 myself,master - 0 1551059528000 1 connected 0-5400
ea9e5923466ee0df2447f10c3835ddf1041c0d7f 192.168.181.137:6380@16380 master - 0 1551059531661 5 connected
f0e6d8f9d84209623613dd48a00c8c263b5ecc88 192.168.181.137:6381@16381 master - 0 1551059531000 0 connected 11001-16383
c32bb72dda43f27dd9554cfda556de10ea1220cf 192.168.181.139:6381@16381 master - 0 1551059532000 4 connected
3c2e20644c38878cceb5e4b89a9c9ba7adf03d2a 192.168.181.136:6379@16379 master - 0 1551059532669 3 connected
配置主從關系
# 192.168.181.136:6379作為4bf34e9120d54a4d3d609fdea3cf5613787f0d2d(192.168.181.139:6379)的從實例,以下類似
redis-cli -h 192.168.181.136 -p 6379 cluster replicate 4bf34e9120d54a4d3d609fdea3cf5613787f0d2d
redis-cli -h 192.168.181.137 -p 6380 cluster replicate 0b03d2098d7cb7e10d540747eed9b2804c424d18
redis-cli -h 192.168.181.139 -p 6381 cluster replicate f0e6d8f9d84209623613dd48a00c8c263b5ecc88
到這一步,集群配置完成,可以用以下命令分別查看主從狀態和集群信息
# 主從狀態
redis-cli -h 192.168.181.139 -p 6379 cluster nodes
# 集群信息
redis-cli -h 192.168.181.139 -p 6379 cluster info
使用redis-trib.rb創建集群
該工具在redis安裝后的src目錄,對應配置redis集群非常方便,需要安裝ruby(version>2.2)環境
本次實驗在centos7.6,但自帶的ruby2.0版本低於要求,需要手動安裝ruby
安裝ruby
# 安裝rvm
# 通過gpg2導入密鑰
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
https://rvm.io/mpapis.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
rvm常見操作
# 查看rvm庫中已知的ruby版本
rvm list known
# 安裝一個ruby版本
rvm install 2.3.3
# 使用一個ruby版本
rvm use 2.3.3
# 設置默認版本
rvm use 2.3.3 --default
# 卸載一個已知版本
rvm remove 2.0.0
# 安裝redis,這一步很關鍵
gem install redis
到這一步已經可以使用redis-trib.rb配置集群了
使用redis-trib.rb create命令完成節點握手和槽分配過程
注意:指定 主從節點時,前三個為主節點;后三個為對應從節點
# 在這之前重新搭配環境,刪除文件,然后啟動各個實例
redis-trib.rb create --replicas 1 192.168.181.139:6379 192.168.181.136:6380 192.168.181.137:6381 192.168.181.139:6381 192.168.181.136:6379 192.168.181.137:6380