当前位置: 首页 > news >正文

网站文章更新python 网站开发实例教程

网站文章更新,python 网站开发实例教程,网站如何推广出去,肇庆高端模板建站Redis的主从复制 为什么Redis要引入主从复制#xff1f;what#xff1f; 在这里博主为小伙伴们简单的做下解释#xff0c;可以了解一下 实际生产环境下#xff0c;单机的redis服务器是无法满足实际的生产需求的。 第一#xff0c;单机的redis服务器很容易发生单点故障what 在这里博主为小伙伴们简单的做下解释可以了解一下 实际生产环境下单机的redis服务器是无法满足实际的生产需求的。 第一单机的redis服务器很容易发生单点故障即使redis提供了各种持久化的方法来避免数据的丢失但是物理上的故障(硬盘损毁等)还是无法完全避免的。 第二如果对单台机器的性能进行纵向拓展无论是CPU内存还是磁盘容量都很容易达到瓶颈无法满足实际需求。 针对这些问题redis提供了**复制(replication)**的功能通过主从(一主多从)和集群(多主多从)的方式对redis的服务进行水平扩展,用多台redis服务器共同构建一个高可用的redis服务系统。 搭建步骤 在Redis的主从模型下主服务器既可以读也可以写而从服务器原则上只允许读操作。接下来我们讲解一下主从复制的搭建。 如果不懂得搭建Redis可以去看博主之前的文章Redis下载安装教程详细步骤 在这里我们准备三台装有Redis的机器并保证初始数据保持一致 克隆2台Redis机器,并编辑redis.conf 3台机器都要编辑绑定ip地址 bind 0.0.0.0主机正常启动,并关闭防火墙 systemctl stop firewalldredis-server /etc/redis/redis.conf配置从机,编辑redis.conf 在 port 6379 后添加如下配置 slaveof 主机ip redis端口号 #示例如下 slaveof 192.168.240.134 6380启动从机 redis-server /etc/redis/redis.conf查看主从信息 #登录主库 redis-cli info replicationRedis的哨兵模式 先来说一下哨兵模式的基础性小知识感兴趣的可以做下了解 主从复制解决了数据备份的问题但是如果主节点宕机仍需要运维手动进行主从切换。要在主从复制下实现故障恢复的自动化就需要使用Redis的哨兵(Sentinel)模式。 哨兵是一个独立于数据服务器的进程用于监控redis数据服务器的状态当主从模式下最关键的主服务器出现故障时能够被哨兵自动的察觉。同时哨兵会在剩余的从服务器中**“选举”**出新的主服务器达到自动化恢复系统服务的目的。 哨兵本身也要考虑单点故障的问题所以Redis Sentinel一般由3~5个节点组成这样即使挂了个别哨兵节点哨兵整体还可以正常工作。 客户端来连接集群时会首先连接 sentinel通过 sentinel 来查询主节点的地址然后再去连接主节点进行数据交互。当主节点发生故障时客户端会重新向 sentinel 要地址sentinel 会将最新的主节点地址告诉客户端。如此应用程序将无需重启即可自动完成节点切换。 通过如下图演示故障切换的过程 从上图可以看到主节点挂掉了原先的主从复制也断开了客户端和损坏的主节点也断开了。从节点被提升为新的主节点其它从节点开始和新的主节点建立复制关系。客户端通过新的主节点继续进行交互。 Sentinel 会持续监控已经挂掉了主节点。待它恢复后原先挂掉的主节点现在变成了从节点从新的主节点那里建立复制关系。 搭建步骤 配置3个Redis1主2从3个哨兵 下面主机ip为192.168.146.23 配置主从复制 主机配置redis.conf bind 127.0.0.1 修改为 bind 机器ip从机1配置redis.conf bind 127.0.0.1 修改为bind 0.0.0.0 并添加配置slaveof 主节点ip 端口号 示例slaveof 192.168.146.23 6379从机2配置redis.conf bind 127.0.0.1 修改为bind 0.0.0.0 并添加配置slaveof 主节点ip 端口号 示例slaveof 192.168.146.23 6379重复执行redis-server /etc/redis/redis.conf 启动3个redis实例。 配置哨兵 哨兵1配置sentinel.conf: 添加bind 当前机器ip 将 sentinel monitor mymaster 127.0.0.1 6379 2 修改为 sentinel monitor mymaster 192.168.146.23 6379 2哨兵2配置sentinel.conf: 添加bind 当前机器ip 将 sentinel monitor mymaster 127.0.0.1 6379 2 修改为 sentinel monitor mymaster 192.168.146.23 6379 2哨兵3配置sentinel.conf: 添加bind 当前机器ip 将 sentinel monitor mymaster 127.0.0.1 6379 2 修改为 sentinel monitor mymaster 192.168.146.23 6379 2重复执行redis-sentinel /etc/redis/sentinel.conf 启动3个哨兵。 连接哨兵查看redis主从信息 redis-cli -h 哨兵ip -p 26379 比如 redis-cli -h 192.168.146.26 -p 26379 执行info命令# Server redis_version:5.0.10 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:87154668b9be1de7 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:5489 run_id:ffec09007fa40ab368227ca757fea7c1deeab585 tcp_port:26379 uptime_in_seconds:349 uptime_in_days:0 hz:11 configured_hz:10 lru_clock:8401446 executable:/root/redis-sentinel config_file:/etc/redis/sentinel.conf# Clients connected_clients:3 client_recent_max_input_buffer:2 client_recent_max_output_buffer:0 blocked_clients:0# CPU used_cpu_sys:3.608731 used_cpu_user:0.556983 used_cpu_sys_children:0.000000 used_cpu_user_children:0.000000# Stats total_connections_received:4 total_commands_processed:933 instantaneous_ops_per_sec:2 total_net_input_bytes:53617 total_net_output_bytes:7440 instantaneous_input_kbps:0.03 instantaneous_output_kbps:0.01 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 master0:namemymaster,statusok,address192.168.146.23:6379,slaves2,sentinels3关掉主节点然后过几秒刷新info可以看到选举后的新的主节点信息。 Redis的集群模式 Redis 的哨兵模式基本已经可以实现高可用读写分离 但是在这种模式下仍存在如下的问题 单个redis主节点的写并发有限单个redis接收所有的数据最终回导致内存太大内存太大回导致rdb文件过大从很大的rdb文件中同步恢复数据会很慢 为此Redis提供了Redis Cluster集群来解决这些问题。集群实现了 Redis 的分布式存储也就是说每台 Redis 节点上存储不同的内容Redis中多个节点共同担起存储数据的任务。 Redis Cluster 中整个数据库被划分为 16384 个slots(槽数据库中每一个键都属于这16384中的一个集群中的每个节点负责其中一部分槽位。 当 Redis Cluster 的客户端来连接集群时它也会得到一份集群的槽位配置信息。这样当客户端要查找某个 key 时可以直接定位到目标节点。 可以认为Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 搭建步骤 为了配置一个redis cluster,官方建议我们我们需要准备至少6台redis.其中至少3个主节点既然有3个主节点而一个主节点搭配至少一个从节点因此至少得6台redis 准备6台机器安装redis并且保证初始数据纯净并关闭防火墙和selinux配置6个节点都是编辑redis.conf 主节点1192.168.146.31 bind 当前机器ip cluster-enabled yes 主节点2192.168.146.32 bind 当前机器ip cluster-enabled yes 主节点3192.168.146.33 bind 当前机器ip cluster-enabled yes 从节点1192.168.146.34 bind 当前机器ip cluster-enabled yes从节点2192.168.146.35 bind 当前机器ip cluster-enabled yes从节点3192.168.146.36 bind 当前机器ip cluster-enabled yes启动6台Redis,并在每个节点上执行flushall命令目的是清空redis中原有的数据执行以下命令创建Redis集群 # --cluster-replicas 1 表示从节点的个数每个主节点配置1个从节点 [rootlocalhost opt]#redis-cli --cluster create 192.168.146.31:6379 192.168.146.32:6379 192.168.146.33:6379 192.168.146.34:6379 192.168.146.35:6379 192.168.146.36:6379 --clusterreplicas 1 redis-cli --cluster create 192.168.252.31:6379 192.168.252.32:6379 192.168.252.33:6379 192.168.252.34:6379 192.168.252.35:6379 192.168.252.36:6379 --cluster-replicas 1 如果出现以下错误Creating cluster [ERR] Node 192.168.146.31:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 解决方案 在每台机器上执行 flushall 命令 另外可以通过cluster reset命令重置集群Creating clusterPerforming hash slots allocation on 6 nodes... Using 3 masters: 192.168.146.31:6379 192.168.146.32:6379 192.168.146.33:6379 Adding replica 192.168.146.34:6379 to 192.168.146.31:6379 Adding replica 192.168.146.35:6379 to 192.168.146.32:6379 Adding replica 192.168.146.36:6379 to 192.168.146.33:6379 M: 3c8b6b84a16516c6fcccdcc2025fa656420d5c6c 192.168.146.31:6379 slots:0-5460,5798,6257,11921 (5464 slots) master M: e98a7244dac95763902b11ad5a2689cfd0231350 192.168.146.32:6379 slots:741,5461-10922,11921 (5464 slots) master M: f9efde9fbe682281602331c523d670e0a2d4c659 192.168.146.33:6379 slots:741,5798,6257,10923-16383 (5464 slots) master S: d02eb5f1f321520104197eb3b4cc7ffa74a843af 192.168.146.34:6379 replicates 3c8b6b84a16516c6fcccdcc2025fa656420d5c6c S: e9d037bdddfe4a9f0f29d7d28727f09d6d07c550 192.168.146.35:6379 replicates e98a7244dac95763902b11ad5a2689cfd0231350 S: 1bc1c56b3260469b8c3ddb13eb5f6e25f88abb7c 192.168.146.36:6379 replicates f9efde9fbe682281602331c523d670e0a2d4c659 Can I set the above configuration? (type yes to accept): 输入yes 最终看到如下输出 [OK] All nodes agree about slots configuration.Check for open slots... [OK] All 16384 slots covered.链接集群 redis-cli [-p 端口号] -c
http://www.dnsts.com.cn/news/91490.html

相关文章:

  • 下载百度2024最新版免费seo优化工具
  • 毛织厂家东莞网站建设如何做家教网
  • 足球网站建设意义中国工程招标网
  • 网站统计页面模板韩国购物网站模板
  • 福建城市建设厅网站成都网站优化教程
  • 自流井移动网站建设怎么进入凡科建设的网站
  • 专业的食品行业网站开发做网站注意事项
  • 广州白云学校网站建设上海传媒公司排行榜
  • 企业网站建设费用会计科目西安建厂
  • 收录快的门户网站网站设置专栏有什么好处
  • 阿里云做的网站空间邯郸网络安装
  • 怎样申请免费的网站空间石景山区公司网站建设
  • 做网站建设的公司用手机可以做网站
  • 企业的网站建设怎么记科目泰兴网站建设价格
  • 创新网站设计wordpress搭建电子商城
  • 网站的后台系统怎么进入wordpress类似的工具
  • 做会员体系的网站重庆在线高校平台登录
  • 与狗狗做网站专做废旧电子电路板配件回收的网站
  • 单位做网站资料需要什么软件统一登录入口
  • 深圳网站制作公司怎么样本科自考
  • 网站建设音乐插件怎么弄建筑模板使用寿命多久
  • 烟台建站程序湛江专业网站制作
  • 呼和浩特市网站公司电子商务网站建设步骤一般为
  • 长沙市互联网加网站wordpress服务器不支持中文tag
  • 效果图制作网站有哪些大连工程预算服务
  • 想要做网站的企业微网站首页
  • 鄂尔多斯网站建设鄂尔多斯珠宝类网站模板
  • 网站开发软硬件条件网络服务公司名字
  • 网站如何做h5动态页面设计dw怎样建设网站
  • 怎样不花钱做网站wordpress 获取当前分类id