热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis主从、集群、哨兵者模式搭建与实践

2019独角兽企业重金招聘Python工程师标准本文所有红色部分为配置文件或代码可以直接复制使用,绿色部分是要替换成自己环境下的相关变量。有详细说明!1.安装r

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

本文所有红色部分为配置文件或代码可以直接复制使用,绿色部分是要替换成自己环境下的相关变量。有详细说明!


1.安装ruby基础环境,https://rubygems.org/pages/download
2.安装ruby对redis的支持,cmd执行 gem   install   redis
    (1)ruby对redis的支持源国外,有可能被墙
    (2)设置源   gem sources -a http://ruby.taobao.org/    
    (3)再次执行gem install redis
3.下载 redis http://download.redis.io/releases/redis-4.0.1.tar.gz
    (1)解压后,找到redis.conf 修改配置内容

安装redis为windows系统服务
在redis目录下,cmd执行:
redis-server.exe --service-install  redis.conf --service-name  服务名
绿色部分为,redis的配置文件和要注册的服务名称。
示例:
redis-server.exe --service-install  redis.conf --service-name  redis

以服务名启动redis服务:
redis-server.exe --service-start --service-name  服务名

redis-server.exe --service-start --service-name  redis
关闭redis服务,cmd执行:
redis-server.exe --service-stop --service-name 要关闭的redis服务名
redis-server.exe --service-stop --service-name  redis


一、redis环境搭建主从配置:
复制2份redis.conf文件,分别命名为slaveof1.conf, slaveof2.conf。
修改其中的端口为不 同的端口,不能为server的端口重复。
在从服务器,增加配置内容为:
slaveof  主服务器    ip地址  端口   空格分隔,不是冒号!)   
示例:
Slaveof   127.0.0.1  6379
slaveof意思是指定主服务器ip地址为127.0.0.1  ,端口为6379上的redis服务器为主服务器。

在cmd端口分别运行主服务与从服务:(指定配置文件运行redis实例)
Redis-server  -redis.conf   运行主服务
Redis-server   –slaveof1.conf  运行从服务1
Redis-server   –slaveof2.conf  运行从服务2

如果需要配置密码,主从服务器密码必须保持一致。
配置密码,请增加如下配置:
requirepass 密码
示例:requirepass  password123456
登录单个服务器时:需要输入:
 redis-cli.exe –h 127.0.0.1 –p 6379 –a 密码
解释:使用redis-cli.exe工具登录,-h 为服务器Ip地址,-p为端口  -a  为密码
二、哨兵者模式(监控服务运行)
为主从服务器配置监控(哨兵者模式)
Redis目录找到sentinel.conf文件
修改配置文件为:

#vim sentinel-26379.conf
#监听服务运行在哪个端口,有多个监听时,要配置不同的端口
dir ./
port 26379
#监听的服务名,服务ip地址,服务端口, 几个sentinel进程判断主服务死掉,才替换
sentinel monitor   服务名   ip地址  端口   1
sentinel parallel-syncs  服务名  1
sentinel down-after-milliseconds 服务名  15000
sentinel failover-timeout  服务名   900000

替换配置文件中的服务名为你要的监听的服务名即可。
此处可以监听多个redis主服务,只需要复制上面配置。修改要监听的服务名,地址端口即可。

如果要监听的服务配置了密码,需要增加如下配置:
sentinel  auth-pass  服务名  密码
示例:
sentinel  auth-pass  redismaster  passwords


启动监听服务
在redis目录下,cmd执行如下命令:
redis-server.exe     sentinel.conf   –sentinel
解释:redis服务加载监控的配置文件,以监控模式运行

查看监控状态,cmd执行:
redis-cli.exe  -p  端口
 


Cmd执行命令:Info sentinel

 

配置文件说明:
1. port :当前Sentinel服务运行的端口

2. dir : Sentinel服务运行时使用的临时文件夹

3.sentinel monitor master001 192.168.110.101 6379 2:Sentinel去监视一个名为master001的主redis实例,这个主实例的IP地址为本机地址192.168.110.101,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行

4.sentinel down-after-milliseconds master001 30000:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行

5.sentinel parallel-syncs master001 1:指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长

6.sentinel failover-timeout master001 180000:如果在该时间(ms)内未能完成failover操作,则认为该failover失败

7.sentinel notification-script :指定sentinel检测到该监控的redis实例指向的实例异常时,调用的报警脚本。该配置项可选,但是很常用


三、Redis集群配置
Redis.conf配置文件
修改配置文件为:
port 7007
appendonly yes  
appendfilename "appendonly.7007.aof"  
cluster-enabled yes  
cluster-config-file nodes-7007.conf  
cluster-node-timeout 15000  
cluster-slave-validity-factor 10  
cluster-migration-barrier 1  
cluster-require-full-coverage yes

解释:
1.port 服务端口
2.  是否持久化。Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中
3.持久化的文件名
4.是否开启集群
5.集群节点配置文件
6. 节点互连超时的阀值  
7. cluster-require-full-coverage yes 默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致

步骤:
1.复制6份配置文件,分别命名为
Redis-7000.config
Redis-7001.config
Redis-7002.config
Redis-7003.config
Redis-7004.config
Redis-7005.config

2.将配置文件中绿色部分,替换为配置文件对应的编号。
3.分别启动6个服务,redis目录cmd执行:
Redis-server.exe  - Redis-7000.config
Redis-server.exe  - Redis-7001.config
Redis-server.exe  - Redis-7002.config
Redis-server.exe  - Redis-7003.config
Redis-server.exe  - Redis-7004.config
Redis-server.exe  - Redis-7005.config
4.找到redis-trib.rb文件。这个文件是ruby对redis的支持的一个集群运行支持。

执行命令:
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 127.0.0.1:7008
绿色的1,表示从节点的数量
根据提示,输入确定信息yes.

 

备注:执行以上命令有可能会出现
Node 127.0.0.1:7000 is not empty. Either the node already knows other node e错误。
删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,
比如:appendonly.aof、dump.rdb,nodes-7000.conf等文件。

集群情况检查:
连接到任意一个节点:
执行redis-cli.exe  –h   ip地址   –p端口 ,如图
 


查看集群中主从节点信息:
连接上任意一个节点, Cluster nodes
  


转:https://my.oschina.net/begin01running/blog/1503015



推荐阅读
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
author-avatar
血玉残阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有