我们在测试环境用KeepAliveD已经实现了内网中的Mysql、Redis和MongoDb的高可用。等我们把测试环境中的方案部署到亚马逊云中,因为亚马逊云环境的一些特性,很多问题就显现出来了。
方案描述:
两台资源服务器上都部署了Mysql、Redis和MongoDb,两台服务器上的所有服务都会实时同步数据。每台个服务的KeepAliveD都会用IP欺骗的方法使用广播APR包虚拟出这些有一个对外的IP:
Mysql:172.*.*.201:3306
Redis:172.*.*.202:6379
MongoDb:172.*.*.203:27017
KeepAliveD会定期检查这两台服务器的三个服务器的健康情况,并通过VRRP协议互通监控情况。一旦任何一个服务出现故障,KeepAliveD会广播ARP包告诉大家,这台故障的服务器不再拥有这个虚拟IP,而是另一台健康的资源服务器才是这个虚拟IP的真正归属。这样所有发送给故障服务的请求就发送给另外一台资源服务器了。
第一.亚马逊云不支持KeepAliveD中的组播模式。主备之间的VRRP包互相发不通。
解决办法:切换KeepAliveD到单播模式,在配置中增加单播机器的IP即可:
unicast_peer {
172.*.*.124 #Resource-02
#172.*.*.207 #Management
}
配置细节见:http://fredlong.iteye.com/blog/2226300
还有一点需要特别注意,VRRP协议既不属于TCP也不属于UDP,在做防火墙策略的时候,在协议类型选项需要选“All traffice”的选项来防止由于防火墙原因造成通信问题。
第二.在AWS环境中,所有的ARP广播都被禁止了。这样KeepAliveD的IP欺骗机制基本上也就不可行了。在资源服务器上配置的Virtual IP,应用服务器没有办法访问。
我们尝试了很多办法都失败了,最终凭着机制和勇敢找到了解决方案。下面是简单的步骤和思路:
1.在两台服务器的网卡上把这三个虚拟IP都配上:
ifconfig eth0:1 172.*.*.201 netmask 255.255.240.0
ifconfig eth0:2 172.*.*.202 netmask 255.255.240.0
ifconfig eth0:3 172.*.*.203 netmask 255.255.240.0
这个配置是基础配置。也就是说,如果一个IP指向这台服务器,可是这台服务器上的网卡不认为自己拥有这个IP是不行的。
2.在两台服务器上安装亚马逊云自己的客户端工具(awscli)
easy_install pip
pip install awscli
3.在两台服务器上注册awscli,具体过程不详细描述了,就是到aws console/service/IAM中去创建一个账号,然后创建一个系统管理员的组,把这个账号加入到组中,这个过程中会得到Access Key ID和Secret Access Key。在服务器上运行awscli configure,填入刚才两个参数,还有region就完成注册了。region是指你服务器所在的区域,比如我们买的新加坡机房的服务器,region就填写ap-southeast-1。
4.在KeepAliveD认为自己获取到Master权限的时候,调用awscli命令让Virtual IP实际指向本服务器。这个逻辑是本文章的核心逻辑。亚马逊云虽然不允许广播ARP,但可以用命令行指定网卡(ENI)的Secondary-private-ip-address。这个命令的具体形式如下:
上面公式中,$ENI指的是网卡的实例Id,$VIP是虚拟IP。这条命令执行完之后,在亚马逊云的网络环境中,这个虚拟IP就指向运行了这条命令的机器了,IP切换完成。
下面是KeepAliveD的相关配置
通过测试,通过以上方案在亚马逊云(AWS)中实现内网资源服务器(数据库,缓存服务器等)高可用是可行的。
相关推荐
aws亚马逊的S3库C实现,亲测阿里云,七牛云,华为云可用
云计算在给架构师带来了许多新的设计...我们先会对AWS的服务进行高可用性的分类,并从高可用角度对典型服务进行介绍,然后依次讨论高可用设计的5大常见设计原则,并结合亚马逊云科技的相关服务依次进行架构设计分析。
通过知识点讲解、案例实战、理论概念讲解来学习基于AWS云平台实现云上数仓的构建和开发。 课程亮点 1,全程基于AWS云平台 2,对AWS相关技术进行深入学习 3,实操配合案例,更容易理解 4,包含BI开发的内容 适用...
│ 2.3.4-SaaS层-AWS Glue介绍.mp4 │ 2.3.5-SaaS层-AWS EMR介绍.mp4 │ 3.1-前期准备-AWS账户.mp4 │ 3.3-前期准备-AWS CLI 配置.mp4 │ 3.4-前期准备-准备安全组.mp4 │ 3.5-前期准备-准备S3存储桶.mp4 │...
亚马逊云架构-介绍 很详细的ppt 非常值得国内精英参考
庄富任:亚马逊AWS云平台上之案例分析与最佳实践
在AWS的EC2上部署高可用Keepalivedb 因aws不支持组播和vip功能,所以为了实现vip漂移功能。 采用在主节点新加一块网卡,配置固定ip充当vip。 然后通过Keepalived服务检测指定的服务进行操作aws CLI。 CLI命令进行网卡...
AWS-亚马逊云科技7个典型的机器学习案例-2021.3-11页
BRIEF Imagine that you meet with a small startup company in the early stages of their operations....PC within their small office. Like many small start-ups they are confident that they will be the next ...
AWS云端企业实战圣经亚马逊如何构造云端计算
提起亚马逊云(Amazon Web Services)相信各位朋友都不会陌生,就算没用过肯定也听说过,最近看到不少网友已经得到12个月的亚马逊云服务器,今天把申请流程和各位朋友们分享一下。 亚马逊 AWS 介绍 AWS 全称 Amazon ...
亚马逊云AWS典型服务与应用.pdf
亚马逊云服务AWS Certified Solutions Architect - Associate标准考试精准题库
1面实践题,完成:created a web site using the following Amazon Web Services: EC2, EBS, ELB, EIP and S3
AWS云端企业实战圣经 亚马逊如何构造云端计算
文档对AWS公有云架构进行了介绍,包含数据中心模块,region,可用域,以及全球数据中心的分布情况,供参考
亚马逊云发布网站 内网ip映射外网IP EC2 AWS,个人经验,有图片操作
Keepalived 是基于 VRRP 组播的应用,但是在 2013 年 8 月 5 日发布的版本 1.2.8 中添加了对 VRRP 单播的支持,所以 keepalived 可以被应用到 AWS 中,作为对 EC2, HAProxy, LVS 等的高可用解决方案