redis主從和哨兵搭建

redis環境搭建

環境:: centos6.8,redis5.0.5,springboot 2.2.2.RELEASE*

本文主要介紹搭建簡單的redis環境, 我們知道redis支持橫向擴展:主從,集羣和分片,高可用:哨兵機制,那麼怎麼搭建一個可擴展又高可用的redis呢.

1.安裝redis單機

安裝redis單機,網上有很多例子,這裏就不一一表述.
但是有幾處經歷的錯誤記錄一下

  • xx command not found

CentOS默認沒有安裝gcc,這會導致我們無法make成功。使用yum安裝:
yum -y install gcc

  • error: jemalloc/jemalloc.h: No such file or directory

原因是jemalloc重載了Linux下的ANSI C的malloc和free函數。解決辦法:make時添加參數。
make MALLOC=libc

2.redis主從搭建

redis主從最好大於等於三個,這樣master掛了之後,還能保存有主從結構,哨兵的話奇數個就好(master掛了投票選舉leader的時候奇數個可以一次成功),一般爲1主二從三哨兵的結構.

ps:這裏是用虛擬機進行的搭建.所有的主從都在一臺服務器上,不過流程是大同小異的!
進入redis 目錄,copy redis.conf文件三份,分別命名爲redis-master.conf,redis-slave-6378.conf,redis-slave-6377.conf 我將他放在redis的外層新建redis-conf文件夾,看個人習慣,都可以.如下

在這裏插入圖片描述

編輯redis-master.conf,主文件是安裝單機的時候需要修改的地方,我這裏羅列一下比較重要的地方

bind 0.0.0.0#任意ip都可以連接,或者直接注掉

protected-mode no#關閉保護,允許非本地連接

port 6379#端口號

daemonize yes#後臺運行

pidfile /var/run/redis_6379.pid#進程守護文件,就是存放該進程號相關信息的地方

appendonly yes#開啓aof日誌形式(按需修改,redis默認以rdb快照的方式備份)
requirepass hexiao123 #密碼
masterauth:hexiao123#這個很重要,因爲主掛了後重啓會變爲從,此處需要配置密碼

編輯slave.conf,最下面兩個屬性是要注意的,6377和6378的配置同下

protected-mode no#關閉保護,允許非本地連接

port 6377#端口號

daemonize yes#後臺運行

pidfile /var/run/redis_6377.pid#進程守護文件,就是存放該進程號相關信息的地方

appendonly yes#開啓aof日誌形式(按需修改,redis默認以rdb快照的方式備份)
requirepass hexiao123 #密碼
replicaof 192.168.64.69 6378 #配置主master地址和端口號
masterauth “hexiao123” #配置主master密碼

下面我們來啓動測試一下

  • 使用./redis-server /usr/local/bin/redis/redis-conf/redis-master.conf
  • 後面替換成你防止conf的路徑依次啓動master和slave 使用 ps aux| grep redis查看redis進程如下:

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200120113531480.png在這裏插入圖片描述
進入redis master ./redis-cli -p 6379
在這裏插入圖片描述

使用info命令,可以看到6379爲master,有兩個slave分別爲6377和6378
在這裏插入圖片描述
同樣的可以連接下6377,使用info命令查看
在這裏插入圖片描述
在這裏插入圖片描述

至此redis主從已經搭建完畢.可以自己在主set,在從裏面可以讀到,從只能讀不能寫入

3.redis哨兵環境搭建

對於主從redis,有一個很大的問題,如果master掛了,雖然從服務器可以讀取數據,但是沒法寫入數據了.redis哨兵機制解決了這個問題,如果master掛掉,會重新選取出一個新的master,他會修改conf配置文件,等你原先的主重新啓動,會變成從服務器.
下面我們來配置一下哨兵環境:

bind 127.0.0.1 192.168.1.1#註釋掉或者值爲0.0.0.0

protected-mode no#關閉保護模式

port 26379#端口號

logfile “”#日誌存放路徑,默認不打日誌
daemonize yes#後臺運行

dir “/usr/local/bin/redis/sentinel/tmp”#解除掛載信息目錄

sentinel monitor mymaster 192.168.64.69 6379 1#設置 主名稱 ip地址 端口號 選舉成功需要的哨兵數(如果爲1,只要有一個哨兵即可發起選舉,配置爲哨兵數除以2,+1即可)

sentinel down-after-milliseconds mymaster 3000#sentinel心跳檢測主3秒內無響應(測試方便,按照需求配置即可),視爲掛掉,開始切換其他從爲主

sentinel parallel-syncs mymaster 1#每次最多可以有1個從同步主。一個從同步結束,另一個從開始同步。

sentinel failover-timeout mymaster 18000#主從切換超時時間
sentinel auth-pass mymaster hexiao123 #master密碼

  • 這裏需要注意的是:sentinel monitor mymaster這個參數要放在用所有用mymaster的上面,否則會報找不到mymaster
    至此,redis哨兵單機版已經配置完畢
    讓我們來啓動一下
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200120144631944.png在這裏插入圖片描述
    如果出現上圖所示,證明啓動成功!

讓我們來測試一下:

  • 打開6379,發現他是master

在這裏插入圖片描述
在這裏插入圖片描述
exit退出

  • 殺掉6379進程:

ps aux| grep redis
kill -9 進程號
在這裏插入圖片描述
等待3秒後
你可以看下
在這裏插入圖片描述
發現6378經過選舉變成了master
在這裏插入圖片描述
有興趣的可以查看下redis-master.conf,redis-slave-6378.conf和redis-slave-6377.conf,看看他們發生了什麼變化.
在這裏插入圖片描述
重啓6379,會發現6379變成了從服務器:

至此,redis哨兵搭建完畢.
有問題歡迎交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章