javaWeb开发、运维、大数据开发,常用组件总结--redis

二、redis–单机版,主从复制模式,哨兵模式,集群模式搭建

redis前言

Redis 是一种基于 键值对 的 NoSQL 数据库。与很多键值对数据库不同,Redis 提供了丰富的 值数据存储结构,包括 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、bitmap(位图)等等。

redis正文

Redis 是一个使用 ANSI C 编写的开源、支持 网络、基于 内存、单线程模型、可选持久性 的 键值对存储数据库

1.redis的特性

速度快,基于键值对,丰富的功能(缓存,发布订阅,lua脚本,事务,pipeline等),简单稳定,客户端语言多,持久性,高可用,分布式,水平扩容。

2.redis的应用场景

缓存,排行榜,计数器,社交网络,消息队列

3.redis的安装配置


3.1 redis单机版安装
1)下载源码并解压
	cd /usr/local/
    wget http://download.redis.io/releases/redis-4.0.11.tar.gz
    tar -zxvf redis-4.0.2.tar.gz
2)编译安装
	cd /usr/local/redis-4.0.11
	make install PREFIX=/usr/local/redis
3)复制redis命令到/usr/local/bin目录下
    cd /usr/local/redis/bin/
    cp redis-cli redis-server redis-sentinel /usr/local/bin
4)修改redis配置文件redis.conf 默认端口是6379
    cp /usr/local/redis-4.0.11/redis.conf /usr/local/
5)设置后台启动
    修改redis.conf 把daemonize no 改正daemonize yes
6)设置远程访问
	bind 0.0.0.0
7)配置redis日志记录
    logfile /var/log/redis_6379.log
8)设置redis请求密码
   requirepass "123456"
9)客户端访问
   redis-cli -h 127.0.0.1 -p 6379 -a 123456
10)redis的常用命令
   启动命令:redis-server /usr/local/redis.conf
   关闭命令:redis-cli -h 127.0.0.1 -p 6379 shutdown
   查看是否启动:ps -ef | grep redis
   进入客户端:redis-cli
   关闭客户端:redis-cli shutdown
 11)开放防火墙端口
    添加规则
	iptables -I INPUT -p tcp -m tcp --dport 6379 -j ACCEPT
 	保存规则
	service iptables save
 	重启iptables
	service iptables restart

3.2 redis主从复制模式安装
角色ip地址端口号
Redis Master10.206.20.23116379
Redis Slave10.206.20.23126379
	1)基本步骤参考单机版安装,修改master节点配置,redis.conf 
		修改bind ,port
	2)修改slave节点配置,redis.conf
	     修改bind,port
	     slaveof 10.206.20.231 16379
	     masterauth 123456
	3)启动master,salve服务
	4)redis客户端分别连入maser,slave节点
	    redis-cli -h 10.206.20.231 -p 16379 -a 123456
	    redis-cli -h 10.206.20.231 -p 26379
	 5)验证主从复制模式
	    在master节点set master_port "16379"
	    在slave节点 get master_port 

3.2 redis哨兵模式模式安装
Redis Sentinel的基本概念:
Redis Sentinel 是 Redis 高可用 的实现方案。
Sentinel 是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的 监控、通知、自动故障转移

主从复制,哨兵模式架构对比:
主从复制,哨兵模式架构图

Redis Sentinel的架构
在这里插入图片描述

1) Redis Sentinel的主要功能
    主节点存活检测、主从运行情况检测、自动故障转移、主从切换
2)Redis Sentinel的工作原理
    1))每个 Sentinel 以 每秒钟 一次的频率,向它所知的 主服务器、从服务器 以及其他 Sentinel 实例 发送一个 PING 命令。
    2))如果一个 实例(instance)距离 最后一次 有效回复 PING 命令的时间超过 down-after-milliseconds 所指定的值,那么这个实例会被 Sentinel 标记为 主观下线。
	3))如果一个 主服务器 被标记为 主观下线,那么正在 监视 这个 主服务器 的所有 Sentinel 节点,要以 每秒一次 的频率确认 主服务器 的确进入了 主观下线 状态。
	4))如果一个 主服务器 被标记为 主观下线,并且有 足够数量 的 Sentinel(至少要达到 配置文件 指定的数量)在指定的 时间范围 内同意这一判断,那么这个 主服务器 被标记为 客观下线。
	5))在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率,向它已知的所有 主服务器 和 从服务器 发送 INFO 命令。当一个 主服务器 被 Sentinel 标记为 客观下线 时,Sentinel 向 下线主服务器 的所有 从服务器 发送 INFO 命令的频率,会从 10 秒一次改为 每秒一次。
	6))Sentinel 和其他 Sentinel 协商 主节点 的状态,如果 主节点 处于 SDOWN 状态,则投票自动选出新的 主节点。将剩余的 从节点 指向 新的主节点 进行 数据复制
	7))当没有足够数量的 Sentinel 同意 主服务器 下线时, 主服务器 的 客观下线状态 就会被移除。当 主服务器 重新向 Sentinel 的 PING 命令返回 有效回复 时,主服务器 的 主观下线状态 就会被移除。
 3)Redis Sentinel搭建
     1))Redis Sentinel的节点规划
角色ip地址端口号
Redis Master10.206.20.23116379
Redis Slave110.206.20.23126379
Redis Slave110.206.20.23136379
Redis Sentinel110.206.20.23116380
Redis Sentinel210.206.20.23126380
Redis Sentinel310.206.20.23136380
 	2))Redis-Server的配置管理,分别拷贝三份 redis.conf 文件到 /usr/local/redis-sentinel 目录下面。三个配置文件分别对应 master、slave1 和 slave2 三个 Redis 节点的 启动配置。
       cp /usr/local/redis-4.0.11/redis.conf /usr/local/redis-sentinel/redis-16379.conf
	   cp /usr/local/redis-4.0.11/redis.conf /usr/local/redis-sentinel/redis-26379.conf
	   cp /usr/local/redis-4.0.11/redis.conf /usr/local/redis-sentinel/redis-36379.conf
	3)) 分别修改三分配置文件:
	   主节点:redis-16379.conf
daemonize yes
pidfile /var/run/redis-16379.pid
logfile /var/log/redis/redis-16379.log
port 16379
bind 0.0.0.0
timeout 300
databases 16
dbfilename dump-16379.db
dir ./redis-workdir
masterauth 123456
requirepass 123456
       从节点1:redis-26379.conf
daemonize yes
pidfile /var/run/redis-26379.pid
logfile /var/log/redis/redis-26379.log
port 26379
bind 0.0.0.0
timeout 300
databases 16
dbfilename dump-26379.db
dir ./redis-workdir
masterauth 123456
requirepass 123456
slaveof 127.0.0.1 16379
       从节点2:redis-36379.conf
daemonize yes
pidfile /var/run/redis-36379.pid
logfile /var/log/redis/redis-36379.log
port 36379
bind 0.0.0.0
timeout 300
databases 16
dbfilename dump-36379.db
dir ./redis-workdir
masterauth 123456
requirepass 123456
slaveof 127.0.0.1 16379
	4))Redis-Server启动验证
	redis-server /usr/local/redis-sentinel/redis-16379.conf
    redis-server /usr/local/redis-sentinel/redis-26379.conf
    redis-server /usr/local/redis-sentinel/redis-36379.conf
    5))Sentinel的配置管理
    分别拷贝三份 redis-sentinel.conf 文件到 /usr/local/redis-sentinel 目录下面。三个配置文件分别对应 master、slave1 和 slave2 三个 Redis 节点的 哨兵配置。
     cp /usr/local/redis-4.0.11/sentinel.conf /usr/local/redis-sentinel/sentinel-16380.conf
	 cp /usr/local/redis-4.0.11/sentinel.conf /usr/local/redis-sentinel/sentinel-26380.conf
	 cp /usr/local/redis-4.0.11/sentinel.conf /usr/local/redis-sentinel/sentinel-36380.conf		
	节点1:sentinel-16380.conf  
protected-mode no
bind 0.0.0.0
port 16380
daemonize yes
sentinel monitor master 127.0.0.1 16379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 180000
sentinel parallel-syncs master 1
sentinel auth-pass master 123456
logfile /var/log/redis/sentinel-16380.log

节点2:sentinel-26380.conf

protected-mode no
bind 0.0.0.0
port 26380
daemonize yes
sentinel monitor master 127.0.0.1 16379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 180000
sentinel parallel-syncs master 1
sentinel auth-pass master 123456
logfile /var/log/redis/sentinel-26380.log

节点3:sentinel-36380.conf

protected-mode no
bind 0.0.0.0
port 36380
daemonize yes
sentinel monitor master 127.0.0.1 16379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 180000
sentinel parallel-syncs master 1
sentinel auth-pass master 123456
logfile /var/log/redis/sentinel-36380.log
6))Sentinel启动验证
	redis-sentinel /usr/local/redis-sentinel/sentinel-16380.conf  
	redis-sentinel /usr/local/redis-sentinel/sentinel-26380.conf
	redis-sentinel /usr/local/redis-sentinel/sentinel-36380.conf
7)) Sentinel配置刷新 sentinel 服务启动完毕后,会自动组成集群,并通过master节点,关联到slave节点。
----------------------------------------------------------------------------------------------------------------------------------------------
3.3 redis集群模式安装
1)集群规划:
节点名称端口号是主是从所属主节点
redis-63796379主节点
redis-63896389从节点redis-6379
redis-63806380主节点
redis-63906390从节点redis-6380
redis-63816381主节点
redis-63916391从节点redis-6381
2)集群目录统一,划分 为conf,data,log目录
	 mkdir -p /usr/local/redis-cluster
	 cd /usr/local/redis-cluster、mkdir conf data log
	 mkdir -p data/redis-6379 data/redis-6389 data/redis-6380 data/redis-6390 data/redis-6381 data/redis-6391
	  
3)复制修改6个节点的配置
redis-6379.conf
::::::::::
daemonize yes
bind 127.0.0.1
dir /usr/local/redis-cluster/data/redis-6379
pidfile /var/run/redis-cluster/redis-6379.pid
logfile /usr/local/redis-cluster/log/redis-6379.log
port 6379
cluster-enabled yes
cluster-config-file /usr/local/redis-cluster/conf/node-6379.conf
cluster-node-timeout 10000
appendonly yes
4)安装Ruby环境
   brew install ruby
 5)准备rubygem redis依赖
 	gem install redis
  6)拷贝redis-trib.rb到集群根目录
	cp /usr/local/redis-4.0.11/src/redis-trib.rb /usr/local/redis-cluster
7)启动redis服务节点
    redis-server conf/redis-6379.conf
    redis-server conf/redis-6389.conf
    redis-server conf/redis-6380.conf
    redis-server conf/redis-6390.conf
    redis-server conf/redis-6381.conf
    redis-server conf/redis-6391.conf
  8)redis-trib关联集群节点,按照 从主到从 的方式 从左到右 依次排列 6 个 redis 节点。
    ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6389 127.0.0.1:6390 127.0.0.1:6391
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值