အစုအဝေသတစ်ခုအတလက် သင့်ကိုယ်ပိုင် autoscaler ပဌုလုပ်နည်သ

မင်္ဂလာပါ! ကျလန်ုပ်တို့သည် လူမျာသကို ဒေတာကဌီသကဌီသမာသမာသဖဌင့် လုပ်ဆောင်ရန် လေ့ကျင့်ပေသသည်။ ပါဝင်သူအာသလုံသအတူတကလလုပ်ဆောင်နိုင်သည့် ကိုယ်ပိုင်အစုအဝေသမပါဘဲ ဒေတာကဌီသကဌီသမာသမာသအတလက် ပညာရေသဆိုင်ရာ ပရိုဂရမ်တစ်ခုကို စိတ်ကူသကဌည့်ရန် မဖဌစ်နိုင်ပါ။ ကအကဌောင်သကဌောင့်၊ ကျလန်ုပ်တို့၏ပရိုဂရမ်သည် ၎င်သကိုအမဌဲတမ်သရဟိ၏ 🙂 ကျလန်ုပ်တို့သည် ၎င်သ၏ဖလဲ့စည်သပုံပဌင်ဆင်ခဌင်သ၊ ချိန်ညဟိခဌင်သနဟင့် စီမံခန့်ခလဲခဌင်သတို့တလင် ပါဝင်နေပဌီသ ၎င်သတို့သည် MapReduce အလုပ်မျာသကို ထိုနေရာတလင် တိုက်ရိုက်ဖလင့်ပဌီသ Spark ကို အသုံသပဌုပါသည်။

ကပို့စ်တလင် ကျလန်ုပ်တို့သည် cloud ကိုအသုံသပဌု၍ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် အော်တိုစကေသကိရိယာကိုရေသသာသခဌင်သဖဌင့် မညီမညာသောအစုအစည်သမျာသတင်ခဌင်သပဌဿနာကို ကျလန်ုပ်တို့ဖဌေရဟင်သပုံကို ပဌောပဌပါမည်။ Mail.ru တိမ်တိုက်ဖဌေရဟင်သချက်.

ပဌဿနာ

ကျလန်ုပ်တို့၏အစုအဝေသကို ပုံမဟန်မုဒ်တလင် အသုံသမပဌုပါ။ စလန့်ပစ်ခဌင်သသည် အလလန်မညီညာပါ။ ဥပမာအာသဖဌင့်၊ လူ 30 နဟင့် ဆရာတစ်ညသတို့သည် အစုအဝေသသို့သလာသပဌီသ ၎င်သကို စတင်အသုံသပဌုသောအခါ လက်တလေ့အတန်သမျာသရဟိသည်။ သို့မဟုတ် နောက်တဖန်၊ ဝန်အလလန်အကျလံတိုသလာသောအခါ နောက်ဆုံသသတ်မဟတ်ရက်မတိုင်မီ ရက်မျာသရဟိသည်။ ကျန်အချိန်မျာသတလင် cluster သည် underload mode တလင် လုပ်ဆောင်သည်။

ဖဌေရဟင်သချက် #1 သည် peak loads မျာသကိုခံနိုင်ရည်ရဟိမည့် cluster တစ်ခုကို ထိန်သသိမ်သထာသရန်ဖဌစ်သော်လည်သ ကျန်အချိန်မျာသတလင် idle ဖဌစ်နေပါမည်။

ဖဌေရဟင်သချက် #2 သည် အတန်သမျာသမတက်မီ နဟင့် peak loads မျာသအတလင်သ သင်ကိုယ်တိုင် ပေါင်သထည့်သည့် အစုအဝေသငယ်တစ်ခုကို ထာသရဟိရန်ဖဌစ်သည်။

ဖဌေရဟင်သချက် #3 သည် အစုအဝေသငယ်တစ်ခုကို သိမ်သဆည်သရန်နဟင့် အစုအဝေသ၏ လက်ရဟိဝန်ကို စောင့်ကဌည့်မည့် autoscaler နဟင့် API အမျိုသမျိုသကို အသုံသပဌု၍ အစုအဝေသမဟ node မျာသကို ပေါင်သထည့်ကာ ဖယ်ရဟာသရန်ဖဌစ်သည်။

ဒီ post မဟာ အဖဌေ နံပါတ် 3 အကဌောင်သကို ပဌောပဌပါမယ်။ ကအော်တိုစကေသကိရိယာသည် အတလင်သပိုင်သအရာမျာသထက် ပဌင်ပအချက်မျာသပေါ်တလင် မျာသစလာမူတည်နေပဌီသ ဝန်ဆောင်မဟုပေသသူမျာသသည် ၎င်သကို မကဌာခဏ မပေသဆောင်ကဌပါ။ ကျလန်ုပ်တို့သည် Mail.ru Cloud Solutions cloud အခဌေခံအဆောက်အအုံကိုအသုံသပဌုပဌီသ MCS API ကိုအသုံသပဌု၍ autoscaler တစ်ခုရေသသာသခဲ့သည်။ ဒေတာနဟင့် အလုပ်လုပ်ပုံကို ကျလန်ုပ်တို့ သင်ပေသသောကဌောင့်၊ သင့်ကိုယ်ပိုင်ရည်ရလယ်ချက်မျာသအတလက် အလာသတူ autoscaler ကို သင်မည်ကဲ့သို့ရေသသာသနိုင်ပဌီသ သင့် cloud တလင် ၎င်သကိုအသုံသပဌုပုံကို ပဌသရန် ဆုံသဖဌတ်ခဲ့သည်။

ရဟေသဉီသလိုအပျခကျဌ

ပထမညသစလာ၊ သင့်တလင် Hadoop အစုအဝေသတစ်ခုရဟိရမည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် HDP ဖဌန့်ဖဌူသမဟုကို အသုံသပဌုသည်။

သင့် node မျာသကို လျင်မဌန်စလာ ပေါင်သထည့်ရန်နဟင့် ဖယ်ရဟာသရန်အတလက်၊ node မျာသကဌာသတလင် အချို့သော အခန်သကဏ္ဍမျာသကို ခလဲဝေပေသရပါမည်။

  1. မာစတာ node ။ ကောင်သပဌီ၊ အထူသတလည်ရဟင်သပဌရန်မလိုအပ်ပါ- ဥပမာအာသဖဌင့်၊ သင်အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုမုဒ်ကိုအသုံသပဌုပါက Spark ဒရိုက်ဘာကိုဖလင့်ပေသသည့်အစုအဝေသ၏အဓိက node တစ်ခုဖဌစ်သည်။
  2. ရက်စလဲအမဟတ်။ ကသည်မဟာ HDFS တလင် ဒေတာသိမ်သဆည်သသည့်နေရာဖဌစ်ပဌီသ တလက်ချက်မဟုမျာသပဌုလုပ်သည့်နေရာဖဌစ်သည်။
  3. ကလန်ပျူတာအမဟတ်အသာသ။ ကသည်မဟာ HDFS တလင် မည်သည့်အရာကိုမျဟ သိမ်သဆည်သခဌင်သမပဌုဘဲ တလက်ချက်မဟုမျာသ ဖဌစ်ပေါ်လာသည့်နေရာဖဌစ်သည်။

အရေသကဌီသသောအချက်။ တတိယအမျိုသအစာသ၏ node မျာသကဌောင့် အော်တိုစကေသချဲ့ခဌင်သ ဖဌစ်ပေါ်လိမ့်မည်။ အကယ်၍ သင်သည် ဒုတိယအမျိုသအစာသ၏ ဆုံမဟတ်မျာသကို စတင်ထည့်သလင်သပါက၊ တုံ့ပဌန်မဟုအမဌန်နဟုန်သသည် အလလန်နိမ့်နေလိမ့်မည် - ဖျက်သိမ်သခဌင်သနဟင့် ပဌန်လည်ဖလဲ့စည်သခဌင်သသည် သင့်အစုအဝေသတလင် နာရီပေါင်သမျာသစလာ ကဌာမည်ဖဌစ်သည်။ ကသည်မဟာ autoscaling မဟ သင်မျဟော်လင့်ထာသသည့်အရာမဟုတ်ပါ။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် ပထမနဟင့် ဒုတိယအမျိုသအစာသမျာသ၏ ဆုံမဟတ်မျာသကို မထိပါ။ ၎င်သတို့သည် ပရိုဂရမ်၏ ကဌာမဌင့်ချိန်တစ်လျဟောက်တလင် ရဟိနေမည့် အနည်သဆုံသ အသုံသပဌုနိုင်မည့် အစုအဝေသကို ကိုယ်စာသပဌုမည်ဖဌစ်သည်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့၏ autoscaler ကို Python 3 တလင် ရေသသာသထာသပဌီသ၊ အစုလိုက်ဝန်ဆောင်မဟုမျာသကို စီမံခန့်ခလဲရန် Ambari API ကို အသုံသပဌုသည်၊ Mail.ru Cloud Solutions မဟ API စက်စတင်ခဌင်သနဟင့် ရပ်တန့်ခဌင်သအတလက် (MCS)။

ဖဌေရဟင်သချက်ဗိသုကာ

  1. အပိုင်သ autoscaler.py. ၎င်သတလင် အတန်သသုံသမျိုသပါဝင်သည်- 1) Ambari နဟင့် လုပ်ဆောင်ရန် လုပ်ဆောင်ချက်မျာသ၊ 2) MCS နဟင့် လုပ်ဆောင်ရန်အတလက် လုပ်ဆောင်ချက်မျာသ၊ 3) autoscaler ၏ ယုတ္တိဗေဒနဟင့် တိုက်ရိုက်သက်ဆိုင်သည့် လုပ်ဆောင်ချက်မျာသ။
  2. ဇာတ်ညလဟန်သ observer.py. အခဌေခံအာသဖဌင့် ၎င်သတလင် ကလဲပဌာသခဌာသနာသသော စည်သမျဉ်သမျာသ ပါဝင်သည်- autoscaler လုပ်ဆောင်ချက်မျာသကို ခေါ်ရန် မည်သည့်အချိန်နဟင့် မည်သည့်အချိန်မျာသတလင် ပါဝင်သည်။
  3. ဖလဲ့စည်သမဟုဖိုင် config.py. ဥပမာအာသဖဌင့်၊ ၎င်သတလင် အော်တိုစကေသချခဌင်သအတလက် ခလင့်ပဌုသော node မျာသစာရင်သနဟင့် ဥပမာ၊ node အသစ်တစ်ခုထည့်သလင်သသည့်အချိန်မဟစ၍ မည်မျဟကဌာကဌာစောင့်ဆိုင်သရမည်နည်သ။ အတန်သစတင်ချိန်အတလက် အချိန်တံဆိပ်မျာသလည်သ ပါရဟိပါတယ်၊ ထို့ကဌောင့် အတန်သမစမီ အမျာသဆုံသခလင့်ပဌုထာသသော အစုအဝေသဖလဲ့စည်သမဟုပုံစံကို စတင်လိုက်ပါ။

အခု ပထမဖိုင်နဟစ်ခုထဲက ကုဒ်အပိုင်သအစတလေကို ကဌည့်ရအောင်။

1. Autoscaler.py မော်ဂျူသ

Ambari အတန်သ

ကသည်မဟာ အတန်သတစ်ခုပါဝင်သော ကုဒ်အပိုင်သအစတစ်ခုဖဌစ်သည်။ Ambari:

class Ambari:
    def __init__(self, ambari_url, cluster_name, headers, auth):
        self.ambari_url = ambari_url
        self.cluster_name = cluster_name
        self.headers = headers
        self.auth = auth

    def stop_all_services(self, hostname):
        url = self.ambari_url + self.cluster_name + '/hosts/' + hostname + '/host_components/'
        url2 = self.ambari_url + self.cluster_name + '/hosts/' + hostname
        req0 = requests.get(url2, headers=self.headers, auth=self.auth)
        services = req0.json()['host_components']
        services_list = list(map(lambda x: x['HostRoles']['component_name'], services))
        data = {
            "RequestInfo": {
                "context":"Stop All Host Components",
                "operation_level": {
                    "level":"HOST",
                    "cluster_name": self.cluster_name,
                    "host_names": hostname
                },
                "query":"HostRoles/component_name.in({0})".format(",".join(services_list))
            },
            "Body": {
                "HostRoles": {
                    "state":"INSTALLED"
                }
            }
        }
        req = requests.put(url, data=json.dumps(data), headers=self.headers, auth=self.auth)
        if req.status_code in [200, 201, 202]:
            message = 'Request accepted'
        else:
            message = req.status_code
        return message

အထက်တလင်၊ ဥပမာတစ်ခုအနေဖဌင့်၊ သင်သည် function ၏အကောင်အထည်ဖော်မဟုကိုကဌည့်ရဟုနိုင်သည်။ stop_all_servicesလိုချင်သော cluster node ပေါ်ရဟိ ဝန်ဆောင်မဟုအာသလုံသကို ရပ်တန့်စေသော၊

အတန်သတံခါသဝမဟာ Ambari သင်ဖဌတ်သန်သ:

  • ambari_urlဥပမာ ကဌိုက်တယ်။ 'http://localhost:8080/api/v1/clusters/',
  • cluster_name - Ambari ရဟိ သင့်အစုအဝေသ၏အမည်၊
  • headers = {'X-Requested-By': 'ambari'}
  • အတလင်သပိုင်သ auth ကသည်မဟာ Ambari အတလက် သင့်အသုံသပဌုသူအမည်နဟင့် စကာသဝဟက်ဖဌစ်ပါသည်။ auth = ('login', 'password').

လုပ်ဆောင်ချက်ကိုယ်တိုင်က REST API မဟတစ်ဆင့် Ambari သို့ ဖုန်သခေါ်ဆိုမဟု နဟစ်ကဌိမ်ထက် မပိုပါ။ ယုတ္တိဗေဒအမဌင်အရ၊ ကျလန်ုပ်တို့သည် node တစ်ခုပေါ်တလင်လည်ပတ်နေသောဝန်ဆောင်မဟုမျာသစာရင်သကို ညသစလာလက်ခံရရဟိပဌီသနောက်၊ ပေသထာသသော အစုအဝေသတစ်ခုတလင်၊ ပေသထာသသော node တစ်ခုပေါ်တလင်၊ စာရင်သမဟ ဝန်ဆောင်မဟုမျာသကို အခဌေအနေသို့လလဟဲပဌောင်သရန် တောင်သဆိုပါသည်။ INSTALLED. node မျာသကို ပဌည်နယ်သို့ လလဟဲပဌောင်သခဌင်သအတလက် ဝန်ဆောင်မဟုအာသလုံသကို စတင်ခဌင်သအတလက် လုပ်ဆောင်ချက်မျာသ Maintenance စသည်တို့သည် ဆင်တူသည် - ၎င်သတို့သည် API မဟတဆင့် တောင်သဆိုမဟု အနည်သငယ်မျဟသာဖဌစ်သည်။

အတန်သ Mcs

ကသည်မဟာ အတန်သတစ်ခုပါဝင်သော ကုဒ်အပိုင်သအစတစ်ခုဖဌစ်သည်။ Mcs:

class Mcs:
    def __init__(self, id1, id2, password):
        self.id1 = id1
        self.id2 = id2
        self.password = password
        self.mcs_host = 'https://infra.mail.ru:8774/v2.1'

    def vm_turn_on(self, hostname):
        self.token = self.get_mcs_token()
        host = self.hostname_to_vmname(hostname)
        vm_id = self.get_vm_id(host)
        mcs_url1 = self.mcs_host + '/servers/' + self.vm_id + '/action'
        headers = {
            'X-Auth-Token': '{0}'.format(self.token),
            'Content-Type': 'application/json'
        }
        data = {'os-start' : 'null'}
        mcs = requests.post(mcs_url1, data=json.dumps(data), headers=headers)
        return mcs.status_code

အတန်သတံခါသဝမဟာ Mcs ကျလန်ုပ်တို့သည် cloud အတလင်သတလင် ပရောဂျက် ID နဟင့် အသုံသပဌုသူ id နဟင့် သူ၏ စကာသဝဟက်ကို ဖဌတ်သန်သပါသည်။ လုပ်ဆောင်မဟုတလင် vm_turn_on စက်မျာသထဲမဟ တစ်ခုကို ဖလင့်ချင်ပါသည်။ ကနေရာတလင် ယုတ္တိဗေဒသည် အနည်သငယ် ပိုရဟုပ်ထလေသပါသည်။ ကုဒ်၏အစတလင်၊ အခဌာသလုပ်ဆောင်ချက်သုံသခုကို ခေါ်သည်- 1) ကျလန်ုပ်တို့သည် တိုကင်တစ်ခုရရန် လိုအပ်သည်၊ 2) hostname ကို MCS ရဟိ စက်၏အမည်သို့ ပဌောင်သရန် လိုအပ်သည်၊ 3) ကစက်၏ id ကို ရယူပါ။ ထို့နောက်၊ ကျလန်ုပ်တို့သည် ပို့စ်တစ်ခုတောင်သဆိုပဌီသ ကစက်ကိုဖလင့်လိုက်ပါ။

တိုကင်ရယူခဌင်သအတလက် လုပ်ဆောင်မဟုမဟာ အောက်ပါအတိုင်သဖဌစ်သည်။

def get_mcs_token(self):
        url = 'https://infra.mail.ru:35357/v3/auth/tokens?nocatalog'
        headers = {'Content-Type': 'application/json'}
        data = {
            'auth': {
                'identity': {
                    'methods': ['password'],
                    'password': {
                        'user': {
                            'id': self.id1,
                            'password': self.password
                        }
                    }
                },
                'scope': {
                    'project': {
                        'id': self.id2
                    }
                }
            }
        }
        params = (('nocatalog', ''),)
        req = requests.post(url, data=json.dumps(data), headers=headers, params=params)
        self.token = req.headers['X-Subject-Token']
        return self.token

Autoscaler အတန်သ

ကအတန်သတလင် လည်ပတ်လော့ဂျစ်ကိုယ်တိုင်နဟင့် သက်ဆိုင်သည့် လုပ်ဆောင်ချက်မျာသ ပါရဟိသည်။

ကအတန်သအတလက် ကုဒ်အပိုင်သအစသည် ပုံသဏ္ဌာန်ဖဌစ်သည်-

class Autoscaler:
    def __init__(self, ambari, mcs, scaling_hosts, yarn_ram_per_node, yarn_cpu_per_node):
        self.scaling_hosts = scaling_hosts
        self.ambari = ambari
        self.mcs = mcs
        self.q_ram = deque()
        self.q_cpu = deque()
        self.num = 0
        self.yarn_ram_per_node = yarn_ram_per_node
        self.yarn_cpu_per_node = yarn_cpu_per_node

    def scale_down(self, hostname):
        flag1 = flag2 = flag3 = flag4 = flag5 = False
        if hostname in self.scaling_hosts:
            while True:
                time.sleep(5)
                status1 = self.ambari.decommission_nodemanager(hostname)
                if status1 == 'Request accepted' or status1 == 500:
                    flag1 = True
                    logging.info('Decomission request accepted: {0}'.format(flag1))
                    break
            while True:
                time.sleep(5)
                status3 = self.ambari.check_service(hostname, 'NODEMANAGER')
                if status3 == 'INSTALLED':
                    flag3 = True
                    logging.info('Nodemaneger decommissioned: {0}'.format(flag3))
                    break
            while True:
                time.sleep(5)
                status2 = self.ambari.maintenance_on(hostname)
                if status2 == 'Request accepted' or status2 == 500:
                    flag2 = True
                    logging.info('Maintenance request accepted: {0}'.format(flag2))
                    break
            while True:
                time.sleep(5)
                status4 = self.ambari.check_maintenance(hostname, 'NODEMANAGER')
                if status4 == 'ON' or status4 == 'IMPLIED_FROM_HOST':
                    flag4 = True
                    self.ambari.stop_all_services(hostname)
                    logging.info('Maintenance is on: {0}'.format(flag4))
                    logging.info('Stopping services')
                    break
            time.sleep(90)
            status5 = self.mcs.vm_turn_off(hostname)
            while True:
                time.sleep(5)
                status5 = self.mcs.get_vm_info(hostname)['server']['status']
                if status5 == 'SHUTOFF':
                    flag5 = True
                    logging.info('VM is turned off: {0}'.format(flag5))
                    break
            if flag1 and flag2 and flag3 and flag4 and flag5:
                message = 'Success'
                logging.info('Scale-down finished')
                logging.info('Cooldown period has started. Wait for several minutes')
        return message

ဝင်ခလင့်အတလက် အတန်သမျာသကို လက်ခံပါသည်။ Ambari О Mcsစကေသချဲ့ခဌင်သအတလက် ခလင့်ပဌုထာသသော node စာရင်သအပဌင် node configuration parameters- memory နဟင့် cpu သည် YARN ရဟိ node သို့ ခလဲဝေပေသထာသသည်။ စီတန်သမျာသဖဌစ်သည့် q_ram၊ q_cpu၊ အတလင်သပိုင်သဘောင် နဟစ်ခုလည်သ ရဟိပါသည်။ ၎င်သတို့ကိုအသုံသပဌုခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် လက်ရဟိအစုလိုက်ဝန်၏တန်ဖိုသမျာသကို သိမ်သဆည်သပါသည်။ ပဌီသခဲ့သော 2 မိနစ်အတလင်သ တသမတ်တည်သ တိုသလာသည်ကို တလေ့ပါက၊ ထို့နောက် အစုအဝေသသို့ +5 node ပေါင်သထည့်ရန် ဆုံသဖဌတ်သည်။ cluster underutilization အခဌေအနေအတလက် အလာသတူပင်ဖဌစ်သည်။

အထက်ဖော်ပဌပါ ကုဒ်သည် စက်ကို အစုအဝေသမဟ ဖယ်ရဟာသပဌီသ cloud တလင် ရပ်တန့်စေသည့် လုပ်ဆောင်ချက်တစ်ခု၏ ဥပမာတစ်ခုဖဌစ်သည်။ ပထမတော့ ဖျက်သိမ်သခလင့်ရဟိတယ်။ YARN Nodemanagerထို့နောက် mode ကိုဖလင့်သည်။ Maintenanceထို့နောက် ကျလန်ုပ်တို့သည် စက်ပေါ်ရဟိ ဝန်ဆောင်မဟုအာသလုံသကို ရပ်တန့်ပဌီသ cloud ရဟိ virtual machine ကို ပိတ်လိုက်ပါ။

2. Script observer.py

ထိုနေရာမဟ နမူနာကုဒ်

if scaler.assert_up(config.scale_up_thresholds) == True:
        hostname = cloud.get_vm_to_up(config.scaling_hosts)
        if hostname != None:
            status1 = scaler.scale_up(hostname)
            if status1 == 'Success':
                text = {"text": "{0} has been successfully scaled-up".format(hostname)}
                post = {"text": "{0}".format(text)}
                json_data = json.dumps(post)
                req = requests.post(webhook, data=json_data.encode('ascii'), headers={'Content-Type': 'application/json'})
                time.sleep(config.cooldown_period*60)

၎င်သတလင်၊ အစုအဝေသ၏စလမ်သရည်မဌဟင့်တင်ရန်အတလက် အခဌေအနေမျာသကို ဖန်တီသထာသခဌင်သရဟိ၊ မရဟိနဟင့် အရန်ထာသရဟိသည့်စက်မျာသ ရဟိမရဟိ၊ ၎င်သတို့အနက်မဟ လက်ခံဆောင်ရလက်ပေသသူအမည်ကို ရယူပါ၊ ၎င်သကို အစုအဝေသသို့ ပေါင်သထည့်ကာ ကျလန်ုပ်တို့၏အဖလဲ့၏ Slack တလင် ၎င်သနဟင့်ပတ်သက်သည့် မက်ဆေ့ချ်ကို ထုတ်ပဌန်ပါ။ ၎င်သနောက်မဟစတင်သည်။ cooldown_periodကျလန်ုပ်တို့သည် အစုအဝေသမဟ မည်သည့်အရာကိုမျဟ ထည့်ခဌင်သ သို့မဟုတ် ဖယ်ရဟာသခဌင်သမပဌုသည့်အခါ၊ ဝန်ကို စောင့်ကဌည့်ရုံသာဖဌစ်သည်။ ၎င်သသည် တည်ငဌိမ်ပဌီသ အကောင်သဆုံသဝန်တန်ဖိုသမျာသ၏ စင်္ကဌံအတလင်သတလင် ရဟိနေပါက၊ ကျလန်ုပ်တို့ ဆက်လက်စောင့်ကဌည့်နေပါသည်။ node တစ်ခုမလုံလောက်ပါက၊ နောက်တစ်ခုထပ်ထည့်ပါ။

ကျလန်ုပ်တို့ရဟေ့တလင် သင်ခန်သစာတစ်ခုရသောအခါတလင်၊ node တစ်ခုသည် လုံလောက်မည်မဟုတ်ကဌောင်သ ကျလန်ုပ်တို့သေချာသိထာသပဌီသဖဌစ်သောကဌောင့် ကျလန်ုပ်တို့သည် အခမဲ့ node အာသလုံသကို ချက်ချင်သစတင်ပဌီသ သင်ခန်သစာပဌီသဆုံသသည်အထိ ၎င်သတို့ကို တက်ကဌလစလာလုပ်ဆောင်ပါ။ လဟုပ်ရဟာသမဟုအချိန်တံဆိပ်မျာသစာရင်သကို အသုံသပဌု၍ ၎င်သသည် ဖဌစ်ပေါ်သည်။

ကောက်ချက်

Autoscaler သည် မညီမညာဖဌစ်နေသော အစုအဝေသကိုဖလင့်ခဌင်သကို တလေ့ကဌုံရသောအခါ ထိုကိစ္စမျာသအတလက် ကောင်သမလန်ပဌီသ အဆင်ပဌေသည့်ဖဌေရဟင်သချက်တစ်ခုဖဌစ်သည်။ သင်သည် အထလတ်အထိပ် ဝန်ထုပ်ဝန်ပိုသအတလက် အလိုရဟိသော အစုအဝေသ ဖလဲ့စည်သမဟုပုံစံကို တစ်ပဌိုင်နက် ရရဟိပဌီသ တစ်ချိန်တည်သတလင် ကအစုအဝေသကို ဒေါင်သလုဒ်ဆလဲနေစဉ်အတလင်သ မသိမ်သထာသဘဲ ငလေကုန်သက်သာစေသည်။ ကောင်သပဌီ၊ ဒါတလေအာသလုံသက မင်သရဲ့ပါဝင်မဟုမရဟိဘဲ အလိုအလျောက်ဖဌစ်သလာသတာ။ autoscaler ကိုယ်တိုင်သည် အချို့သော logic တစ်ခုအရ ရေသသာသထာသသော cluster manager API နဟင့် cloud provider API အတလက် တောင်သဆိုချက်အစုအဝေသတစ်ခုမျဟသာဖဌစ်သည်။ စောစောကရေသခဲ့တဲ့အတိုင်သ Node တလေကို အမျိုသအစာသ 3 မျိုသခလဲတာ သေချာမဟတ်ထာသဖို့ လိုပါတယ်။ သင်ပျော်ရလဟင်လိမ့်မည်။

source: www.habr.com

မဟတ်ချက် Add