Redis 可以实现主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,下面就记录一下在一台服务器上的具体实现。
redis是一个开源的高性能key-value数据库,它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供 list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。

Redis 安装部署
直接使用命令下载,如下:

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

安装:(127.0.0.1 服务器)

首先解压安装包,命令如下

tar xzf redis-5.0.7.tar.gz

进入解压文件目录使用make命令对解压的 redis 文件进行编译,命令

cd redis-5.0.7/

make

编译成功后,进入 src 文件夹,执行 make install 进行 Redis 安装。

cd src/

make install

部署:

1)新建 bin 文件夹

# cd /root/redis-5.0.7/

# mkdir bin

进入 src 文件夹下,将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel redis.conf 文件复制到 bin 文件夹

命令: cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel redis.conf /root/redis-5.0.7/bin/

启动Redis服务:

切换到 bin 目录,使用 ./redis-server redis.conf 即可启动 服务

客户端查看:

使用redis-cli命令连接客户端,如下

./redis-cli -p 6379

关闭redis服务
# redis-cli -p 6379 shutdown

 

隔开==============================================================================================

 

Redis 主从配置及数据同步
三台虚拟机配置如下配置:

ip地址 端口号 角色
127.0.1.1 6379 master
127.0.1.2 6379 slave
127.0.1.3 6379 slave

按以上部署方式在 127.0.0.2和127.0.0.3服务器分别部署一套。

主节点修改配置文件redis.conf:

bind 127.0.0.1 127.0.1.1   注意:(127.0.0.1 和 本地IP同时绑定)否则连接不上

protected-mode yes

port 6379

daemonize yes

从节点修改配置文件redis.conf:

bind 127.0.0.1 127.0.1.2   注意:(127.0.0.1 和 本地IP同时绑定)否则连接不上

protected-mode yes //保护模式

port 6379 //端口设置

daemonize yes //后台运行

replicaof 127.0.1.1 6379 //指定主节点IP及端口

 

 

 自此一主两从搭建并启动完成,查看主从状态如下:

[root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -h 127.0.1.1 -p 6379 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.1.2,port=6379,state=online,offset=280,lag=1
slave1:ip=127.0.1.3,port=6379,state=online,offset=280,lag=1
master_replid:02859e4cd236cbc4c3276b5e66016a871ca0010c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:280
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:280
[root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# 


[root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 127.0.1.2 -p 6379 info replication
# Replication
role:slave
master_host:127.0.1.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:378
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:02859e4cd236cbc4c3276b5e66016a871ca0010c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:378
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:378
[root@izm5e6u39ae8sj3eivv3rvz data]#

验证主从同步

在主插入,在从查

[root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -h 127.0.1.1 -p 6379 set "name" "zhangsan" OK
[root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 127.0.1.2 -p 6379 get "name" "zhangsan"

表示插主从查没问题。

下面加入哨兵,以实现高可用,主从切换。

编辑哨兵配置文件   sentinel.conf

protected-mode no
daemonize yes
port 26379
dir "/root/data/soft/redis/ins-sentinel/sentinel"
logfile "./sentinel.log"
sentinel monitor mymaster 127.0.1.1 6379 2

启动哨兵

./redis-sentinel sentinel.conf 

查看哨兵状态

redis-cli -p 26379  info sentinel

[root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -p 26379  info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.1.1:26379,slaves=2,sentinels=1
[root@izm5eb28tnyvb00rm7as8wz ins-sentinel]#

停接redis主节点后,再看哨兵状态,显示master节点已切换

[root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.1.2:6379,slaves=2,sentinels=1