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的监听

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