Centos7 編譯安裝redis-4.0.1及主從+哨兵模式
阿新 • • 發佈:2018-12-25
一、redis概述及哨兵模式
redis對資料快取到記憶體,實現高效快取,使用持久化模組對資料進行儲存,使用sentinel模式實現redis叢集,提供高可用服務。
下面是在巨集觀層面上哨兵模式的功能列表:
·監控:哨兵不斷的檢查master和slave是否正常的執行。
·通知:當監控的某臺Redis例項發生問題時,可以通過API通知系統管理員和其他的應用程式。
·自動故障轉移:如果一個master不正常運行了,哨兵可以啟動一個故障轉移程序,將一個slave升級成為master,其他的slave被重新配置使用新的master,並且應用程式使用Redis服務端通知的新地址。
·配置提供者:哨兵作為Redis
hostname | IP | redis服務埠 | 哨兵 | 哨兵服務埠 |
redis-master | 10.0.0.141 | 6739 | sentinel1 | 26739 |
redis-slave1 | 10.0.0.142 | 6739 | sentinel2 | 26739 |
redis-slave2 | 10.0.0.143 | 6739 | sentinel3 | 26739 |
三、編譯安裝redis及採用systemd啟動指令碼
1、解決依賴包問題並上傳安裝包
[[email protected] ~]#yum install gcc gcc-c++ -y
2、建立必須的使用者、檔案及授權
[[email protected] ~]# cd /usr/local/src/ [[email protected] src]# tar -xf redis-4.0.1.tar.gz [[email protected] src]# mkdir /usr/local/redis [[email protected] src]# useradd redis [[email protected] src]# mv redis-4.0.1/* /usr/local/redis [[email protected] src]# chown -R redis:redis /usr/local/redis
3、編譯安裝redis,makeMALLOC=libc是呼叫管理記憶體碎片
[[email protected] src]# cd /usr/local/redis
[[email protected] redis]# make MALLOC=libc
[[email protected] redis]# make && make install
4、配置redis配置檔案[[email protected] redis]# vim /usr/local/redis/redis.conf
daemonize yes(為體現效果,一開始使用預設,暫時設為前臺執行)
protected-mode no
bind 10.0.0.141
logfile “/var/log/redis/redis.log”(日誌存放路徑,一開始使用預設)
dir /usr/local/redis/rdb(持久化配置)
supervised systemd(採用systemd啟動)
[[email protected] redis]# mkdir /usr/local/redis/rdb
[[email protected] redis]# chown -R redis:redis /usr/local/redis/
[[email protected] redis]# mkdir /var/log/redis
[[email protected] redis]# chown -R redis:redis /var/log/redis
5、啟動redis測試
[[email protected] redis]# pwd
/usr/local/redis
[[email protected] redis]# ./src/redis-server redis.conf
redis啟動成功!!
6、編寫啟動指令碼,並增加執行許可權
[[email protected] redis]# vim /usr/lib/systemd/system/redis.service
[[email protected] redis]# cat /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf --daemonize no
ExecStop=/usr/local/redis/src/redis-cli -h 10.0.0.141 -p 6379 shutdown
Restart=always
[Install]
WantedBy=multi-user.target
[[email protected] redis]# chmod 750 /usr/lib/systemd/system/redis.service
使用systemd啟動服務[[email protected] redis]# systemctl start redis
檢視啟動狀態
四、配置redis主從+哨兵模式
1、配置兩臺從伺服器(redis-slave1和redis-slave2)
[[email protected] redis]# vim redis.conf
slaveof 10.0.0.141 6379
[[email protected] redis]# vim redis.conf
slaveof 10.0.0.141 6379
2、配置哨兵模式(三臺伺服器都要配置)
[[email protected] redis]# vim sentinel.conf
daemonize yes(方便測試效果,使用預設)
sentinel monitor mymaster 10.0.0.141 6379 2(ip指向master)
protected-mode no
3、啟動哨兵(手動啟動)配置完Redis和Sentinel之後,按順序啟動各個角色。啟動順序如下:
Master->Slave->Sentinel,要確保按照這個順序依次啟動。
Sentinel的啟動命令和Redis類似。
[[email protected] ~]# systemctl start redis
[[email protected] ~]# systemctl start redis
[[email protected] ~]# systemctl start redis
[[email protected] ~]# cd /usr/local/redis/
[[email protected] redis]# ./src/redis-sentinel sentinel.conf
[[email protected] redis]# ./src/redis-sentinel sentinel.conf
哨兵啟動成功!!!!
4、編寫systemd啟動sentinel指令碼,使用systemd啟動sentinel
[[email protected] ~]# vim /usr/lib/systemd/system/sentinel.service
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf --daemonize no
ExecStop=/usr/local/redis/src/redis-cli -h 10.0.0.141 -p 6379 shutdown
Restart=always
[Install]
WantedBy=multi-user.target
[[email protected] redis]# chmod 750 /usr/lib/systemd/system/sentinel.service
systemd啟動sentinel五、測試
1、測試master寫入快取並檢視slave是否同步
2、持久化資料
2、測試哨兵模式
實現高可用切換master(故障前master位於10.0.0.141)redis-master主機故障,兩臺從伺服器選舉出新master
新master產生