Redis HA篇 +哨兵搭建
发布日期:2021-06-29 12:02:37
浏览次数:2
分类:技术文章
本文共 8365 字,大约阅读时间需要 27 分钟。
说明:本文为面向Redis哨兵搭建的指导手册 标签:Redis哨兵、Redis高可用、Redis故障转移、Redis 4.0.2 注意:文中删去了不需要的多余部分,让初学者一目了然一学就会 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化
★ 前言
※ 该文档架构采用:单机1主2从3哨兵架构(相当于6个redis) ※ 系统信息:Centos 6.3 x86_64 4GB内存 ※ 如果主从有密码,哨兵也需要密码才能去控制他们 ※ 为了方便初学者学习了解redis本文简化了所有步骤 ※ Redis全称“remote dictionary server”中文远程字典服务 ※ Redis属于NoSql数据库中的key-value类型 ※ Redis的哨兵机制是redis2.8开始支持,而集群模式是redis3.0开始支持。 ※ Redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。 ※ Redis的主为读写模式,从为只读模式; ※ Redis的更多参数介绍参考本人其他相关文档★ 相关文章
※ ※ ※ ※ ★ 哨兵工作机制 自动监控并切换主从状态及主从的配置文件 ★ 搭建哨兵前提条件 # 提前配置好主从环境,并拉起主从 # 需要开启3个会话,分别执行挂起 /soft/redis-4.0.2/src/redis-server /soft/redis-4.0.2/redis_6380.conf /soft/redis-4.0.2/src/redis-server /soft/redis-4.0.2/redis_6381.conf /soft/redis-4.0.2/src/redis-server /soft/redis-4.0.2/redis_6382.conf ★ 配置哨兵 ※ 复制配置文件 cp /soft/redis-4.0.2/sentinel.conf /soft/redis-4.0.2/sentinel_26380.conf cp /soft/redis-4.0.2/sentinel.conf /soft/redis-4.0.2/sentinel_26381.conf cp /soft/redis-4.0.2/sentinel.conf /soft/redis-4.0.2/sentinel_26382.conf※ 修改配置文件(主)
# 相关文件位置: /soft/redis-4.0.2/sentinel_26380.conf # 修改哨兵端口:port sed -i 's/^port 26379/port 26380/g' /soft/redis-4.0.2/sentinel_26380.conf cat /soft/redis-4.0.2/sentinel_26380.conf |grep "^port 263" # 配置主服务器 sed -i 's/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor mymaster 127.0.0.1 6380 2/g' /soft/redis-4.0.2/sentinel_26380.conf cat /soft/redis-4.0.2/sentinel_26380.conf |grep "^sentinel monitor"※ 修改配置文件(从A)
# 相关文件位置: /soft/redis-4.0.2/sentinel_26381.conf # 修改哨兵端口:port sed -i 's/^port 26379/port 26381/g' /soft/redis-4.0.2/sentinel_26381.conf cat /soft/redis-4.0.2/sentinel_26381.conf |grep "^port 263" # 配置主服务器 sed -i 's/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor mymaster 127.0.0.1 6380 2/g' /soft/redis-4.0.2/sentinel_26381.conf cat /soft/redis-4.0.2/sentinel_26381.conf |grep "^sentinel monitor"※ 修改配置文件(从B)
# 相关文件位置: /soft/redis-4.0.2/sentinel_26382.conf # 修改哨兵端口:port sed -i 's/^port 26379/port 26382/g' /soft/redis-4.0.2/sentinel_26382.conf cat /soft/redis-4.0.2/sentinel_26382.conf |grep "^port 263" # 配置主服务器 sed -i 's/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor mymaster 127.0.0.1 6380 2/g' /soft/redis-4.0.2/sentinel_26382.conf cat /soft/redis-4.0.2/sentinel_26382.conf |grep "^sentinel monitor" ★ 启动所有哨兵 # 需要开启3个会话,分别执行挂起 /soft/redis-4.0.2/src/redis-sentinel /soft/redis-4.0.2/sentinel_26380.conf /soft/redis-4.0.2/src/redis-sentinel /soft/redis-4.0.2/sentinel_26381.conf /soft/redis-4.0.2/src/redis-sentinel /soft/redis-4.0.2/sentinel_26382.conf ★ 查看主从状态 echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6380 |grep role echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6381 |grep role echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6382 |grep role ★ 查看状态详情 echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6380 echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6381 echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6382 echo "info Sentinel" | /soft/redis-4.0.2/src/redis-cli -p 26380 echo "info Sentinel" | /soft/redis-4.0.2/src/redis-cli -p 26381 echo "info Sentinel" | /soft/redis-4.0.2/src/redis-cli -p 26382 ★ 测试数据传输 # 插入/查看数据 echo "set zzt_01 'hello zzt'" | /soft/redis-4.0.2/src/redis-cli -p 6380 echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380 echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6381 echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6382 # 清理数据 echo "del zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380 echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380 ★ 测试从节点自动重启 该模式下,从节点重启后会自动加入主从,并且会自动同步主库数据 ★ 测试主节点自动重启 哨兵会自动判断主节点状态,并重新选举主节点; 原主节点重启后会自动以从的身份加入主从 该模式的主从切换是自动的,所以一般推荐使用自动管理的哨兵模式 ★ 测试某个哨兵实例自动重启 哨兵自动重启并不影响主从的自动选举和切换 哨兵自动重启后可以自动加入哨兵组★ 案例
※ 主从信息[root@main redis-4.0.2]# /soft/redis-4.0.2/src/redis-cli -p 6380127.0.0.1:6380> info # Serverredis_version:4.0.2redis_git_sha1:00000000redis_git_dirty:0redis_build_id:cd424730de8d0575redis_mode:standaloneos:Linux 2.6.32-279.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollatomicvar_api:sync-builtingcc_version:4.4.6process_id:42813run_id:54f9160f14949b6d2fa23b0e5c03db717ac7caa5tcp_port:6380uptime_in_seconds:2248uptime_in_days:0hz:10lru_clock:3696251executable:/soft/redis-4.0.2/src/redis-serverconfig_file:/soft/redis-4.0.2/redis_6380.conf# Clientsconnected_clients:7client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memoryused_memory:2074094used_memory_human:1.98Mused_memory_rss:2732032used_memory_rss_human:2.61Mused_memory_peak:2154072used_memory_peak_human:2.05Mused_memory_peak_perc:96.29%used_memory_overhead:2068937used_memory_startup:835755used_memory_dataset:5157used_memory_dataset_perc:0.42%total_system_memory:4004020224total_system_memory_human:3.73Gused_memory_lua:37888used_memory_lua_human:37.00Kmaxmemory:0maxmemory_human:0Bmaxmemory_policy:noevictionmem_fragmentation_ratio:1.32mem_allocator:libcactive_defrag_running:0lazyfree_pending_objects:0# Persistenceloading:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1614306740rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1rdb_last_cow_size:204800aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:okaof_last_cow_size:0# Statstotal_connections_received:13total_commands_processed:6346instantaneous_ops_per_sec:5total_net_input_bytes:260328total_net_output_bytes:805031instantaneous_input_kbps:0.27instantaneous_output_kbps:4.29rejected_connections:0sync_full:2sync_partial_ok:0sync_partial_err:2expired_keys:0evicted_keys:0keyspace_hits:1keyspace_misses:0pubsub_channels:1pubsub_patterns:0latest_fork_usec:183migrate_cached_sockets:0slave_expires_tracked_keys:0active_defrag_hits:0active_defrag_misses:0active_defrag_key_hits:0active_defrag_key_misses:0# Replicationrole:masterconnected_slaves:2slave0:ip=127.0.0.1,port=6381,state=online,offset=80670,lag=0slave1:ip=127.0.0.1,port=6382,state=online,offset=80537,lag=1master_replid:d38df8987f4ebac447df143c0da5bb48db2ace72master_replid2:0000000000000000000000000000000000000000master_repl_offset:80670second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:80670# CPUused_cpu_sys:2.79used_cpu_user:0.97used_cpu_sys_children:0.00used_cpu_user_children:0.00# Clustercluster_enabled:0# Keyspacedb0:keys=1,expires=0,avg_ttl=0※ 哨兵信息[root@main redis-4.0.2]# /soft/redis-4.0.2/src/redis-cli -p 26380127.0.0.1:26380> info# Serverredis_version:4.0.2redis_git_sha1:00000000redis_git_dirty:0redis_build_id:cd424730de8d0575redis_mode:sentinelos:Linux 2.6.32-279.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollatomicvar_api:sync-builtingcc_version:4.4.6process_id:46908run_id:6c4bac04c26736cd49cdcaaa26738629c97f3693tcp_port:26380uptime_in_seconds:296uptime_in_days:0hz:17lru_clock:3696135executable:/soft/redis-4.0.2/src/redis-sentinelconfig_file:/soft/redis-4.0.2/sentinel_26380.conf# Clientsconnected_clients:3client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# CPUused_cpu_sys:0.72used_cpu_user:0.16used_cpu_sys_children:0.00used_cpu_user_children:0.00# Statstotal_connections_received:5total_commands_processed:818instantaneous_ops_per_sec:2total_net_input_bytes:43915total_net_output_bytes:5224instantaneous_input_kbps:0.12instantaneous_output_kbps:0.01rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:0evicted_keys:0keyspace_hits:0keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:0migrate_cached_sockets:0slave_expires_tracked_keys:0active_defrag_hits:0active_defrag_misses:0active_defrag_key_hits:0active_defrag_key_misses:0# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=mymaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3127.0.0.1:26380> ※ 插入/查看数据[root@main ~]# echo "set zzt_01 'hello zzt'" | /soft/redis-4.0.2/src/redis-cli -p 6380OK[root@main ~]# echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380"hello zzt"[root@main ~]# echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6381"hello zzt"[root@main ~]# echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6382"hello zzt"
※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~
over
转载地址:https://blog.csdn.net/zzt_2009/article/details/114395391 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月21日 16时47分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
30种EMC标准电路分享,再不收藏就晚了!
2019-04-29
这100道Linux常见面试题,看看你会多少?
2019-04-29
十年硬件老司机,结合实际案例,带你探索单片机低功耗设计!
2019-04-29
“2020年嵌入式软件秋招经验和对嵌入式软件未来的一点思考”
2019-04-29
嵌入式的坑在哪方面?
2019-04-29
三种常见嵌入式设备通信协议
2019-04-29
硬核,这个充电宝居然烧煤气!
2019-04-29
什么是模块化代码?如何写?
2019-04-29
STM32串口发送数据和接收数据方式总结
2019-04-29
来,看看这20个常用的宏定义!
2019-04-29
嵌入式开发中常用的几种通信接口总结
2019-04-29
为什么我那么努力,模电还是学不懂?
2019-04-29
PID系统稳定性与零极点的关系
2019-04-29
什么?电路板上还要喷漆?
2019-04-29
读博读废了是种什么样的体验?
2019-04-29
2020年,技术圈十大“翻车”事件!
2019-04-29
C语言状态机编程思想
2019-04-29
为什么很多电器设备都要使用单片机?
2019-04-29
在中国做操作系统研发 20 年是种什么体验?
2019-04-29
PCB走线角度为90度到底行不行?
2019-04-29