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服务。
机器 | 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。
[root@master1 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
8、(MASTE实例)编写notify_master脚本文件,vim /etc/keepalived/master.sh
9、(MASTER实例)修改master.sh的执行权限。
10、(MASTER实例)修改配置文件/etc/keepalived/keepalived.conf,编辑内容如下:
11、(BACKUP实例)编写notify_master脚本文件。脚本内容如下:
[root@master2 centos]vim /etc/keepalived/master.sh
12、(BACKUP实例)编写notify_backup脚本文件
[root@master2 centos] vim /etc/keepalived/backup.sh
13、(BACKUP实例) 添加脚本执行权限。
sudo chmod a+x /etc/keepalived/master.sh
sudo chmod a+x /etc/keepalived/backup.sh
14、(MASTER实例、BACKUP实例) 执行下面命令,启动服务。先启动MASTE服务,再启动BACKUP服务。
15、在MASTER或者BACKUP机器上,或者所有机器安装tcpdump工具查看虚拟路由(VRRP)状态。
17、这里最好修改一下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架构搭建成功。