linux安装redis及主从复制、读写分离、哨兵模式
Redis安装与部署
版本最好选择3.0及以上。以后还可以部署Redis集群。
1.下载:
- [root@bogon redis-3.0.0]# cd /usr/local
- [root@bogon local]#
- wget http://download.redis.io/releases/redis-3.0.0.tar.gz
2.解压:
- [root@bogon local]# tar -zxvf redis-3.0.0.tar.gz
3.编译、安装:
- [root@bogon local]# cd /usr/local/redis-3.0.0
- [root@bogon redis-3.0.0]# make
- [root@bogon redis-3.0.0]# make install
4.拷贝配置文件,方便以后使用
- [root@localhost redis-3.0.0]# mkdir /usr/local/redis
[root@localhost redis-3.0.0]# mkdir /usr/local/redis/etc
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/etc/
5.修改配置:
- [root@bogon local]# cd /usr/local/redis/etc/
- [root@bogon redis-3.0.0]# vim redis.conf
- daemonize yes #表示后台运行
- logfile /usr/local/redis/log #日志文件,目录必须存在
7.服务端启动,指定配置文件redis.conf启动
- [root@bogon redis]# redis-server /usr/local/redis/etc/redis.conf
8.客户端启动:
- [root@bogon redis]# redis-cli
- 127.0.0.1:6379>
主从架构
主从架构设计的思路大概如下(注意:只是大概情况,并不是所有架构都完全一样):
- 只有一台主服务器,只负责写入数据,不负责读取数据。
- 多台从服务器,不写入数据,只负责同步主服务器的数据,提供外部程序读取。
- 主服务器写入数据后,将命令发送到从服务器,使主从数据同步。
- 应用程序可以读取某一台从服务器的数据,负载均衡。
- 当某些从服务器瘫痪时,系统影响不大。当主服务器瘫痪时,选举某一台从服务器成为主服务器
主从复制
Redis主从复制讲解,详情见:https://www.cnblogs.com/expiator/p/9881989.html
1.分别在两台linux上面安装redis,安装完后查看本机ip:
- ifconfig #显示ip。其中的ens33后面的 inet 就是ip地址。
主机ip: 192.168.0.103
从机ip: 192.168.0.104
比较麻烦的是ip地址,有时动态ip会一直变化,可以设置成静态ip。或者选择"挂起"虚拟机,而不是"关机",这样ip就不会变。
配置静态ip详情见 :https://blog.csdn.net/Readiay/article/details/50866709
2.修改主机的配置文件redis.conf :
- vim /usr/local/redis/etc/redis.conf
主机绑定了127.0.0.1,那么只能本机才能访问,从机的请求无法访问。因此将主机绑定为0.0.0.0。
- bind 0.0.0.0
接着再修改从机的配置文件redis.conf,slaveof属性修改为:主机ip和端口:
- slaveof 192.168.0.103 6379
3.启动主机和从机的redis,查看主机和从机的info :
- [root@bogon ~]# redis-server /usr/local/redis/etc/redis.conf
- [root@bogon ~]# redis-cli
- 127.0.0.1:6379> info
主机状态如下:
- # Replication
- role:master
- connected_slaves:1
- slave0:ip=192.168.0.104,port=6379,state=online,offset=99,lag=1
其中的connected_slaves不为0,表示主从复制已经成功了。
读写分离
主从复制成功后,在主机写入数据时,从机可以获取到数据。
在主机写入数据如下:
- 127.0.0.1:6379> set age 26
- OK
然后在从机可以获取主机的数据。但是从机无法写入数据。
- 127.0.0.1:6379> get age
- "26"
- 127.0.0.1:6379> set age 28
- (error) READONLY You can't write against a read only slave.
遇到的问题
在linux中安装、部署环境时,出了问题一定要多看log。
查看从机的redis的log,之前已经创建并指定了log的路径,如下:
- vim /usr/local/redis/log
具体错误可以参见:https://www.cnblogs.com/expiator/p/9936368.html
哨兵模式(sentinel)
Redis 提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。
其原理是哨兵通过发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 实例 。
Redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换。
2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
3、自动故障转移(Automatic
failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器,
并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis
Sentinel会告之新的主服务器地址和端口。
注意:使用多个哨兵的监控,各个哨兵之间还会相互监控,这样就变为了多个哨兵模式。
多个哨兵不仅监控各个 Redis 服务器,而且哨兵之间互相监控 ,看看哨兵们是否还活着。
主观下线和客观下线:
1、主观下线状态:当一个sentinel认为一个redis服务连接不上的时候,会给这个服务打个标记为下线状态。
2、客观下线状态:当多个sentinel认为一个redids连接不上的时候,则认为这个redis服务确实下线了。这里的多个sentinel的个数可以在配置文件中设置。
sentinel(哨兵)配置
1.修改主机、从机的sentinel.conf文件
- sentinel monitor mymaster 192.168.0.103 6379 2
最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数。
2.启动sentinel
- [root@localhost ~]# cd /usr/local/redis-3.0.0/
- [root@localhost redis-3.0.0]# redis-sentinel sentinel.conf
结果如下:
参考资料:
https://blog.csdn.net/u011204847/article/details/51281567
https://blog.csdn.net/qq_28538407/article/details/81878609
linux安装redis及主从复制、读写分离、哨兵模式的更多相关文章
- redis的主从复制(读写分离)/哨兵(主从切换)配置
准备两个redis服务,两台机器,依次命名文件夹子master,slave1 10.10.10.7 10.10.10.8 1.master修改配置文件 [root@db2 conf]# cat 637 ...
- redis 主从复制+读写分离+哨兵
1.redis读写分离应用场景 当数据量变得庞大的时候,读写分离还是很有必要的.同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能.redis ...
- Mysql多实例安装+主从复制+读写分离 -学习笔记
Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...
- Mycat安装并实现mysql读写分离,分库分表
Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...
- MySQL 主从复制&读写分离 简介
1. 读写分离&读写分离 简介 主从同步延迟 分配机制 解决单点故障 总结 2. 主从复制&读写分离 搭建 搭建主从复制(双主) 搭建读写分离 1. 读写分离&读写分离 简介 ...
- mysql主从复制-读写分离
mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...
- Linux 安装Redis<准备>(使用Mac远程访问)
阅读本文需要一定的Linux基础 一 Redis简介 redis是用c语言编写的一款开源的高性能键值对(key-value)数据库 它通过提供多种键值数据类型来适应不同场景下的存储需求 二 Redis ...
- Redis实现数据库读写分离
Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作 ...
- Linux安装redis服务器
Linux安装redis服务器 初次接触,这里简单的说下我遇到的情况以及安装方法,当然也是参考了诸位大神的. 确定虚拟机的主机IP. 1)首先需要一个linux虚拟机,确定虚拟机的ip ,输入命令:# ...
随机推荐
- 2018年1月21日--2月4日 NAS
二十号去比赛时,与同事闲聊时说起家庭服务器,后来搜到nas(网络附着存储器),找到freenas,突然觉得很有用,手机拍了大量的照片视频,存储在电脑,已经换过几次硬盘了,对于这些珍贵的资料,万一硬盘坏 ...
- MVC基于角色权限控制--菜单展示
在用户成功登陆后台页面后,我们需要将当前用户拥有的权限通过菜单的形式展现出来,将未具备的权限隐藏 新建一个HomeController,用于展示后台首页和获取用户权限数据 namespace CZBK ...
- Django基础介绍
1.web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件. 应用程序有两种模式C/S.B/S.C/S是客户 ...
- NSNotification相关
NSNotification处理过程是一个同步的过程.它的消息回调函数执行的线程跟发送消息代码(也就是postNotification)所在的线程相同,一个Notification发出后,在回调函数执 ...
- vue:页面跳转和传参(页面之间,父传子,子传父)
1.返回上一个页面: A.<a @click="$router.back(-1)" class="btn">重新加载</a> B.thi ...
- ISPF常用命令
[ISPF功能键] PF1: HELP帮助键 PF2: SPLIT键,改变分屏位置 PF3: END键,结束并退回上级菜单 PF4: RETURN键,结束并退回主菜单 PF5: REFIND键,重复最 ...
- cin.tie与sync_with_stdio加速输入输出
在LeetCode上练习习题的时候每次AC之后都会去看别人的代码,几乎每次都能遇到cin.tie与sync_with_stdio.类似这样: static auto x = [](){ std::io ...
- U3D的结构体堆分配栈分配
ST ot;//分配在栈上 ST[] arrt = new ST[2];//分配在堆上,因为数组是引用
- UML类图实例分析
登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是 ...
- [Android] Robotium手机自动化测试(仅需apk安装包版)——环境搭建 【转】
Robotium的手机自动化测试,很多都是利用app源代码里的Id定义来开发自动化脚本.而在我开始要为项目中的app写自动化测试脚本的时 候,开发的环境还很不稳定,app也还处于开发的状态中,而且,在 ...