Create a fixed-size instance group
You can create a group with a fixed number of instances. The group size is set manually. For more information, see Manually scaled groups.
Warning
When creating a group, keep the limits in mind. Not to disrupt the component Instance Groups, do not update or delete manually created resources: target group Load Balancer, virtual machines and disks. To do this, update or delete the instance group.
By default, all operations in Instance Groups are performed on behalf of a service account. If you don't have a service account, create one.
To create a fixed-size instance group:
To create a fixed-size instance group:
-
In the management console, select a folder to create your instance group in.
-
In the list of services, select Compute Cloud.
-
On the Virtual machines page, go to the Instance groups tab.
-
Click Create group.
-
Under Basic parameters:
-
Enter a name and description of the instance group. Naming requirements:
- The name must be unique within the folder.
- The name may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter. The last character can't be a hyphen.
- The maximum length of the name is 63 characters.
Note
The VM name is used to generate the FQDN only once, when creating the VM. If the FQDN is important to you, choose an appropriate name for the VM at the creation stage.
-
Select a service account from the list or create a new one. To be able to create, update, and delete group instances, assign the
editor
role to the service account. All operations in Instance Groups are performed on behalf of the service account.
-
-
In the Allocation section, select the desired availability zones. Group instances may reside in different availability zones and regions. Learn more about Yandex.Cloud geography.
-
In the Instance template section, click Set to set the basic instance configuration:
- Select a public image.
- In the Disks section:
- Select the disk type.
- Specify the disk size.
To add more disks, click Add disk.
- Under Computing resources:
- Choose a platform.
- Specify the guaranteed share and the necessary number of vCPUs and amount of RAM.
-
If necessary, make your VM preemptible.
When creating a preemptible instance group, keep in mind that the virtual machines will terminate after 24 hours of continuous operation or earlier. It's possible that Instance Groups won't be able to restart them immediately due to insufficient resources. This may occur in the event of a drastic increase in Yandex.Cloud computing resource usage.
- Under Network settings:
- Select the cloud network and the subnet. If the necessary subnet is not in the list, create it.
- Specify if a public IP address is required.
- Select the cloud network from the list, or specify its ID. If you don't have a network, click Create a new network to create one:
- In the window that opens, enter a name for the new network and choose a subnet to connect the virtual machine to. Each network must have at least one subnet (if there's no subnet, create one). Then click Create.
- In the Public IP field, choose a method for assigning an IP address:
- Auto: Assign a random IP address from the Yandex.Cloud IP pool.
- List: Select a public IP address from the list of previously reserved static addresses. For more information, see Making a dynamic public IP address static.
- No address: Don't assign a public IP address.
- If necessary, select DDoS protection.
- Under Access, specify the data required to access the VM:
- Enter the username in the Login field.
- Under SSH key, paste the contents of the public key file. You have to create a key pair for SSH connections on your own.
- In the SSH key field, paste the contents of the public key file.
- Click Add.
-
Under Allow when creating and updating, specify:
-
The number of instances that can exceed the group size.
-
The number of instances the group size can be reduced by.
-
The number of instances that can be created simultaneously.
-
The number of instances that can be deleted simultaneously.
For more information, see Deployment policy.
-
-
In the Scalability section:
- Select the scaling type. Currently, you can only create fixed-size groups.
- Specify the group size.
-
Click Create.
The instance group appears in the list.
If you don't have the Yandex.Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
-
View a description of the create instance group command in the CLI:
yc compute instance-group create --help
-
Check whether there are networks in the folder:
yc vpc network list
If there aren't any, create one.
-
Select one of the public images (for example, CentOS 7).
To get a list of available images, run the following command:
yc compute image list --folder-id standard-images
Command execution result:
+----------------------+-------------------------------------+--------------------------+----------------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-------------------------------------+--------------------------+----------------------+--------+ ... | fdvk34al8k5nltb58shr | centos-7-1549279494 | centos-7 | dqni65lfhvv2den5gtv9 | READY | | fdv7ooobjfl3ts9gqp0q | windows-2016-gvlk-1548913814 | windows-2016-gvlk | dqnnc72gj2ist3ktjj1p | READY | | fdv4f5kv5cvf3ohu4flt | ubuntu-1604-lts-1549457823 | ubuntu-1604-lts | dqnnb6dc7640c5i968ro | READY | ... +----------------------+-------------------------------------+--------------------------+----------------------+--------+
-
Create a YAML file with any name (for example,
specification.yaml
). -
In the created file, indicate the following:
-
General information about the group:
name: first-fixed-group service_account_id: <ID> description: "This instance group was created from YAML config."
Keys:
Key Value name
A name for the instance group. The name must be unique within the folder. The name may contain lowercase Latin letters, numbers, and hyphens. The first character must be a letter. The last character can't be a hyphen. The maximum length of the name is 63 characters. service_account_id
ID of the service account. description
A description of the instance group. -
Instance template, for example:
instance_template: platform_id: standard-v1 resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fdvk34al8k5nltb58shr type_id: network-hdd size: 32g network_interface_specs: - network_id: c64mknqgnd8avp6edhbt primary_v4_address_spec: {} scheduling_policy: preemptible: false
The disk size is specified in bytes by default. You can specify a different unit of measurement using the applicable suffix.
Name Example of a YAML file entry: Kilobyte 1073741824k Megabyte 1048576m Gigabyte 1024g Terabyte 1t Keys (the table contains the keys that directly define the instance parameters):
Key Value platform_id
Platform ID. memory
Amount of memory (RAM). cores
Number of processor cores (vCPUs). mode
Disk access mode.- READ_ONLY
: read-only access.-READ_WRITE
: read/write access.image_id
ID of the public image. type_id
Disk type. size
Disk size. network_id
The default-net
ID.primary_v4_address_spec
IPv4 specification. You can allow public access to group instances by specifying the IP version for the public IP address. For more information, see Template description in a YAML file. scheduling_policy
Scheduling policy configuration. preemptible
A flag that enables the creation of preemptible instances. If the value is true
, a preemptible instance is created, iffalse
(default), a regular instance is created.
When creating a preemptible instance group, keep in mind that the instances will terminate after 24 hours of continuous operation or earlier. It's possible that Instance Groups won't be able to restart them immediately due to insufficient resources. This may occur in the event of a drastic increase of the computing resource utilization in Yandex.Cloud. -
deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a
Keys:
Key Value deploy_policy
Deployment policy for instances in a group. scale_policy
Scaling policy for instances in a group. allocation_policy
Allocation policy for instances across zones and regions. Full code for the
specification.yaml
file:name: first-fixed-group service_account_id: ajed6ilf11qg839dcl1e description: "This instance group was created from YAML config." instance_template: platform_id: standard-v1 resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fdvk34al8k5nltb58shr type_id: network-hdd size: 32g network_interface_specs: - network_id: c64mknqgnd8avp6edhbt primary_v4_address_spec: {} deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a
-
-
Create an instance group in the default folder:
yc compute instance-group create --file specification.yaml
This command creates a group of three similar instances with the following characteristics:
- Named
first-fixed-group
. - Running CentOS 7.
- In the
default-net
network. - In the
ru-central1-a
availability zone. - With 2 vCPUs and 2 GB of RAM.
- With a 32 GB network HDD.
- Named
Use the create.
If you don't have Terraform, install it and configure the Yandex.Cloud provider.
-
In the configuration file, describe the parameters of resources that you want to create:
Note
If you already have suitable resources, such as a service account, cloud network, and subnet, you don't need to describe them again. Use their names and IDs in the appropriate parameters.
-
yandex_iam_service_account
: Description of a service account. All operations in Instance Groups are performed on behalf of the service account. -
yandex_resourcemanager_folder_iam_binding
: Description of access rights to the folder that the service account belongs to. To be able to create, update, and delete group instances, assign to the service account the roleeditor
. -
yandex_compute_instance_group
: Description of an instance group:-
General information about the group:
Field Description name
Name of the instance group. folder_id
Folder ID. service_account_id
ID of the service account. -
Field Description platform_id
Platform. resources
The number of vCPU cores and RAM available to the instance. The values must match the selected platform. boot_disk
Boot disk settings. Specify: - ID of the selected image. You can get the image ID from the list of public images.- Disk access mode: READ_ONLY
(read) orREAD_WRITE
(read and write).network_interface
Network configuration. Specify the network ID and subnet ID. metadata
In the metadata, pass the public key for accessing the instance via SSH. For more information, see VM instance metadata. -
Field Description deploy_policy
Deployment policy for instances in a group. scale_policy
Scaling policy for instances in a group. allocation_policy
Allocation policy for instances across zones and regions.
-
-
yandex_vpc_network
: Description of the cloud network. -
yandex_vpc_subnet
: Description of the subnet that the instance group will be connected to.
Example configuration file structure:
resource "yandex_iam_service_account" "ig-sa" { name = "ig-sa" description = "service account to manage IG" } resource "yandex_resourcemanager_folder_iam_binding" "editor" { folder_id = "<folder ID>" role = "editor" members = [ "serviceAccount:${yandex_iam_service_account.ig-sa.id}", ] } resource "yandex_compute_instance_group" "ig-1" { name = "fixed-ig" folder_id = "<folder ID>" service_account_id = "${yandex_iam_service_account.ig-sa.id}" instance_template { platform_id = "standard-v1" resources { memory = <RAM in GB> cores = <number of vCPU cores> } boot_disk { mode = "READ_WRITE" initialize_params { image_id = "<image ID>" } } network_interface { network_id = "${yandex_vpc_network.network-1.id}" subnet_ids = ["${yandex_vpc_subnet.subnet-1.id}"] } metadata = { ssh-keys = "<user name>:<SSH key contents>" } } scale_policy { fixed_scale { size = <number of instances in a group> } } allocation_policy { zones = ["ru-central1-a"] } deploy_policy { max_unavailable = 1 max_expansion = 0 } } resource "yandex_vpc_network" "network-1" { name = "network1" } resource "yandex_vpc_subnet" "subnet-1" { name = "subnet1" zone = "ru-central1-a" network_id = "${yandex_vpc_network.network-1.id}" v4_cidr_blocks = ["192.168.10.0/24"] }
For more information about the resources you can create using Terraform, see the provider documentation.
-
-
Make sure that the configuration files are correct.
-
In the command line, go to the directory where you created the configuration file.
-
Run the check using the command:
terraform plan
If the configuration is described correctly, the terminal displays a list of created resources and their parameters. If there are errors in the configuration, Terraform points them out.
-
-
Deploy the cloud resources.
-
If the configuration doesn't contain any errors, run the command:
terraform apply
-
Confirm that you want to create the resources.
Afterwards, all the necessary resources are created in the specified folder. You can check resource availability and their settings in management console.
-