前言
一組Redis Cluster是由多個Redis實例組成,官方推薦使用6實例,其中3個爲主節點,3個爲從節點。一旦有主節點發生故障的時候,Redis Cluster可以選舉出對應的從結點成爲新的主節點,繼續對外服務,從而保證服務的高可用性,本文使用兩臺虛擬機添加6塊網卡,充當3主3從。
實驗環境
IP地址分配如下
主機名 | IP地址 |
---|---|
主服務器 | 192.168.7.128,192.168.7.130,192.168.7.131 |
從服務器 | 192.168.7.129,192.168.7.132,192.168.7.133 |
實驗過程
1、安裝redis
(1)安裝環境包
[root@localhost ~]# yum install gcc gcc-c++ make -y
(2)編譯安裝redis
[root@localhost redis]# tar zxvf redis-5.0.7.tar.gz -C /opt
[root@localhost redis]# cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]# make
[root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis/ install
(3)配置redis
[root@localhost redis-5.0.7]# cd utils/
[root@localhost utils]# ./install_server.sh
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/redis/bin/redis-server
[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/
2、redis集羣配置
(1)在所有節點上配置
註釋掉 bind項,redis中bind選項默認監聽所有網卡
//關閉保護模式
protected-mode no
port 6379
#以獨立進程啓動
daemonize yes
#開啓羣集功能
cluster-enabled yes
#羣集名稱文件設置
cluster-config-file nodes-6379.conf
#羣集超時間設置
cluster-node-timeout 15000
#開啓aof持久化
appendonly yes
#重啓服務
[root@localhost ~]# /etc/init.d/redis_6379 restart
正常啓動後,在/var/lib/redis/6379/目錄下會多出兩個文件
appendonly.aof:持久化文件
node-6379.conf:節點首次啓動生成的配置文件
(2)在master上配置(此過程使用的是線網安裝,需要時間較長)
#導入key文件
[root@localhost ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
#安裝rvm
[root@localhost ~]# curl -sSL https://get.rvm.io | bash -s stable
#打開下面網址,將腳本複製到/opt目錄下,執行
https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer
#執行環境變量
[root@localhost ~]# source /etc/profile.d/rvm.sh
#列出Ruby可安裝的版本
[root@localhost ~]# rvm list known
#安裝Ruby2.4.1版本
[root@localhost ~]# rvm install 2.4.1
#使用Ruby2.4.1版本
[root@localhost ~]# rvm use 2.4.1
#查看當前Ruby2.4.1版本
[root@localhost ~]# ruby -v
#再次安裝redis
[root@localhost ~]# gem install redis
(3)創建集羣
[root@localhost ~]# redis-cli --cluster create 192.168.7.128:6379 192.168.7.130:6379 192.168.7.131:6379 192.168.7.129:6379 192.168.7.132:6379 192.168.7.133:6379 --cluster-replicas 1
在羣集上,寫入的數據會隨機保存到另一個地址節點上,數據刪除也會同步刪除
在從服務器上,無法創建和查看數據具體內容
在主服務器上可隨意創建
[root@localhost ~]# redis-cli -h 192.168.7.128 -p 6379
192.168.7.128:6379> set people lisi
OK
192.168.7.128:6379> quit
[root@localhost ~]# redis-cli -h 192.168.7.129 -p 6379
192.168.7.129:6379> get people
(error) MOVED 6247 192.168.7.128:6379
192.168.7.129:6379> quit
[root@localhost ~]# redis-cli -h 192.168.7.130 -p 6379
192.168.7.130:6379> get people
"lisi"