1. 程式人生 > >在AWS構建跨可用區域高可用Keeplived架構

在AWS構建跨可用區域高可用Keeplived架構

1、在AWS上構建跨可用區域(AZ)高可用(HA)的Keeplived服務。Keeplived採用主從模式。架構圖如下:

2、去AWS IAM WEB UI控制檯,建立一個角色。步驟如下:

建立角色-》選擇EC2產品-》建立策略(Policy)-》服務項,選擇EC2;操作新增以下API操作。

DisassociateAddress,DescribeInstances,DescribeInstances,UnassignPrivateIpAddresses,AssignPrivateIpAddresses,AssociateAddress,DescribeInstanceStatus。

儲存名稱為:keepalived

3、新建一個使用者awscli,分配keepalived的角色,用於操作aws cli API。建立好使用者,會生成一個Access Key ID 和 Secret Access Key。下載csv檔案到本地電腦。後面呼叫API需要用到。

4、在AWS實現跨可用區域的Keepalived 實現主從模式,由於利用虛擬IP,無法實現在VPC內實現跨區域訪問,所以只能利用彈性IP實現,當然也可以購買AWS DNS 53服務。

要實現主從模式,首先要準備兩天EC2實力,MASTER,BACKUP。兩臺機器都必須具有訪問公網的能力,也就是兩臺機器

都必須有公網ip也就是public ip。這裡我給MASTER BACKUP都分配公網ip。說明見表格如下:

機器       IP 公網ip 例項ID
MASTER(主機名:  master1) 172.31.72.142 A區 10.11.11.12 i-abc
BACKUP(主機名稱:master2) 172.31.82.187 B區 10.11.11.13 i-efg 

5、(MASTER例項、BACKUP例項)安裝aws cli命令。

a.安裝pip工具

  curl -O https://bootstrap.pypa.io/get-pip.py

  python get-pip.py --user

b.使用 pip 安裝 AWS CLI。

pip install awscli --upgrade --user

c.將AWS命令加入加入PATH中。我這裡,以root執行,把aws命令,加入到root身份的環境中。

vi ~/.bash_profile
export PATH=~/.local/bin:$PATH

source ~/.bash_profile

6、(MASTER例項、BACKUP例項) 配置AWS CLI證書,開啟之前下載的證書csv檔案,裡面有Access Key ID 和Secret Access Key。

在MASTER和BACKUP都配置AWS CLI證書,配置方法執行aws configure按提示輸入就OK。

[[email protected] centos]# aws configure
AWS Access Key ID [****************S3FA]:XXX
AWS Secret Access Key [****************Tzlj]:XXX
Default region name [us-east-1]:us-east-1
Default output format [json]:json

7、(MASTER例項、BACKUP例項)安裝keeplived,haproxy

    sudo yum install -y keepalived

    sudo yum install -y haproxy

    sudo yum install -y vim

8、(MASTE例項)編寫notify_master指令碼檔案,vim /etc/keepalived/master.sh

#!/bin/bash

EIP=10.11.11.12 # MASTER IP地址也是彈性IP地址

INSTANCE_ID=i-abc # 主機例項id

#eipalloc-e563deed 為彈性IP地址id,即10.11.11.12 ip地址

/root/.local/bin/aws ec2 disassociate-address --association-id eipalloc-e563deed

/root/.local/bin/aws ec2 associate-address --public-ip $EIP --instance-id $INSTANCE_ID 

9、(MASTER例項)修改master.sh的執行許可權。

  sudo chmod a+x /etc/keepalived/master.sh 

10、(MASTER)修改配置檔案/etc/keepalived/keepalived.conf,編輯內容如下:

! Configuration File for keepalived

global_defs {

    router_id LVS_DEVEL

}

vrrp_script chk_haproxy {

   script "killall -0 haproxy"

   interval 3

   weight 5

}

vrrp_script check_apiserver {

script "/etc/keepalived/check_apiserver.sh"

interval 3

weight -2

fall 10

rise 2

}



vrrp_instance VI_1 {

    state MASTER

    debug 2

    interface ens5

    virtual_router_id 51

    priority 110

    unicast_src_ip 172.31.72.142

    advert_int 1

    unicast_peer {

       172.31.82.187

    }

    track_script {

       chk_haproxy

    }

    notify_master /etc/keepalived/master.sh

} 

11、(BACKUP例項)編寫notify_master指令碼檔案。指令碼內容如下:

[[email protected] centos]vim /etc/keepalived/master.sh

#!/bin/bash



EIP=10.11.11.12 # MASTER IP地址也是彈性IP地址



INSTANCE_ID=i-efg #備份機例項id



#eipalloc-e563deed 為彈性IP地址id,即10.11.11.12 ip地址

/root/.local/bin/aws ec2 disassociate-address --association-id eipalloc-e563deed



/root/.local/bin/aws ec2 associate-address --public-ip $EIP --instance-id $INSTANCE_ID 

12、(BACKUP例項)編寫notify_backup指令碼檔案

[[email protected] centos] vim /etc/keepalived/backup.sh

#!/bin/bash



BACKUPIP=10.11.11.13  #備機的ip地址,此臺機器為備機,當主機啟動時候,需要釋放主機ip,還原備份機器ip

EIP=10.11.11.12 # 彈性ip,也是主機的ip



BACKUP_INSTANCE_ID=i-efg # 備機例項

MASTER_INSTANCE_ID=i-abc  # 主機例項



#還原備份機器ip

/root/.local/bin/aws ec2 associate-address --public-ip $BACKUPIP --instance-id $BACKUP_INSTANCE_ID

#釋放主機ip,eipalloc-e563deed 為彈性IP地址id,即10.11.11.12 ip地址

/root/.local/bin/aws ec2 disassociate-address --association-id eipalloc-e563deed

#給主機新增上ip

/root/.local/bin/aws ec2 associate-address --public-ip $EIP --instance-id $MASTER_INSTANCE_ID 

13、(BACKUP例項) 新增指令碼執行許可權。 

   sudo chmod a+x /etc/keepalived/master.sh

    sudo chmod a+x /etc/keepalived/backup.sh

14、(BACKUP例項) 修改配置檔案/etc/keepalived/keepalived.conf,配置內容修改如下:

global_defs {
    router_id LVS_DEVEL
}

vrrp_script chk_haproxy {
   script "killall -0 haproxy"
   interval 3
   weight 5
}
vrrp_script check_apiserver {
 script "/etc/keepalived/check_apiserver.sh"
 interval 3
 weight -2
 fall 10
 rise 2
}

vrrp_instance VI_1 {
    state MASTER
    debug 2
    interface ens5
    virtual_router_id 51
    priority 100
    unicast_src_ip 172.31.82.187
    advert_int 1
    unicast_peer {
       172.31.72.142
    }
    track_script {
      chk_haproxy
    }
    notify_master /etc/keepalived/master.sh
    notify_backup /etc/keepalived/backup.sh
}

15、(MASTER例項、BACKUP例項) 執行下面命令,啟動服務。先啟動MASTE服務,再啟動BACKUP服務。 

   sudo systemctl enable haproxy

    sudo chkconfig haproxy on

    sudo systemctl start haproxy

    sudo systemctl enable keepalived

    sudo chkconfig keepalived on

    sudo systemctl start keepalived

16、在MASTER或者BACKUP機器上,或者所有機器安裝tcpdump工具檢視虛擬路由(VRRP)狀態。

  yum install -y tcpdump 

17、檢視VRRP路由狀態,我這裡的網路介面是ens5,用ip addr檢視,你如果的介面是eth0,這用eth0替換ens5。

sudo tcpdum -i ens5 “ip proto 112”

18、這裡最好修改一下Keepalive輸出日誌,因為預設都是在/var/log/messages輸出的,怎麼修改Keepalive單獨日誌,網上有方法。由於篇幅關係,這裡不再給出。

測試步驟:

1、兩邊服務都起來後,看看MASTER keepalived是否是MASTER狀態,BACKUP keepalived是否是BACKUP狀態。

2、停掉MASTER,看看BACKUP例項,BACKUP keepalived是否由backup狀態變成master狀態,同時BACKUP公網IP是否變成MASTER的IP,用MASTER 之前的IP登入一下,看一下主機名稱就可以了。這時候MASTER公網IP被BACKUP搶佔。

3、啟動MASTER,看看BACKUP例項的keepalived是否又由master狀態變成backup狀態,同時MASTER公網IP被恢復,BACKUP公網IP又回到之前的IP。

4、也可以觀察tcpdump的監控情況。上面測試都通過,AWS跨可用區域的高可用Keepalived架構搭建成功。

相關推薦

AWS構建可用區域可用Keeplived架構

1、在AWS上構建跨可用區域(AZ)高可用(HA)的Keeplived服務。Keeplived採用主從模式。架構圖如下: 2、去AWS IAM WEB UI控制檯,建立一個角色。步驟如下: 建立角色-》選擇EC2產品-》建立策略(Policy)-》服務項,選擇EC

構建MHA實現MySQL可用集群架構

MySQL數據庫實現故障自動轉移一、MHA簡介 MHA(Master HighAvailability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在

構建生產環境可用可用kubernetes集群

直接 地址 ofo 影響 yun 客戶 除了 腳本 網絡 kubernetes集群三步安裝 構建生產環境可用的高可用kubernetes集群 | sealos項目地址 特性 [x] 支持任意節點的etcd集群自動構建,且etcd集群使用安全證書,通過static pod方

阿里大牛手把手教你構建一個高效能、可用的大型分散式網站

大型分散式網站架構技術 大型網站的特點 大型網站一般有如下特點: 1.使用者多,分佈廣泛 2.大流量,高併發 3.海量資料,服

PAAS平臺構建7×24小時可用應用的方案設計

現在很多企業都在搭建自己的私有PAAS平臺,當然也有很多大型網際網路公司搭建共有PAAS平臺(例如SAE/BAE/JAE(jae.jd.com))。那麼使用PAAS平臺來部署SAAS應用有哪些好處呢?除了大家都知道方便部署管理,節約資源和成本,今天我主要給大家介紹另一個好處就

手把手教你構建一個高效能、可用的大型分散式網站

本文是學習大型分散式網站架構的技術總結,對構建一個高效能、高可用、可伸縮及可擴充套件的分散式網站進行了概要性描述,並給出一個架構參考。 文中一部分為讀書筆記,一部分是個人經驗總結,對大型分散式網站架構有較好的參考價值。 大型分散式網站架構技術 大型網站的特點 大型

aws ec2 keepalived 的可用構建

status eight 正常的 master cront tab trac 自己 out 前言: AWS 已有ALB (Application Load Balancer) 和 NLB (Network Load Balancer),可滿足大部分業務需求,但某些業務場景仍

亞馬遜AWS在線系列講座——基於AWS雲平臺的可用應用設計

data 可用 mod -m 討論 數據 目標 popu 實例 設計高可用的應用是架構師的一個重要目標。可是基於雲計算平臺設計高可用應用與基於傳統平臺的設計有很多不同。雲計算在給架構師帶來了很多新的設計挑戰的時候,也給帶來了很多新的設計理念和可用的服務。怎樣在設計應用的

構建並發&可用&安全的IT系統-並發部分

可能 同時 負載 優先 沒有 coo 什麽是 中間件 訪問限制 什麽是高並發? 狹義來講就是你的網站/軟件同一時間能承受的用戶數量有多少 相關指標有 並發數:對網站/軟件同時發起的請求數,一般也可代表實際的用戶 每秒響應時間:常指一次請求到系統正確響的時間(以秒為單

[Linux]-構建LVS-DR模式+Keepalived可用群集

響應 完成 init.d .cn ive spa val 通告 配置文件 Keepalived Keepalived是一款高可用軟件,它的功能主要包括兩方面:1)通過IP漂移,實現服務的高可用:服務器集群共享一個虛擬IP,同一時間只有一個服務器占有虛擬IP並對外提供服務,若

corosync和pacemaker使用pcs構建可用集群

corosync pacemaker crm pcspcs構建高可用集群(基於crm管理)一、實驗環境系統版本:centos7實驗機器: pcs1:192.168.163.174 pcs2:192.168.163.175軟件源:阿裏雲二、安裝過程配置集群的前提:1、時間同步(將時間同步寫入計劃任務

nginx可用構建LNAMMP架構

lnammp keepalived實現nginx高可用: Directory1: IP:172.16.72.5 Directory2: IP:172.16.72.4 RS1: IP:172.16.72.6 RS2: IP:172.16.72.7 Virtual IP:172.16.

drbd+mariadb+corosync+pacemaker構建可用,實現負載均衡

drbd mysql 高可用DRBD DRBD是由內核模塊和相關腳本而構成,用以構建高可用性的集群 drbd 工作原理:DRBD是一種塊設備,可以被用於高可用(HA)之中.它類似於一個網絡RAID-1功能。當你將數據寫入本地 文件系統時,數據還將會被發送到網絡中另一臺主機上。以相同的形式記錄在

SaltStack實例:構建可用架構

saltstack、構建、高可用 本章主要介紹通過saltstack構建系統高可用架構,以滿足業務需求。通過Haproxy實現負載均衡調度後端Nginx+PHP服務器,Keepalived實現系統高可用功能,Memcached存儲session會話,後端數據庫采用Mysql並且實現主從復制以及讀寫分

構建並發可用的電商平臺架構實踐(轉)

行數據 規模 互聯 物理內存 基於 無法 node 單獨 統計 轉載自:http://blog.csdn.net/yangbutao/article/details/12242441 一、 設計理念 1. 空間換時間 1) 多級緩存,靜態化 客戶

構建可用服務端

不同 地域 mbo host proxy 獲取數據 恢復 post 秒殺 一. 什麽是高可用性 服務端,顧名思義就是為用戶提供服務的。 停工時間,就是不能向用戶提供服務的時間。 高可用,就是系統具有高度可用性,盡量減少停工時間。 停工的原因一般有: 服務器故障。例如服務器

Nginx+Keeplived+Tomcat搭建可用/負載均衡的web服務器集群

tomcat keepalived nginx 一、集群規劃服務器角色主機名IP地址/VIP軟件Nginx MasterNK120.0.20.101/20.0.20.100Nginx/KeepalivedNginx BackupNK220.0.20.102/20.0.20.100Nginx/Kee

CentOS7.4—構建LVS+Keepalived可用群集

LVS+Keepalived高可用群集LVS+Keepalived高可用群集 目錄第一部分 環境準備第二部分 使用Keepalived搭建雙機熱備第三部分 配置Web節點服務器第四部分 測試LVS+Keepalived高可用群集 第一部分 環境準備一:調度器兩臺(雙機熱備)系統:Linux—Cent

用簡單的方法構建一個可用服務端

高可用 架構 redis 服務器 一. 什麽是高可用性 服務端,顧名思義就是為用戶提供服務的。停工時間,就是不能向用戶提供服務的時間。高可用,就是系統具有高度可用性,盡量減少停工時間。 停工的原因一般有: 服務器故障。例如服務器宕機,服務器網絡出現問題,機房或者機架出現問題等。訪問量急劇上升,

LVS+Keepalived構建可用群集

客戶 ML 相同 0.10 eal 平臺 defs vrrp $0 今天以DR模式的LVS群集為基礎,增加了一臺從負載調度器,使用keepalived來實現主、備調度服務器的熱備,從而構架具有負載均衡、高可用兩種能力的LVS網站群集平臺。 網站拓撲架構圖 系統環境