一:redis单机模式
1).解压 Redis安装包
[root@localhost src]# tar -zxvf redis-5.0.4.tar.gz
看情况执行:
yum install gcc-c++ -y
//执行命令可完成安装
make MALLOC=libc
2:安装
3.修改redis的配置文件(展现行号 :set nu)
(1): 注释IP绑定
(2): 关闭保护模式
(3) 开启后台启动
4:redis服务器端相关命令
a.启动命令: redis-server redis.conf
b.检索命令: ps -ef | grep redis
c.进入客户端: redis-cli -p 6379
d.关闭redis: kill -9 PID号 | redis-cli -p 6379 shutdown
二:redis分片模式:(减少寻址时间,提升效率)
准备端口号:
1.6379
2.6380
3.6381
修改端口号: 将各自的端口号进行修改
[root@localhost shards]# vim 6380.conf
[root@localhost shards]# vim 6381.conf
启动3台redis服务器(相当于启动3台redis)
redis-server 6379.conf
redis-server 6380.conf
redis-server 6381.conf
ps -ef | grep redis
3台redis没有联系,各自独立
三:配置redis主从的结构(1)
策略划分: 1主2从 6379主 6380/6381从
1.将分片的目录复制 改名位sentinel
2.重启三台redis服务器
3.检查redis节点的主从的状态
4.实现主从挂载(将6380和6381挂载到6379下)
5.检查主机的状态
主从结果配置(2)
分别在从节点上配上主节点的信息
四:哨兵配置
1).复制配置文件
cp sentinel.conf sentinel/
2).修改保护模式
3).开启后台运行
4).设定哨兵的监控
其中的1 表示投票生效的票数 当前只有一个哨兵所以写1
5).修改宕机的时间
6).选举失败的时间
说明:如果选举超过指定的时间没有结束,则重新选举.
7).启动哨兵服务
哨兵实现高可用
测试(宕机命令)
redis-cli -p 6379 shutdown
1.检查主机的状态
2.将redis主服务器宕机 等待10秒 之后检查从机是否当选新的主机
3.重启6379服务器., 检查是否成为了新主机的从
五:通过sentinel的配置实现redis主从复制的高可用
一:sentinel节点配置文件的主要配置项
1.sentinel monitor [name] [host] [port] [n]
#监控主节点名称[name]
#监控主节点IP[host]
#监控主节点[port]
#[n]:至少有n个sentinel节点发现master有故障,才会自动进行sentinel故障转移
2.sentinel down-milliseconds [name] [milliseconds]
#[milliseconds]毫秒ping不同,则主观认为该节点有故障
3.sentinel parallel-syncs [name] [n]
故障转移后重新进行主从复制
#[n] = 1:代表串行,一个复制完成后,另一个才能复制
#[n] = 2或>2:代表并行,2个同时复制,或者多个同时复制
4.sentinel failover-timeout [name] [milliseconds]
#从故障转移开始milliseconds毫秒没有完成转移操作,则视为转移失败
二:配置sentinel的步骤
1.配置sentinel文件
daemonize yes
port 26379
bind 0.0.0.0
sentinel monitor mymaster 192.168.145.128 6666 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000
2.启动sentinel服务
启动sentinel服务的命令:./src/redis-sentinel [配置文件]
./src/redis-cli -p [sentinel服务的端口号]
在sentinel客户端输入 info 命令会出现sentinel节点的相关信息
# Server
redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:129165fe599a95d
redis_mode:sentinel
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:3852
run_id:7314d5bb4d634df94656b905b15aa4ae9ee32343
tcp_port:26379
uptime_in_seconds:537
uptime_in_days:0
hz:18
configured_hz:10
lru_clock:9993431
executable:/usr/software/redis-5.0.3/./src/redis-sentinel
config_file:/usr/software/redis-5.0.3/sentinel.custom26379.conf
# Clients
connected_clients:3
client_recent_max_input_buffer:2
client_recent_max_output_buffer:0
blocked_clients:0
# CPU
used_cpu_sys:1.650110
used_cpu_user:1.141941
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
# Stats
total_connections_received:3
total_commands_processed:1352
instantaneous_ops_per_sec:3
total_net_input_bytes:78650
total_net_output_bytes:8155
instantaneous_input_kbps:0.28
instantaneous_output_kbps:0.02
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
# Sentinel
# 主节点
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
#主节点的描述信息,slaves=2:两个从节点,sentinels=3:三个sentinel节点
master0:name=mymaster,status=ok,address=192.168.145.128:6666,slaves=2,sentinels=3
3-1:sentinel节点是如何获取以上信息的? →都指向master,获取master中的信息
4.再次查看sentinel配置文件(cat 配置文件名称),会出现一些slave,其他sentinel的配置信息
daemonize yes
port 26379
bind 0.0.0.0
sentinel myid a0b40c1e998b341bfa3ed3cf4e78c5cf226fae38
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.145.128 6666 2
sentinel failover-timeout mymaster 15000
# Generated by CONFIG REWRITE
dir "/usr/software/redis-5.0.3"
protected-mode no
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
# 从节点的信息
sentinel known-replica mymaster 192.168.145.128 6668
sentinel known-replica mymaster 192.168.145.128 6667
#其他sentinel的信息
sentinel known-sentinel mymaster 192.168.145.128 26381 20d86425d742e85cedd8a86e576da58d90b08b21
sentinel known-sentinel mymaster 192.168.145.128 26380 7f2886c479a783119b4bb580704ab5b8215dcb87
sentinel current-epoch 0
五:redis集群的配置
redis分片特点:
1.可以实现Redis内存数据的扩容.
2.redis分片本身没有高可用效果的.如果宕机将直接影响用户的使用.
redis哨兵特点:
1.Redis哨兵可以实现Redis节点的高可用.但是哨兵本身没有实现高可用机制.(最好不要引入第三方)
2.Redis哨兵有主从的结构 实现了内存数据的备份. 但是没有实现内存扩容的效果.
集群:
需要Redis内容扩容同时需要Redis高可用性所以应该使用Redis集群.