redis3.2.1主從分離以及哨兵模式
Redis
此處使用1主2從3哨兵,首先備好三臺虛擬機器,我的三臺虛擬機器IP分別是192.168.200.129,192.168.200.130,192.168.200.131
主從分離
第一步:下載redis
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
第二步:解壓到指定目錄(按照個人喜好)
tar -zxvf redis-3.2.1.tar.gz -c /usr/local/redis
第三步:如果系統沒有安裝gcc,先安裝
yum install -y gcc g++ gcc-c++ make
第四步:進入到redis目錄,執行make
第五步:此處只保留了redis.conf,sentinel.conf檔案以及src目錄下redis-*的檔案,並分別儲存到了conf目錄和bin目錄下(根據個人喜好修改)
第六步:修改redis.conf檔案
主的配置檔案:
此處只展示需要修改的內容
bind 192.168.200.131 #繫結的IP
protected-mode no #no:外部網路可以直接訪問;yes:需配置bind ip或者設定訪問密碼
daemonize yes #redis會在後臺執行
loglevel notice
logfile “/usr/local/redis/log/redis.log” #日誌檔案的地址
dir “/usr/local/redis/db” #儲存rdb的路徑
requirepass “123456” #redis的密碼
從的配置檔案
在主的基礎上新增
slaveof 192.168.200.131 6379
第六步:啟動redis,先進入redis目錄
bin/redis-server conf/redis.conf
第七步:驗證是否成功
bin/redis-cli -h 192.168.200.131 -p 6379 -a 123456 info
哨兵模式
哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的程序,作為程序,它會獨立執行。其原理是哨兵通過傳送命令,等待Redis伺服器響應,從而監控執行的多個Redis例項。當主伺服器掛掉的時候,sentinel會指定其中一臺從伺服器作為主伺服器,掛掉的主伺服器重啟後則變成了從伺服器
配置檔案修改
bind 192.168.200.131 #綁定當前伺服器的ip
daemonize yes #sentinel會在後臺執行
protected-mode no #禁止保護模式
sentinel monitor mymaster 192.168.200.131 6379 2 # 配置監聽的主伺服器,這裡sentinel monitor代表監控,mymaster代表伺服器的名稱,可以自定義,192.168.200.131代表監控的主伺服器,6379代表埠,2代表只有兩個或兩個以上的哨兵認為主伺服器不可用的時候,才會進行failover操作。
sentinel auth-pass mymaster 123456 # sentinel author-pass定義服務的密碼,mymaster是服務名稱,123456是Redis伺服器密碼
啟動sentinel
bin/redis-sentinel conf/sentinel.conf
結合springboot
引入兩個需要的包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
修改配置application.yml配置檔案,和連單機模式的redis不同,哨兵模式的需要連的是sentinel
spring:
redis:
sentinel:
master: mymaster
nodes: 192.168.200.129:26379, 192.168.200.130:26379, 192.168.200.131:26379
password: 123456
jedis:
pool:
# 連線池最大連線數,預設8個,(使用負數表示沒有限制)
max-active: 8
# 連線池最大阻塞等待時間,(使用負值表示沒有限制)
max-wait: -1
# 連線池中的最大空閒連線
max-idle: 8
# 連線池中的最小空閒連線
min-idle: 0
# 連線超時時間
timeout: 1000