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哨兵搭建完畢.
有問題歡迎交流!