python 一堆业务需要消耗资源(vm), 一批硬件服务器,应该如何安排资源建设?

现在的甲方是越来越有意思了, 我们第三方要给他们部署业务,对方提供了资源,可是虚拟机要让我们去新建,擦来。

详细点说,我们在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值