aws ec2实例eip实现自动切换

今天这篇文章主要将eip的设置,在开始前先讲下基本的概念,aws 对Ip管理分为 public_ip和eip两种,后者也叫弹性ip, 一般创建完一个实例后,会带一个public_ip地址,默认没有分配eip,那到底这两个ip有什么区别呢,这个概念如果不清楚,后续上了业务你是要吃大亏的,既然这么重要,那咱们就不能绕过它们了,接下来咱们就细说下它们之间的区别:它们之间最大的区别就是eip分配到某实例后,实例不管如何操作,重启,关机等,eip都不会变化,如果是public_ip,如果实例在关机重启后,ip就会不见了,会新分配一个ip给实例,这个地方就是比较坑爹的地方,如果你不懂它们的区别,上了业务,不小心关机重启后,业务就出问题了,ip没了,然后……%¥#@!&*&,作为运维人你懂的。

上面已经把这两个ip的区别讲了下,那下来,如果你业务需要固定Ip,那就必须要分配一个eip给这个实例,如何实现呢?其实只需简单2步即可,分配eip的思路基本是这样的:

1、获取一个eip

2、eip关联到某个实例

这就引出我们第一段代码:

以上代码就是实现从aws ip库里分配一个eip出来,既然分配出来了,那第二段代码就是做与实例关联:

这段代码实现了与实例的关联,其中x.x.x.x是你需要关联实例的Ip地址(你刚获取的Ip)

经过以上各位看官都理解了吧,但还没完,你可能会想,能关联就能取消关联吧?没错,你猜的是对的,如果有一天业务不需要eip了,就可以取消关联:

这段代码就取消了eip关联,同样x.x.x.x是你的实例Ip地址(已经分配到实例上),dry_run参数的如果设置成True,代表不会正式运行,False就会正式运行并取消关联。

最后,既然实例都不用了,这些Ip怎么办呢,一般人可能都不去管了,就留在那里了,但看完我这篇文章后请不要不管了,你不理它,它会理你(在月初出账单的时候),因为aws对空闲的Ip(未绑定到实例的eip)是按小时收费的,所以不用的Ip要尽快释放掉,归还给aws,同时也避免不必要的账单费用的产生,现在我们就送不用的eip回家吧,呵呵,看代码:

在做释放的时候,做了一个判断,如果给出的public_ip有关联id,表示在用,就提示不能释放,eip还在使用,如果没有就将取消,在这里我说下,释放的时候需要

allocation_id,这个是eip的属性,可以从 dir(eip对象)中看到属性列表,然后调用就可以了。

这篇文章基本就把eip基本的管理讲完了,这些基本工作比较常用,而且如果重要业务可以自己写脚本实现eip的自动切换,就感觉像做了ha,实际使用场景是这样的,有2台实例有相同的功能,正常情况下对外用户只访问其中一台,我们写一个脚本检查这台服务器的状态,如果发现这个机器宕机,可以通过取消这台机器的eip关联,然后关联到另一台实例上,这样业务会尽快切换到新实例上, 对用户影响时间最短, 具体实现的代码我以上的都基本都给出来了,各位看官自己改改就可以了,睡觉了,明天还有培训,晚上会再写一篇关于ebs的操作,请各位看官关注。