Redis安裝、主從、哨兵

目錄規劃

舉例

└── redis_6379
    ├── conf
    │   └── redis.conf
    ├── db
    │   └── dump.rdb
    ├── logs
    │   └── redis_6379.log
    └── pid
        └── redis_6379.pid

dir——指定rdb和aof持久化文件存放的位置

安裝

創建目錄、新建用戶、修改目錄屬組屬主

mkdir -p /opt/redis_cluster/redis_{6379,6380}/{conf,db,logs,pid}

新建用戶

useradd -M -s /sbin/nologin redis

改變目錄屬主屬組
chown -R redis. /opt/redis_cluster

檢查編譯環境

gcc -v 
# 如果沒有編譯環境則必須要安裝:使用yum或者是rpm包安裝
yum install gcc gcc-c++ 

下載並解壓安裝

wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar xvf redis-4.0.11.tar.gz

安裝

# 會把主程序安裝到/usr/local/bin/下,並配置好環境變量

make && make install 

# 如果不執行make install那麼主程序就在src目錄下,也可以使用
# 另一種方法安裝(這樣可以指定bin目錄的放置位置)
make PREFIX=/opt/redis_cluster/redis_6380/ install

啓動redis-server

redis-server /opt/redis_cluster/redis_6380/conf/redis.conf
redis-server /opt/redis_cluster/redis_6379/conf/redis.conf

登錄redis

redis-cli -h 10.0.0.103 -p 6380
redis-cli -h 10.0.0.103 -p 6379

Redis主從複製

從節點配置文件

bind 10.0.0.103
port 6380
daemonize yes
pidfile /opt/redis_cluster/redis_6380/pid/redis_6380.pid
logfile "/opt/redis_cluster/redis_6380/logs/redis_6380.log"
dir /opt/redis_cluster/redis_6380/db/
slaveof 10.0.0.103 6379

建立複製

每個從節點只能有一個主節點,主節點可以有多個從節點
配置複製的方式有三種:

1、在配置文件中加入slaveof {masterHost} {masterPort} 隨redis啓動生效
2、在redis-server啓動命令後加入 -slaveof {masterHost} {masterPort}生效
3、直接使用命令:slavefo {masterHost} {masterPort}生效

查看複製狀態信息命令

info replication

斷開復制:
slaveoo命令不但可以建立複製,還可以在從節點執行slave of no one來斷開與主節點複製關係

slave of no one

通過slaveof命令還可以實現切主操作,所謂切主操作是指把當前從節點對主節點的複製切換到另一個主節點
執行命令即可。

slaveof {masterHost} {masterPort}

哨兵

Redis主從模式下,主節點一旦發生故障不能提供服務,需要人工干預,將從節點晉升爲主節點,同時還需要修改客戶端配置。
Sentinel(哨兵)架構解決了redis主從人工干預的問題。
當主節點出現故障時sentinel能自動完成故障發現和故障轉移,並通知客戶端從而實現真正的高可用。
Redis Sentinel是一個分佈式的架構,其中包含N個Sentinel節點和Redis數據節點,每個Sentinel節點會對匯聚節點和其它Sentinel節點進行監控,當它發現節點不可達時,會對節點做下線標識,如果被標識的是主節點,它還會和其他Sentinel
節點進行“協商”,當大多是節點都認爲主節點不可達時,會選舉出一個Sentinel節點來完成自動故障轉移的工作,同時會將這個變化同事給redis客戶端。

配置文件

sentinel.conf

bind 10.0.0.103
port 26379
daemonize yes
pidfile "/opt/redis_cluster/redis_26379/pid/redis_26379.pid"
logfile "/opt/redis_cluster/redis_26379/logs/redis_26379.log"
dir "/opt/redis_cluster/redis_26379/db"
sentinel monitor mymaster 10.0.0.103 6379 2
# mymaster主節點別名 主節點ip和端口,判斷主節點失敗,需要兩個sentinel節點同意
sentinel down-after-milliseconds mymaster 30000
# 選項指定了Sentinel認爲服務器已經斷線所需的毫秒數
sentinel parallel-syncs mymaster 1
# 向新的主節點發起復制操作的從節點個數,1輪詢發起複製
sentinel failover-timeout mymaster 180000
# 故障轉移超時時間

啓動方式

方式1:

redis-server /opt/redis_cluster/redis_26379/conf/sentinel.conf --sentinel

方式2:

redis-sentinel /opt/redis_cluster/redis_26379/conf/sentinel.conf

sentinel常用命令

SENTINEL master <master name>:用於查看監控的某個Redis Master信息,包括配置和狀態等。
SENTINEL slaves <master name>:列出給定主服務器的所有從服務器,以及這些從服務器的當前狀態。
SENTINEL sentinels <master name>:查看給定主服務器的Sentinel實例列表及其狀態。
SENTINEL get-master-addr-by-name <master name>:返回給定名字的主服務器的IP地址和端口號。 如果這個主服務器正在執行故障轉移操作,或者針對這個主服務器的故障轉移操> 作已經完成,那麼這個命令返回新的主服務器的IP地址和端口號。

動態修改Sentinel配置

SENTINEL MONITOR <name> <ip> <port> <quorum>這個命令告訴sentinel去監聽一個新的master
SENTINEL REMOVE <name> 命令sentinel放棄對某個master的監聽

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