linux 搭建redis主从及哨兵模式
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