24、keepalivedの高可用性はじめに

:keepalivedのは何24.1

keepalivedのソフトウェアは、もともと管理し、LVSクラスタシステムの各サービスノードの状態を監視するために設計されたLVS負荷分散ソフトウェア用に設計された、と後でVRRPは、高可用性機能を実現することができ加わりました。

したがって、管理にkeepalivedの添加は、ソフトウェアをLVSだけでなく、付加サービスとして使用することができる(例えば:nginxの、Haproxyは、MySQL等)高可用性ソフトウェアソリューションを。

主に、VRRPプロトコルを介して、高可用性機能を実現するソフトウェアをkeepalivedの、VRRPは仮想ルータ冗長プロトコル(仮想ルータ冗長プロトコル)の略で、目的は、VRRPを表示されます

動的ルーティング単一障害点の問題を解決することであり、それは、個々のノードがダウンしたときに、ネットワーク全体缶中断のない動作を保証することができます。だから、keepalivedの一方のLVS構成管理機能、

LVSはまた、次のノードのヘルスチェックを実行する機能を有している一方で、システムのネットワーク・サービスの高可用性機能を実現することができます。

keepalivedのソフトウェアの公式サイト:http://www.keepalived.org


24.2、三つの重要な機能は、サービスをkeepalivedの:

管理ソフトウェアLVS 1、ロード・バランシング:

早期LVSソフトウェア、LVSコマンドラインのノードまたは管理を実現するためのスクリプトのための健康診断に合格する必要がある、なし。LVSを使用するには、これらの不便を解消するために、keepalivedのは生まれました、

keepalivedのソフトウェアは、もともと生まれ問題LVSを解決するために設計された、と言うことができます。そのため、深い感情keepalivedのとLVS、夫と妻としての関係は、密接に幸せ、統合することができます

作業。これは、よりなどの起動制御を設定し、基本的なインターフェースとサービスをより直接的にLVSを投与することにより、構成ファイルを読み取ることでkeepalivedのLVSアプリケーション自体、停止、それを可能にします

簡単で便利なプラス。


LVSクラスタノードのヘルスチェック機能(ヘルス)を達成するために2、:

ファイル自体に設定することができるLVSノードIPおよび関連パラメータkeepalivedのはLVSの直接管理をkeepalived.conf、また、場合LVSクラスタの一つあるいは少数

サーバがサービスを提供することはできませんが、ノード障害が発生した場合、keepalivedのサービスが自動的にノードサーバのLVSは、他の正常なサーバーノードに通常の転送キューとスイッチのクリアに失敗します

で、エンドユーザーのアクセスを確保するために、影響を受けません。障害が発生したノードのサーバーが修復されたときに、keepalivedのサービスが自動的に顧客の通常の転送キューに追加します。


システムサービス(フェイルオーバー)として図3に示すように、高可用性ネットワーク機能:

keepalivedのサービスを停止することができない、とすることができるマスター自動切替とバックアップホストの間、ホストは、通常のサーバであってもよい、例えば、フェイルオーバー、任意の2つのホスト間で実施されてもよいです

これは、LVSのロードバランシングは、そのようなnginxのリバースプロキシサーバです。keepalivedのは、例えば、フェイルオーバー、任意の2つのホスト間で実施され、マスタとバックアップホストとの間の自動切り替えすることができます

ホストは、通常の業務サーバを停止することはできません、それは、そのようなLVSのロードバランシング、nginxのリバースプロキシサーバーにすることができます。


4、原理は次のように、高可用性機能が実装さkeepalivedの:

一方、二つのホストがインストールされているソフトウェアをkeepalivedのと、正常動作の開始時に、マスターのすべてのリソースを取得するとサービスをユーザーに提供するために、バックアップなどのホストの役割のためのホストの役割をサービスを開始します

ホットスタンバイマスタホスト、文字がマスタホストの故障や誤動作する場合、ホストバックアップの役割は、自動的にVIPを引き継ぐために、適切な資金と資源を含むマスターホストのすべての作業を、引き継ぎます

ソースサービス、およびバグ修正のマスターのホストとしての役割は、自動的に元のプロセスへのワークバック、それが仕事を引き継ぐためにその失敗を解放バックアップマスターホスト用のホストの役割を引き継ぐ際に、これを

二つのホストが元のロールと作業状態に復元されるときに最初にオンするとき。


24.3、転送のkeepalivedの高可用性フェールオーバーの原則:

Keepalived 高可用服务对之间的故障切换转移,是通过 VRRP 协议(虚拟路由冗余协议)来实现的。在 Keepalived 服务正常工作时,主 Master 节点会不断

地向备节点发送(多播的方式)心跳消息,用以告诉备 Backup 节点自己还活着,当主 Master 节点发生故障时,就无法发送心跳消息了,备节点也就因此无法

继续检测到来自Master 节点的心跳了,进而调用自身的接管程序,接管主 Master 节点的 IP 资源及服务。而当主 Master 节点恢复时,备 Backup 节点又会释

放主节点故障时自身接管的 IP 资源及服务,恢复到原来备用角色。


24.4、vrrp协议:

VRRP 协议,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP 的出现就是为了解决静态路由的单点故障问题,VRRP 协议是通

过一种竞选机制来将路由的任务交给某台 VRRP 路由器的。VRRP 协议早期是用来解决交换机、路由器等设备单点故障的。


1、vrrp原理描述(同样适用于keepalived的工作原理):

在一组 VRRP 路由器集群中,有多台物理 VRRP 路由器,但是这多台物理的机器并不是同时工作的,而是由一台称为 MASTER 的机器负责路由工作,其他的机器

都是 BACKUP。MASTER 角色并非一成不变,VRRP 协议会让每个 VRRP 路由参与竞选,最终获胜的就是 MASTER。MASTER 拥有虚拟路由器的 IP 地址,我们

把这个 IP 地址称为 VIP,MASTER 负责转发发送给网关地址的数据包和响应 ARP 请求。


2、vrrp是如何工作的:

VRRP 协议通过竞选机制来实现虚拟路由器的功能,所有的协议报文都是通过 IP 多播(默认的多播地址:224.0.0.18)形式进行发送。虚拟路由器由 VRID (范围

0-255)和一组 IP 地址组成,对外表现为一个周知的 MAC 地址:00-00-5E-00-01-{VRID}。所以,在一个虚拟路由器中,不管谁是 MASTER,对外都是相同的

MAC 地址和 IP 地址,如果其中一台虚拟路由器宕机,角色发生切换,那么客户端并不需要因为 MASTER 的变化修改自己的路由设置,可以做到透明的切换。这

样就实现了如果一台机器宕机,那么备用的机器会拥有 MASTER 上的 IP 地址,实现高可用功能。


3、vrrp是如何通信的:

在一组虚拟路由器中,只有作为 MASTER 的 VRRP 路由器会一直发送 VRRP 广播包,此时 BACKUP 不会抢占 MASTER 。当 MASTER 不可用时,这个时候

BACKUP 就收不到来自 MASTER 的广播包了,此时多台 BACKUP 中优先级最高的路由器会去抢占为 MASTER。这种抢占是非常快速的(可能只有1秒甚至更少),

以保证服务的连续性。出于安全性考虑,VRRP 数据包使用了加密协议进行了加密。


24.5、keepalived高可用服务脑裂问题:

1、什么是脑裂:

由于某些原因,导致两台高可用服务器在指定时间内无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器都还活着并在正常运行,

这样就会导致同一个 IP 或服务在两端同时存在发生冲突,最严重的是两台主机占用同一个 VIP 地址,当用户写入数据时可能会分别写入到两端,这可能会导致服务器

两端的数据不一致或造成数据丢失,这种情况就被称为脑裂。


2、导致脑裂发生的原因:

(1)高可用服务器之间心跳线链路故障,导致无法正常通信:

1)心跳线坏了(包括断了,老化)。

2)网卡及相关驱动坏了,IP 配置及冲突问题(网卡直连)。

3)心跳线连接的设备故障(网卡及交换机)。

(2)高可用服务器上开启了 iptables 防火墙阻挡了心跳消息传输。

(3)高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。

(4)其他服务配置不当等原因,如心跳方式不同,心跳广播冲突、软件 BUG等。

注意:Keepalived 配置里同一 VRRP 实例如果 virtual_router_id 参数两端配置不一致,也会导致脑裂问题发生。


3、解决脑裂的具体方案:

(1)同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能够传送心跳消息。

(2)当检测到脑裂时强行关闭一个心跳节点(这个功能需要特殊设备支持,如Stonith、fence)。相当于备节点接收不到心跳消息,发送关机命令通过单独的线路关

闭主节点的电源。

(3)做好对脑裂的监控报警(如邮件及手机短信等或值班),在问题发生时人为第一时间介入仲裁,降低损失。例如,百度的监控报警短信就有上行和下行的区别。

报警信息报到管理员手机上,管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器,让服务器根据指令自动处理相应故障,这样解决故障的时间更短。

(4)如果开启防火墙,一定要让心跳消息通过,一般通过允许 IP 段的形式。













おすすめ

転載: www.cnblogs.com/LiuChang-blog/p/12508270.html