正文
linux下部署redis主从,redis集群部署linux
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
linux配置系列之redis哨兵配置
很精辟的一段话,"未曾清贫难做人,不经打击永天真;成熟不过是善于隐藏,沧桑不过是无泪有伤。"
redis的主从配置比较容易,主从配置后,主主要进行写的操作,从主要进行读的操作,那么如果主挂了,是不是就没法进行写了?所以redis中可以进行哨兵的配置,具有高可用性,即是在主挂了之后,哨兵检测到后,会在从中进行投票,投票数多的晋升为主。这个配置可折腾我了,按照找的资料进行了哨兵的配置,可是当我把主服务停掉之后,从还在一致尝试连接主
启动哨兵日志
停掉主后从的日志
停掉后哨兵中,日志情况
就是这个问题我一直尝试找到解决办法,看了其中" sentinel-16379.conf"中的配置差不多,跟网上的一样。但是就是不行。
sentinel-16379.conf配置如下
这是我把这个配置文件的注释和空格都去掉后的结果
实际中我修改了如下几个配置
其他的可能都是自动生成的。当然你也可以自己指定日志位置。
auth-pass是因为我的主中做了配置密码了。
官网的配置说明:
所以那为什么我的哨兵没有起作用了,最后我找了公司运维一起看,问题的原因就是我的从中的bind的这个属性没有做配置。
加上了这个,all done!!!
如果你直接使用
报错如下
因为bind只配置了10.10.39.105所以连接如下
哨兵启动结果
干掉主进程
哨兵的日志打印状况
从服务器的日志情况:
连接39.105设置数据如下
哨兵监控如下:
测试从是否可以设置数据
在主上设置数据
在从上get数据
三:问题说明
上面也说了,第一次没有成功的原因是因为bind问题
我尝试翻译下如下
缓存-redis 三种模式搭建和运行原理
标签: redis 缓存 主从 哨兵 集群
本文简单的介绍redis三种模式在linux的安装部署和数据存储的总结,希望可以相互交流相互提升。
对于Centos7在安装redis之前需要进行一些常用工具的安装:
关闭防火墙
正式安装redis
在redis进行maketest时候会出现一系列的异常,有如下解决方案:
用redis-server启动一下redis,做一些实验没什么意义。
要把redis作为一个系统的daemon进程去运行的,每次系统启动,redis进程一起启动,操作不走如下:
RDB和AOF是redis的一种数据持久化的机制。 持久化 是为了避免系统在发生灾难性的系统故障时导致的系统数据丢失。我们一般会将数据存放在本地磁盘,还会定期的将数据上传到云服务器。
RDB 是redis的snapshotting,通过redis.conf中的save配置进行设置,如 save 60 1000:
AOF 是以appendonly方式进行数据的储存的,开启AOF模式后,所有存进redis内存的数据都会进入os cache中,然后默认1秒执行一次fsync写入追加到appendonly.aof文件中。一般我们配置redis.conf中的一下指令:
AOF和RDB模式我们一般在生产环境都会打开,一般而言,redis服务挂掉后进行重启会优先家在aof中的文件。
当启动一个slave node的时候,它会发送一个PSYNC命令给master node,如果这是slave node重新连接master node,那么master node仅仅会复制给slave部分缺少的数据;否则如果是slave node第一次连接master node,那么会触发一次full resynchronization;
开始full resynchronization的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会将从客户端收到的所有写命令缓存在内存中。RDB文件生成完毕之后,master会将这个RDB发送给slave,slave会先写入本地磁盘,然后再从本地磁盘加载到内存中。然后master会将内存中缓存的写命令发送给slave,slave也会同步这些数据。
slave node如果跟master node有网络故障,断开了连接,会自动重连。master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb save操作,用一份数据服务所有slave node。
从redis 2.8开始,就支持主从复制的断点续传,如果主从复制过程中,网络连接断掉了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制一份。
master node会在内存中常见一个backlog,master和slave都会保存一个replica offset还有一个master id,offset就是保存在backlog中的。如果master和slave网络连接断掉了,slave会让master从上次的replica offset开始继续复制,但是如果没有找到对应的offset,那么就会执行一次resynchronization。
master在内存中直接创建rdb,然后发送给slave,不会在自己本地落地磁盘了,可以有如下配置:
slave不会过期key,只会等待master过期key。如果master过期了一个key,或者通过LRU淘汰了一个key,那么会模拟一条del命令发送给slave。
在redis.conf配置文件中,上面的参数代表至少需要3个slaves节点与master节点进行连接,并且master和每个slave的数据同步延迟不能超过10秒。一旦上面的设定没有匹配上,则master不在提供相应的服务。
sdown达成的条件很简单,如果一个哨兵ping一个master,超过了 is-master-down-after-milliseconds 指定的毫秒数之后,就主观认为master宕机
sdown到odown转换的条件很简单,如果一个哨兵在指定时间内,收到了 quorum 指定数量的其他哨兵也认为那个master是sdown了,那么就认为是odown了,客观认为master宕机
如果一个slave跟master断开连接已经超过了down-after-milliseconds的10倍,外加master宕机的时长,那么slave就被认为不适合选举为master
(down-after-milliseconds * 10) + milliseconds_since_master_is_in_SDOWN_state
每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个slave来做切换,这个slave还得得到majority哨兵的授权,才能正式执行切换;
(2)SENTINEL RESET *,在所有sentinal上执行,清理所有的master状态
(3)SENTINEL MASTER mastername,在所有sentinal上执行,查看所有sentinal对数量是否达成了一致
4.3.2 slave的永久下线
让master摘除某个已经下线的slave:SENTINEL RESET mastername,在所有的哨兵上面执行.
redis的集群模式为了解决系统的横向扩展以及海量数据的存储问题,如果你的数据量很大,那么就可以用redis cluster。
redis cluster可以支撑N个redis master,一个master上面可以挂载多个slave,一般情况我门挂载一个到两个slave,master在挂掉以后会主动切换到slave上面,或者当一个master上面的slave都挂掉后,集群会从其他master上面找到冗余的slave挂载到这个master上面,达到了系统的高可用性。
2.1 redis cluster的重要配置
2.2 在三台机器上启动6个redis实例
将上面的配置文件,在/etc/redis下放6个,分别为: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf
每个启动脚本内,都修改对应的端口号
2.3 创建集群
解决办法是 先安装rvm,再把ruby版本提升至2.3.3
使用redis-trib.rb命令创建集群
--replicas: 表示每个master有几个slave
redis-trib.rb check 192.168.31.187:7001 查看状体
3.1 加入新master
以上相同配置完成后,设置启动脚本进行启动;然后用如下命令进行node节点添加:
3.2 reshard一些数据过去
3.3 添加node作为slave
3.4 删除node
Linux下安装配置redis详细教程,并配置哨兵模式
redis版本为redis-3.2.12,使用工具将安装包上传到data目录。
在data目录下创建文件夹redis,将redis安装在此目录。
第一步:解压。
第二步:安装,PREFIX=/data/redis用来设置安装目录。
到此,redis已经安装完成,剩下就是配置和启动服务。
进入redis目录, 创建配置文件conf、日志logs、数据库dump、进程号pid四个目录,用来存放对应的文件,这四个目录也可以存放在其他文件夹,只要与配置文件中的配置一致即可,否则在启动服务时会报错。 其中bin目录就是redis安装成功后的一些命令文件。
redis服务配置一主二从,哨兵模式。注意:如果在实际开发中用不到哨兵模式,redis服务配置一主一从即可。
主Redis配置:redis_6379.conf
从Redis配置,redis_6380.conf和redis_6381.conf,与主Redis配置基本上一样,不一样的地方在于 端口、数据库、日志、pid文件名称 ,都以6380或6381为标志, 最重要的地方是建立主从关系和同步验证。
注意: 对只使用redis服务 ,只需要在主Redis里面配置requirepass,在从Redis里面配置masterauth,密码保持一致,密码尽可能复杂,以免被攻击破解。
注意: 对只使用redis服务 ,如果从Redis也有必要加入访问验证,也可以设置requirepass,而且密码可以与主Redis密码不同。
将配置文件放置到/data/redis/conf目录下,然后就可以启动服务了。
启动服务要按照主从顺序依次启动。
查看服务启动情况:
也可以通过查看日志文件来确认服务是否正常启动。
通过客户端登录Redis验证数据同步情况:
主Redis登录验证,设置数据:
从Redis登录,获取数据:从Redis并没有设置密码,所以无需验证就可以操作。
配置哨兵模式:
Redis Sentinel集群通常由3到5个节点组成,如果个别节点挂了,集群还可以正常运作。Sentinel负责监控Redis集群的 健康 情况。
如果主Redis挂掉,Sentinel集群会通过投票选择一个新的主Redis。 当原来的主Redis恢复时,它会被当做新的主Redis的从Redis重新加入Redis集群。
设置连接master和slave的密码,需要注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码必须设置相同。也就是说主Redis和从Redis都必须设置requirepass和masterauth,而且密码必须相同。
sentinel.conf配置信息:
将该配置文件放置到/data/redis/conf目录下,启动sentinel服务:
验证sentinel是否起作用,可以手工shutdown掉主Redis。
这时从Redis想要访问主Redis同步数据就会提示错误信息:
sentinel在监测到主Redis宕机之后,通过选举,将一个从Redis选定为新的主Redis。通过查看sentinel日志可以发现,选定6380为新的主Redis,同时将另外两个Redis作为从Redis。
注意:选定6380为主Redis后,所有的配置文件都会被修改,主要是重新建立主从关系。
6379会新增:slaveof 127.0.0.1 6380
6380会删掉:slaveof 127.0.0.1 6379
6381会修改:slaveof 127.0.0.1 6380
由于6379服务已经关掉,所以虽然sentinel将6379作为6380的从服务,但是没有真正的建立。
重新启动6379服务,这时sentinel会重建建立一次主从关系:
怎么在Linux下安装配置Redis服务器
1、安装编译工具
2、安装tcl组件包(安装Redis需要tcl支持)
3、安装Redis
4、设置redis开机启动
5、设置redis配置文件参数
6、测试redis数据库
7、通过php程序连接redis数据库 #php必须先安装Redis扩展
至此,Linux下Redis服务器安装配置完成。
linux下部署redis主从的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于redis集群部署linux、linux下部署redis主从的信息别忘了在本站进行查找喔。