Instance Template
-
Scenario: Consider a ficticious application called as lt-ehealth, the architecture of the application is as shown below

-
Now to realize this architecture, we can
- create a vm called as lt-web and install/configure/deploy web application
- Similarly create vms and deploy the following applications
- lt-epharma
- lt-eradiology
- lt-econsul
- We can create gcloud sql for primary and secondary database
-
We need to address the following concerns
- When lt-eweb or any of the application modules are having more load, then how to address this situation?
- We need to enable auto scaling. Auto scaling is a feature of cloud where you increase/decrease number of systems (vms) running a particular application automatically based on certain conditions like cpu utilization, network etc.
- In the vm the application should be pre-installed, its not a good idea to install application on the fly
- We also need to address the following concern when i have more than one vm running my application how can i create a load balancer
-
Instance template is a resource that you can use to create vms or managed instance groups
-
Each instance template defines the machine type, boot disk image, labels and other instance properties so that we can create multiple vm’s from that
Scenario
- Lets create a image of the machine where lamp stack is installed and consider it to be lt-eweb
- Create a ubuntu18 vm

- Now install lamp stack excluding mysql and firewall by following steps Refer Here
- Install stress tool
sudo apt install stress -y
- Now lets try to create a image

- Now lets try to create an instance template with lt-eweb image and in the us-central in all zones

- We would be also create image templates for our application components
- lt-epharma
- lt-eradiology
- lt-econsul
- To automate this image creation we have tool called as Packer Refer Here
- We can use instance template to create a vm instance or instance groups

- But our idea is not to create one vm but to create vms that can be autoscaled
- So we have to create instance groups, There are two types of instance groups
- Managed Instance Groups:
- This allows our workloads to be scalable and highly available via automated services in the groups such as auto scaling or auto healing
- Google recommends using this type of group
- Unmanaged Instance Groups
- This type of instance groups allows for load balancing across vm’s which are not identical.
- These are self managed and auto scaling and auto healing is not supported
- Managed Instance Groups:
Managed Instance Groups (MIGs)
- We can use MIGs for scenarios
- Stateless serving workloads
- Statelful applications (legacy applications)
- A MIG creates each of its managed instance based on instance template and optional stateful configuration
