aws ec2 keepalived 的高可用构建

前言:

AWS 已有ALB (Application Load Balancer) 和 NLB (Network Load Balancer),可滿足大部分業務需求,但某些業務場景仍需要自建高可用環境。
此文便是基於AWS EC2 自建高可用主機。

準備:

EC2 host1:192.168.10.10
EC2 host2:192.168.10.20
Float IP:192.168.10.30

思路:

AWS EC2 主機支持分配輔助IP,可使用AWS CLI 創建輔助IP,基於此方式,只要當主機或服務出現故障時,將輔助IP 分配給另一臺正常的主機即可。
那麼要解決的就是對主機及服務的判斷,最初的想法是寫個腳本做存活判斷,即:
1.主機讀取指定status文件內字符,判斷是否屬於master,然後檢測自身的服務是否處於存活狀態,存活則pass,否則檢查另一臺主機及服務狀態,存活則將Float IP 分配給另一個存活的主機並改寫status文件內容。
2.不屬於master,則檢測自身的服務是否處於存活狀態,存活則檢查master服務是否存活,存活則pass,否則將Float IP 分配給自己並改寫status文件內容。
將腳本加入crontab,並每3秒執行一次

後來感覺還是用keepalived 做更省事些……

正文:
這裏不做keepalived 安裝說明,只講講keepalived 的實現思路及最終配置。
keepalived 間使用單播方式,使用pidof 檢測應用服務,使用notify_master 狀態轉換通知執行創建Float IP腳本,將Foat IP分配給自身

keepalived master配置:

global_defs {
script_user ec2-user                  #指定執行腳本用戶
enable_script_security
}

vrrp_script check_haproxy {
script "/sbin/pidof haproxy"
interval 5
fall 2
rise 2
weight -30
user ec2-user
}

vrrp_instance VI_1 {
state MASTER
interface eth0
smtp_alert
virtual_router_id 51
priority 120
unicast_src_ip 192.168.10.10

unicast_peer {
192.168.10.20
}

advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
check_haproxy
}

notify_master "/etc/keepalived/floatip.sh"
}

keepalived backup配置:

global_defs {
script_user ec2-user
enable_script_security
}

vrrp_script check_haproxy {
script "/sbin/pidof haproxy"
interval 5
fall 2
rise 2
weight -30
user ec2-user
}

vrrp_instance VI_1 {
state BACKUP
interface eth0
smtp_alert
virtual_router_id 51
priority 100
unicast_src_ip 192.168.10.20

unicast_peer {
192.168.10.10
}

advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
check_haproxy
}

notify_master "/etc/keepalived/floatip.sh"
}

floatip.sh

#!/bin/bash
PIP=192.168.10.30
INTERFACE_ID=eni-f65555

/usr/bin/aws ec2 assign-private-ip-addresses --allow-reassignment --network-interface-id  $INTERFACE_ID --private-ip-addresses $PIP

注意:
在執行aws cli時,需要明確ec2 主機的網絡接口id,這裏的網絡接口指的是本機,因爲keepalived 定義的是本機狀態轉換爲master 時觸發的notify_master 通知

後言:
使用keepalived 後,不用在寫存活監控的腳本,只需寫好aws cli創建floatip的腳本即可

參考:
https://www.peternijssen.nl/high-availability-haproxy-keepalived-aws/

原文地址:https://blog.51cto.com/morrowind/2352984

时间: 2024-11-07 09:26:17

aws ec2 keepalived 的高可用构建的相关文章

亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计

设计高可用的应用是架构师的一个重要目标,但是基于云计算平台设计高可用应用与基于传统平台的设计有许多不同.云计算在给架构师带来了许多新的设计挑战的时候,也给带来了许多新的设计理念和可用的服务.如何在设计应用的时候充分利用云平台的各种特点是基于云计算设计的一个重要条件.在这个在线讲座中,我们将以亚马逊AWS云平台为例,讨论如何设计一个高可用应用. 我们先会根据AWS服务是否天然高可用.高容错的特点把常见的AWS服务分类.比如AWS把下面服务设计成高可用和高容错的服务: ·     Amazon S3

keepalived配置高可用集群

准备工作 1.设备分配 192.168.137.100    master 192.168.137.150    backup 192.168.137.254    vip 2.两台设备均安装keepalived yum install -y keepalived 3.两台设备均安装nginx yum install -y nginx 主设备配置 1.编辑keepalived配置文件 [[email protected] ~]# > /etc/keepalived/keepalived.conf

haproxy+keepalived实现高可用负载均衡web集群

haproxy+keepalived实现高可用负载均衡web集群 负载均衡集群的概念 负载均衡是设计分布式系统架构必须要考虑的因素之一,它指的是通过调度分发的方式尽可能将"请求"."访问"的压力负载平均分摊到集群中的各个节点,避免有些节点负载太高导致访问延迟,而有些节点负载很小导致资源浪费.这样,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间的动态分配,以实现负载均衡,从而为企业提供更高性能,更加稳定的系统架构解决方案. 高可用集群的概念

keepalived实现高可用集群方案

一.keepalived和VRRP协议介绍 keepalived是基于vrrp协议实现的一个高可用集群解决方案,可以利用keepalived来解决单点故障问题,使用keepalived实现的高可用集群方案中,一般有两台服务器,一个是MASTER(主服务器),另一个是BACKUP(备用服务器),这个集群中对外提供一个虚拟IP,MASTER服务器会定时发送特定信息给BACKUP服务器,当BACKUP服务器接收不到MASTER发送的消息时,BACKUP服务器会接管虚拟IP,继续提供服务. VRRP协议

Centos7 安装keepalived实现高可用

场景:尝试安装keepalived实现高可用,进而在suse环境中部署. 测试过程需要配合Nginx的相关知识:Centos7 Nginx安装 1 安装过程 问题 !!! OpenSSL is not properly installed on your system. !!! !!! Can not include OpenSSL headers files. 解决方法: yum -y install openssl-devel

18.1 集群介绍;18.2 keepalived介绍;18.3,18.4,18.5 用keepalived配置高可用集群(上,中,下);

18.1 集群介绍 1. 根据功能划分为两大类:高可用和负载均衡 2. 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 3. 实现高可用的开源软件有:heartbeat.keepalived 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2 4. 实现负载均衡的开源软件有LVS.keepalived.haproxy.nginx,

LVS+Keepalived实现高可用负载均衡

用LVS+Keepalived实现高可用负载均衡,简单来说就是由LVS提供负载均衡,keepalived通过对rs进行健康检查.对主备机(director)进行故障自动切换,实现高可用. 1. LVS NAT模式配置准备三台服务器,一台director, 两台real serverdr1: 外网ip 192.168.75.130,内网ip 10.1.1.10 两台real serverrs1: 内网ip 10.1.1.11rs2: 内网ip 10.1.1.12 两台real server的内网网

Keepalived + LVS 高可用负载均衡集群部署

Keepalived(高可用) 通过在两台主.备调度器上实现Keepalived高可用解决调度器单点失败问题 主.备调度器上配置LVS,正常情况下主调度器工作 主调度器异常时,Keepalived启用备用调度器,保证了调度器的高可用 调度器保证了后台服务的高可用 Keepalived机制把同一个IP一直分配给同一个Web服务器 IP地址分配: Web1:        192.168.10.20      ifcfg-lo:0   192.168.10.50 Web2:        192.1

lvs+keepalived实现高可用的web负载均衡

拓扑图 安装keepalived [[email protected] ~]# yum install -y keepalived 修改keepalived MASTER    配置文件 [[email protected] ~]# vim /etc/keepalived/keepalived.conf  ! Configuration File for keepalived   global_defs {    notification_email {      [email protecte