赞
踩
Redis主库服务端: 192.168.1.148
Redis从库1: 192.168.1.145
Redis从库2: 192.168.1.146
Redis客户端:192.168.1.147
一:Redis客户端使用
- Redis主库服务端先安装Redis
-
- wget http://download.redis.io/releases/redis-6.2.7.tar.gz
-
- tar zxf redis-6.2.7.tar.gz
-
- cd redis-6.2.7
-
- make PREFIX=/usr/local/redis install
-
- cp redis.conf /usr/local/redis/
-
- 将/usr/local/redis/bin/目录加入至环境变量配置文件/etc/profile末尾,然后Shell终端执行source /etc/profile让环境变量生效。
-
- export PATH=/usr/local/redis/bin:$PATH
-
- Nohup后台启动及停止Redis服务命令:
-
- nohup /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
-
- /usr/local/redis/bin/redis-cli -p 6379 shutdown
-
-
-
- 修改Redis.config文件
-
- 修改bind 为0.0.0.0
-
- # 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
-
- bind 0.0.0.0
-
- # 守护进程,修改为yes后即可后台运行
-
- daemonize yes
-
- # 密码,设置后访问Redis必须输入密码
-
- requirepass 123456
-
- 我这里就不设置密码了 方便登录
-
-
-
- 修改dir文件目录,设置为固定目录
-
-
-
- 重启
-
-
-
- Redis重启一定要备份数据!!!!!否则数据会消除
###Redis客户端不用安装Redis只需要连接服务端使用###
直接使用
yum -y install redis
redis-cli -h 192.168.1.148 登录
Redis 命令格式如下:
CONFIG GET * 获取Redis服务器所有配置信息;
CONFIG SET loglevel "notice" 设置Redis服务器日志级别;
CONFIG SET requirepass "jfedu"
AUTH jfedu
redis-cli -h host -p port -a password 远程连接redis数据库;
CLIENT GETNAME 获取连接的名称;
CLIENT SETNAME 设置当前连接的名称;
CLUSTER SLOTS 获取集群节点的映射数组;
COMMAND 获取Redis命令详情数组;
COMMAND COUNT 获取Redis 命令总数;
COMMAND GETKEYS 获取给定命令的所有键;
TIME 返回当前服务器时间;
CONFIG GET parameter 获取指定配置参数的值;
CONFIG SET parameter value 修改redis 配置参数,无需重启;
CONFIG RESETSTAT 重置INFO 命令中的某些统计数据;
DBSIZE 返回当前数据库的key 的数量;
DEBUG OBJECT key 获取key 的调试信息;
DEBUG SEGFAULT 让Redis服务崩溃;
FLUSHALL 删除所有数据库的所有key;
FLUSHDB 删除当前数据库的所有key;
ROLE 返回主从实例所属的角色;
SAVE 异步保存数据到硬盘;
SHUTDOWN 异步保存数据到硬盘,并关闭服务器;
SLOWLOG 管理redis 的慢日志;
SET keys values 设置key为num,值为123;
DEL jfedu 删除key及值;
info 查看redis详细信息
二:Redis主从集群
Redis从库1: 192.168.1.145
按照主库安装Redis的步骤 在从库中安装好Redis
从库修改nginx.config文件配置主库ip和端口
做软链接
ln -s /usr/local/redis/bin/* /usr/bin/
之后启动Redis
Redis从库2:执行和上面完全一样的 安装修改软链接的步骤。
之后启动Redis
这样一来,从库只能读数据,写数据只有主库可以
三:Redis故障转移,安全高可用的模式----哨兵模式(sentinel)
从Redis 2.8 版本开始,Redis 官方引入高可用方案:哨兵(Sentinel)模式。众所周知在 Redis 主从复制模式中,主从模式不具备自动恢复的功能,当主服务器(Master)宕机后,需要手动把从服务器(Slave)切换为主服务器。在这个过程中,需要人为干预,还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障。
Redis Sentinel 哨兵模式,它弥补了主从模式的不足。Sentinel 模式通过监控Master和Slave,获取主机上(Redis服务)的工作状态是否正常,当主机发生故障时, Sentinel 会自动进行 Failover(即故障转移),并将其监控的从机提升主服务器(Master),从而保证了系统的高可用性。
哨兵模式由两部分组成,哨兵节点和数据节点,其中哨兵节点是特殊的Redis 节点,不存储数据;而主节点和从节点被称为是数据节点。
哨兵(Sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(Sentinel)进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。
每个哨兵(Sentinel) 会向其它哨兵(Sentinel)、Master、Slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).
若“哨兵群”中的多数Sentinel,都报告某一Master没响应,系统才认为该Master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的Slave节点中,选一台提升为Master,然后自动修改相关配置。
虽然哨兵(Sentinel) 释出为一个单独的可执行文件 Redis-Sentinel ,但实际上它只是一个运行在特殊模式下的 Redis服务器,你可以在启动一个普通Redis 服务器时通过给定--Sentinel 选项来启动哨兵(Sentinel)。
哨兵模式一般需要三台服务器来支撑,也就是一台主服务器加其余的服务器加起来不能少于三台。为了方便这里我就只用一台192.168.1.148主服务器(企业生产环境要至少三台都得配sentinel,这里我为了方便演示就只给主服务器配。其它两台配置同理)当sentinel服务器,
同样如果你是用三台服务器来部署sentinel的话,一样要执行一遍安装redis并且配置加启动
但是我这里直接用的是主库,所以前面的步骤就省略了。
- 进入到redis目录
- cp sentinel.conf /usr/local/redis/
-
- 修改哨兵模式配置文件Sentinel.conf,设置Monitor监控的Master Redis IP和端口,信息,代码如下:
- 首先是修改bind 为0.0.0.0
- port 6379
- daemonize no
- logfile ‘/var/log/redis/sentinel.log’
-
-
- sentinel monitor mymaster 192.168.1.148(填Redis主库的IP,这里我主库和哨兵在一块所以就填了这个)6379 1
- 6379后面跟的数字1 表示有几个sentinel判断主redis服务器是否宕机 (我们目前只有一个sentinel 所以就写1)
-
- 启动命令
- nohup /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf &
至此完毕,大家可以自己试试检验一下成果。手动关掉主库redis服务器 ,看看其它两个redis从库是不是有一台服务器变成主库了?登录从库redis redis-cli输入命令info replication查看信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。