现在的甲方是越来越有意思了, 我们第三方要给他们部署业务,对方提供了资源,可是虚拟机要让我们去新建,擦来。
详细点说,我们在AWS里面有集群,配置大致如下:
service1,t2.micro,30,us-west-2,ami-0dde2e6d,zzlyzq,1,22_10060_10055,public
service2,t2.micro,30,us-west-2,ami-1712d877,zzlyzq,1,3389,public
service3,t2.medium,30,us-west-2,ami-0dde2e6d,zzlyzq,2,22_10060_10055,public
service4,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,2,22__11086__10086,public
service5,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,2,10088__22__7779__6779__6879__3141,public
service6,t2.medium,150,us-west-2,ami-0dde2e6d,zzlyzq,2,17778__27778__6878__22__6778__27878__17878,public
service7,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,2,22__10060__10055,public
service8,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,2,22__873__23000__8090__22122,public
service9,t2.medium,150,us-west-2,ami-0dde2e6d,zzlyzq,2,22__6666__6766__20086__6770__10015,private
service10,c4.xlarge,150,us-west-2,ami-0dde2e6d,zzlyzq,4,22,private
service11,t2.xlarge,200,us-west-2,ami-0dde2e6d,zzlyzq,4,22,private
service12,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,2,22__6379__26379,private
service13,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,3,22__27017__20000__21000__22001__22002__22003,private
service14,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,3,22__5672__15672__25672,private
service15,t2.medium,50,us-west-2,ami-0dde2e6d,zzlyzq,3,22__2181__1812,private
对方给了一批机器,如何去测算最终的机器部署在哪里呢?
不想动脑子了,撸了了脚本,如下:
#coding:utf-8
import json
# 一些信息,我们的instance类型,以及对方给我们的机器的类型,看看我们机器应该如何规划
instance_types = {
't2.micro' : {
'cpu': 1,
'mem': 1
},
't2.medium': {
'cpu':2,
'mem':4
},
'c4.xlarge':{
'cpu': 4,
'mem': 7.5
},
't2.xlarge':{
'cpu': 4,
'mem': 16
}
}
mental_server_type = {
'cpu': 12,
'mem': 55
}
# target,初始化一百台服务器
machines = []
for i in range(50):
a = {}
a['cpuused'] = 0
a['memused'] = 0
a['yw'] = []
machines.append(a)
def main():
with open("./info.txt") as f:
for line in f:
#print line
info = line.replace("\r", "").replace("\n", "").split(",")
yw_name = info[0]
yw_instance_type = info[1]
yw_instance_count = int(info[6])
print yw_name, yw_instance_count, yw_instance_type, instance_types[yw_instance_type]['cpu'], instance_types[yw_instance_type]['mem']
instance_used_cpu = instance_types[yw_instance_type]['cpu']
instance_used_mem = instance_types[yw_instance_type]['mem']
for number in range(0,yw_instance_count):
for machine in machines:
if machine['cpuused'] + instance_used_cpu < mental_server_type['cpu'] and machine['memused'] + instance_used_mem < mental_server_type['mem'] and yw_name not in machine['yw']:
machine['yw'].append(yw_name)
machine['cpuused'] += instance_used_cpu
machine['memused'] += instance_used_mem
break
main()
# 直接打印
for machine in machines:
if machine['memused'] !=0:
print machine
# 详细打印
cpu_used_total = 0
mem_used_total = 0
instance_total = 0
for machine in machines:
if machine['memused'] !=0:
cpu_used_total += machine['cpuused']
mem_used_total += machine['memused']
instance_total += 1
print """一共消耗cpu: %s, mem: %s, instnaces: %s"""%(cpu_used_total,mem_used_total,instance_total)
运行结果如下:
END