"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8162],{15680:(e,n,t)=>{t.d(n,{xA:()=>p,yg:()=>d});var a=t(96540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)t=o[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)t=o[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},p=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},g=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(t),g=r,d=u["".concat(s,".").concat(g)]||u[g]||m[g]||o;return t?a.createElement(d,i(i({ref:n},p),{},{components:t})):a.createElement(d,i({ref:n},p))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=g;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var c=2;c<o;c++)i[c]=t[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,t)}g.displayName="MDXCreateElement"},58101:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>s,default:()=>d,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var a=t(58168),r=t(98587),o=(t(96540),t(15680)),i=["components"],l={id:"gce-extensions",title:"GCE Extensions"},s=void 0,c={unversionedId:"development/extensions-contrib/gce-extensions",id:"development/extensions-contrib/gce-extensions",title:"GCE Extensions",description:"\x3c!--",source:"@site/docs/29.0.0/development/extensions-contrib/gce-extensions.md",sourceDirName:"development/extensions-contrib",slug:"/development/extensions-contrib/gce-extensions",permalink:"/docs/29.0.0/development/extensions-contrib/gce-extensions",draft:!1,tags:[],version:"current",frontMatter:{id:"gce-extensions",title:"GCE Extensions"}},p={},u=[{value:"Overlord Dynamic Configuration",id:"overlord-dynamic-configuration",level:2},{value:"Known limitations",id:"known-limitations",level:2}],m={toc:u},g="wrapper";function d(e){var n=e.components,t=(0,r.A)(e,i);return(0,o.yg)(g,(0,a.A)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"To use this Apache Druid extension, ",(0,o.yg)("a",{parentName:"p",href:"/docs/29.0.0/configuration/extensions#loading-extensions"},"include")," ",(0,o.yg)("inlineCode",{parentName:"p"},"gce-extensions")," in the extensions load list."),(0,o.yg)("p",null,"At the moment, this extension enables only Druid to autoscale instances in GCE."),(0,o.yg)("p",null,"The extension manages the instances to be scaled up and down through the use of the ",(0,o.yg)("a",{parentName:"p",href:"https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#resize_managed_group"},"Managed Instance Groups"),"\nof GCE (MIG from now on). This choice has been made to ease the configuration of the machines and simplify their\nmanagement."),(0,o.yg)("p",null,"For this reason, in order to use this extension, the user must have created"),(0,o.yg)("ol",null,(0,o.yg)("li",{parentName:"ol"},"An instance template with the right machine type and image to bu used to run the MiddleManager"),(0,o.yg)("li",{parentName:"ol"},"A MIG that has been configured to use the instance template created in the point above")),(0,o.yg)("p",null,"Moreover, in order to be able to rescale the machines in the MIG, the Overlord must run with a service account\nguaranteeing the following two scopes from the ",(0,o.yg)("a",{parentName:"p",href:"https://developers.google.com/identity/protocols/googlescopes#computev1"},"Compute Engine API")),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("inlineCode",{parentName:"li"},"https://www.googleapis.com/auth/cloud-platform")),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("inlineCode",{parentName:"li"},"https://www.googleapis.com/auth/compute"))),(0,o.yg)("h2",{id:"overlord-dynamic-configuration"},"Overlord Dynamic Configuration"),(0,o.yg)("p",null,"The Overlord can dynamically change worker behavior."),(0,o.yg)("p",null,"The JSON object can be submitted to the Overlord via a POST request at:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre"},"http://<OVERLORD_IP>:<port>/druid/indexer/v1/worker\n")),(0,o.yg)("p",null,"Optional Header Parameters for auditing the config change can also be specified."),(0,o.yg)("table",null,(0,o.yg)("thead",{parentName:"table"},(0,o.yg)("tr",{parentName:"thead"},(0,o.yg)("th",{parentName:"tr",align:null},"Header Param Name"),(0,o.yg)("th",{parentName:"tr",align:null},"Description"),(0,o.yg)("th",{parentName:"tr",align:null},"Default"))),(0,o.yg)("tbody",{parentName:"table"},(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:null},(0,o.yg)("inlineCode",{parentName:"td"},"X-Druid-Author")),(0,o.yg)("td",{parentName:"tr",align:null},"author making the config change"),(0,o.yg)("td",{parentName:"tr",align:null},'""')),(0,o.yg)("tr",{parentName:"tbody"},(0,o.yg)("td",{parentName:"tr",align:null},(0,o.yg)("inlineCode",{parentName:"td"},"X-Druid-Comment")),(0,o.yg)("td",{parentName:"tr",align:null},"comment describing the change being done"),(0,o.yg)("td",{parentName:"tr",align:null},'""')))),(0,o.yg)("p",null,"A sample worker config spec is shown below:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-json"},'{\n  "autoScaler": {\n    "envConfig" : {\n      "numInstances" : 1,\n      "projectId" : "super-project",\n      "zoneName" : "us-central-1",\n      "managedInstanceGroupName" : "druid-middlemanagers"\n    },\n    "maxNumWorkers" : 4,\n    "minNumWorkers" : 2,\n    "type" : "gce"\n  }\n}\n')),(0,o.yg)("p",null,"The configuration of the autoscaler is quite simple and it is made of two levels only."),(0,o.yg)("p",null,"The external level specifies the ",(0,o.yg)("inlineCode",{parentName:"p"},"type"),"\u2014always ",(0,o.yg)("inlineCode",{parentName:"p"},"gce")," in this case\u2014 and two numeric values,\nthe ",(0,o.yg)("inlineCode",{parentName:"p"},"maxNumWorkers")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"minNumWorkers")," used to define the boundaries in between which the\nnumber of instances must be at any time."),(0,o.yg)("p",null,"The internal level is the ",(0,o.yg)("inlineCode",{parentName:"p"},"envConfig")," and it is used to specify"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"The ",(0,o.yg)("inlineCode",{parentName:"li"},"numInstances")," used to specify how many workers will be spawned at each\nrequest to provision more workers.  This is safe to be left to ",(0,o.yg)("inlineCode",{parentName:"li"},"1")),(0,o.yg)("li",{parentName:"ul"},"The ",(0,o.yg)("inlineCode",{parentName:"li"},"projectId")," used to specify the name of the project in which the MIG resides"),(0,o.yg)("li",{parentName:"ul"},"The ",(0,o.yg)("inlineCode",{parentName:"li"},"zoneName")," used to identify in which zone of the worlds the MIG is"),(0,o.yg)("li",{parentName:"ul"},"The ",(0,o.yg)("inlineCode",{parentName:"li"},"managedInstanceGroupName")," used to specify the MIG containing the instances created or\nremoved")),(0,o.yg)("p",null,"Please refer to the Overlord Dynamic Configuration section in the main ",(0,o.yg)("a",{parentName:"p",href:"/docs/29.0.0/configuration/"},"documentation"),"\nfor parameters other than the ones specified here, such as ",(0,o.yg)("inlineCode",{parentName:"p"},"selectStrategy")," etc."),(0,o.yg)("h2",{id:"known-limitations"},"Known limitations"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"The module internally uses the ",(0,o.yg)("a",{parentName:"li",href:"https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/listManagedInstances"},"ListManagedInstances"),"\ncall from the API and, while the documentation of the API states that the call can be paged through using the\n",(0,o.yg)("inlineCode",{parentName:"li"},"pageToken")," argument, the responses to such call do not provide any ",(0,o.yg)("inlineCode",{parentName:"li"},"nextPageToken")," to set such parameter. This means\nthat the extension can operate safely with a maximum of 500 MiddleManagers instances at any time (the maximum number\nof instances to be returned for each call).")))}d.isMDXComponent=!0}}]);