高可用

nginx下的负载均衡

拥有回忆 提交于 2020-01-29 14:29:51
负载均衡应用场景: 普通web应用部署到多台应用服务器上,客户端通过访问应用服务器发送请求,最简单的就是n对1模式,n个客户端访问同一个应用服务器,这种情况当并发量大了,就无法应对,而且,如果只有一台服务器时,这个服务器挂了,那么对于网站来说是个灾难.;解决方案便可以横向扩充n台应用服务器,并且客户端访问与应用服务器中间加上负载均衡配置,负载均衡能实现的效果主要有三个: 1.转发功能:按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。 2.故障移除:通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。 3.恢复添加:如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。 upstream www_server_pools { #www_server_pools自定义的连接池名称 server IP1; #连接的服务器,可以ip或者是域名 server ip2; } 在location 里面增加 转发算法 proxy_pass http://www_server_pools;#http://连接池名称 proxy_set_header Host $host; #把主机的header头发给轮询的服务器 proxy_set_header X-Forward-For

MySQL-03-故障转移

时间秒杀一切 提交于 2020-01-28 02:25:19
在高可用领域,除了通过规范化运维和软硬件优化,提升平均失效时间(MTBF), 降低平均恢复时间(MTTR)也非常关键,本文主要讲述的内容是其中的 故障转移 和 故障恢复 部分。 降低平均恢复时间(MTTR) 宕机的原因 运行环境(操作系统、硬盘、网络等)原因占 35% 性能问题(DDL/长事务导致资源耗尽等)占 35% 复制原因占 20% 其他(数据丢失或损坏)占10% 基于复制的冗余 使用 MySQL 的复制功能搭建热备份 主备相隔粒度越大,可用性保障等级越高(机柜<机房<城市) 故障转移 应用和数据库连接方式会影响故障转移的时效,应用可以通过虚拟IP/DNS/中间件等形式访问数据库 虚拟IP,一个虚拟 IP 绑定一个真实 IP,故障转移时把绑定的 IP 修改为备库的 IP 即可实现快速故障转移 DNS,一个 DNS 可以绑定多个 IP,可以实现快速故障转移,同时可以实现负载均衡 中间件,通过重写 JDBC 等接口,灵活调用和访问数据库,可以实现快速故障转移、读写分离、负载均衡,同时可以实现分库分表等分布式查询等 故障探测 I. 探测方法 ping 虚拟ip select 获取 test 库中的 heartbeat 表 update 更新 test 库中的 heartbeat 表 create table heartbeat (ts timestamp); II. 探测结果汇总

Redis哨兵

风流意气都作罢 提交于 2020-01-26 02:11:58
  1. 需求     如果搭建redis分片,如果其中一台服务器宕机.则导致整个分片不能正常使用.     需求:能否实现服务器尽可能”不宕机”.(高可用)   2. Redis哨兵工作原理          前提:如果需要实现redis高可用,必须先配置主从结构:     1. 用户通过哨兵之后连接当前集群中的主机;     2. 哨兵通过心跳检测机制实时向主机发出心跳检测:PING-PONG。如果连续3次没有收到主机的回执,则发现主机宕机,开始进行推选;     3. 哨兵通过连接主机时已经获取了主机的全部信息。如果主机宕机,哨兵通过推选的机制选择一台从机当做新的主机,之后将其他的服务器改为当前主机的从机;   3. 哨兵高可用搭建     1. 复制目录 cp -r shards sentinel     2. 删除持久化文件       因为redis节点的配置文件名称都是一致的,启动redis时会导致内存数据都是相同,所以必须先删除持久化文件: rm -f dump.rdb appendonly.aof     3. 主从搭建       a. 启动三台redis       b. 检查redis节点状态( 执行命令 src/redis-cli -p 6379 进入redis操作界面 ,执行 info replication 查看节点状态)               

nginx与 Keepalived高可用

二次信任 提交于 2020-01-25 14:06:19
1.1 keepalived软件能干什么? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写, VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行 1.2 keepalived软件主要功能? ## ①. 管理LVS负载均衡软件 ## ②. 实现对LVS集群节点健康检查功能 ## ③. 作为系统网络服务的高可用功能 1.3 keepalived软件工作原理?(重点) 绘图说明! 2.原理 1)VRRP协议,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。 2)VRRP是用过IP多播的方式(默认多播地址(224.0.0.18))实现高可用对之间通信的。 3)工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。 man

Keepalived高可用集群

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-25 14:00:03
一、服务介绍 keepalive起初是专为LVS设计的,专门用来监控LVS集群系统红各个服务节点的状态,后来又加入了VRRP的功能,因此不了配合LVS服务外,也可以作为其他服务(nginx,haproxy)的高可用软件,VRRP是virtual router redundancy protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,他能够保证网络的不间断、稳定的运行。所以,keepalive一方面具有LVS(cluster nodes healthchecks)功能,另一方面也具有LVS directors failover功能。 主要功能:实现LB Master主机和backup主机之间故障转义和自动切换。 二、keepalived故障切换转义原理介绍 2.1 切换原理 keepalived directors高可用对之间的故障切换转移,是通过VRRP协议(virtual router redundancy Protocol虚拟路由器冗余协议)来实现的。 在keepalived Directors正常工作时,主director节点会不断的向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障时,备节点就无法继续检测到主节点的心跳,进而调用自身的接管程序,接管主节点的IP资源及服务。而当主节点恢复故障时

keepalived

删除回忆录丶 提交于 2020-01-25 13:58:51
一、 HA集群中的相关术语 1.节点(node) 运行 HA进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和高可用软件服务,在高可用集群中,节点有主次之分,分别称之为主节点/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘,文件系统,网络地址和应用服务等,主节点上一般运行着一个或多个应用服务,而备节点一般处于监控状态 2.资源(resource) 资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其他节点接管, HA集群软件中,可以当做资源的实体有: ( 1)磁盘分区、文件系统 ( 2)IP地址VIP ( 3)应用程序服务 ( 4)NFS文件系统 3.事件(event) 也就是集群中可能发生的事情,例如节点系统故障,网络连通故障,网卡故障,应用程序故障等,这些事情都会发生节点资源发生转移, HA的测试也是基于这些事情来进行的 4.动作(action) 事件发生时 HA的响应方式,动作是由shell脚本控制的,例如当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动,进而接管故障节点的资源 二、 keepalived简介 keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的

MySQL——MHA高可用群集架构

心不动则不痛 提交于 2020-01-25 10:46:37
MHA高可用配置及故障切换 文章目录 MHA高可用配置及故障切换 前言 一、MHA特点 二、MHA的组成 三、 传统的Mysql主从架构存在的问题 四、MHA示例 1) 安装MySQL数据库 2) 配置MySQL一主两从 主服务器配置 从服务器配置 3) 安装MHA软件 4) 配置无密码认证 5) 配置MySQL MHA高可用 6) 模拟master故障切换 前言 MHA目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀MySQL故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成。 一、MHA特点 自动故障切换过程中,MHA视图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢似乎 使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险 二、MHA的组成 MHA Manager(管理节点) MHA Node(数据节点) MHA Manager可以单独部署在一台独立的机器上管理多个master

从0开始学架构(一)

99封情书 提交于 2020-01-23 18:12:29
此系列文章为 极客时间 上 从 0 开始学架构 学习后感悟总结,虽然隔了一段时间了,那么就再看一遍并且进行感悟升华,排版格式上有问题,后期再复习时也会进行更新 架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。 架构设计的主要目的是为了解决软件系统复杂度带来的问题,架构师该做的有的放矢,而不是贪大求全 一.架构复杂度来源---高性能 为了满足业务的所需性能,单机早已无法应当,因此都是采用集群方式来应对,使用集群方式后就会变得更复杂。 很简单的方式,我们加入新机器后便需要再加入任务分配器,从单机就进化成了下图,很好理解         随着为了满足业务性能要求增加了新服务器后,引出了一些问题 多了一个任务分配器,它可能是硬件(F5),也更有可能是负载均衡软件(lvs/nginx/haproxy),也可能是自研系统 任务分配器内有算法,使用不同的算法会对我们的性能有不同的改善,不同的业务场景有各自所需的算法 任务分配器与后端业务机器之间的联通问题 一台机器可以承受5000业务量(假定),但是2台并不是1W,实际需要打个8折,即8000,如果业务还比较复杂,那么可能只有5000,我们的收益会越来越低 随着业务量的增加,单台任务分配器都会成为瓶颈,即连任务分配器我们也需要变成集群模式,任务分配器前面也需要选择对应的分配策略(即任务分配器的任务分配器),常用的有DNS 轮询

keepalived的介绍

两盒软妹~` 提交于 2020-01-23 00:04:34
简介: Keepalived 起初是用来配合lvs负载均衡,用来控制管理并且监控系统中的各个节点状态,后来加入了VRRP功能是集群管理中保证集群高可用,用来防止单点故障 Vrrp协议,可以认为是实现路由器的高可用协议,就是把相同作用的服务器放在服务器组里面, 又MASTER节点 和BACKUP 节点,MASTER节点里面有对外提供服务的vip地址,master会像backup发送心跳icmp(icmp是tcp 的子协议,是internet控制报文的协议,用于在IP地址 和服务器之间传递消息,消息为服务可不可以使用,网络通不通,IP地址是否到达,路由是否课用,网络本身的消息)当master 节点不再发送心跳的时候,backup节点就会自动认为master节点宕掉了,backup主机会通过优先级竞选出新的master节点,代替原来的master节点工作,减少,由于服务器的故障带来的损失. 功能: 1.支持lvs负载均衡 2.高可用防止单点故障 配置文件:/etc/keepalived/keepalived.conf global_defs { #全局配置 notification_email { 定义报警邮件地址 acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email

K8S初探

ぐ巨炮叔叔 提交于 2020-01-20 08:15:28
K8S初探——基本概念+服务启动 核心概念 Pod:Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的。Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。(Pod是一组容器的组合,这些容器一起合作对外提供一个服务) 复制控制器(Replication Controller,RC) RC是K8s集群中最早的保证Pod高可用的API对象。通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod副本。即使在指定数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC也可以发挥它高可用的能力,保证永远有1个Pod在运行。RC是K8s较早期的技术概念,只适用于长期伺服型的业务类型,比如控制小机器人提供高可用的Web服务。(类似于分布式系统中的副本) 副本集(Replica Set,RS) RS是新一代RC,提供同样的高可用能力,区别主要在于RS后来居上,能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为Deployment的理想状态参数使用。 有状态服务集(PetSet) RC和RS主要是控制提供无状态服务的,其所控制的Pod的名字是随机设置的