1. 程式人生 > 其它 >redis3.2.1主從分離以及哨兵模式

redis3.2.1主從分離以及哨兵模式

技術標籤:javaredis

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的路徑

masterauth “123456” #主redis的密碼
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