Tạo placement group và thêm các Linode hiện có
Kết hợp các thao tác API để tạo placement group mới và gán Linode vào nhóm.
Trước khi bắt đầu
- Xem lại phần Placement groups & compliance để hiểu khái niệm.
- Xem Thông số kỹ thuật (Technical specifications) để biết phạm vi hỗ trợ.
- Tài khoản chạy workflow này cần quyền
add_linodes
và quyền read-write trên các Linode sẽ thêm vào nhóm.
Lấy thông tin cần thiết
-
1) Liệt kê vùng (List regions)
Lưu
id
làm regionId và lưulabel
của region nơi các Linode mục tiêu đang chạy.{ "data": [ { "capabilities": [ "Linodes", "NodeBalancers", "Block Storage", "Object Storage", "Placement Groups", "Block Storage Encryption", "Linode Interfaces" ], "country": "us", "id": "us-mia", <== Lưu "label": "Miami, FL, USA", <== Lưu "placement_group_limits": { "maximum_linodes_per_flexible_pg": 5, "maximum_linodes_per_pg": 5, "maximum_pgs_per_customer": 10 }, "status": "ok" } ] }
Hiện chỉ một số region hỗ trợ Placement Groups. -
2) Lấy chi tiết region (Get a region)
Sử dụng regionId đã lưu để truy vấn và lưu các giới hạn dành cho placement group:
"placement_group_limits": { "maximum_linodes_per_pg": 5, <== Lưu "maximum_linodes_per_flexible_pg": 5, <== Lưu "maximum_pgs_per_customer": 10 }
Hiện tối đa 5 Linode trong một placement group. -
3) Lọc danh sách Linode theo region
Gọi List Linodes với header lọc theo region:
X-Filter: 'region: <regionId>'
. Chọn tối đa theo giới hạn đã lưu và lưuid
cho từng Linode.{ "data": [ { "id": 123, <== Lưu "hypervisor": "kvm", "created": "2018-01-01T00:01:01", "capabilities": ["Block Storage Encryption"], ... } ] }
Tạo placement group
Gọi API Create placement group với các giá trị sau:
label
: tên dễ nhận biết cho nhóm.region
: id của region đã lưu (ví dụ:us-mia
).placement_group_type
: kiểu sắp xếp. Hiện chỉ hỗ trợanti_affinity:local
.placement_group_policy
: chế độ tuân thủ khi thêm Linode về sau:strict
hoặcflexible
.
Sau khi tạo, không thể đổi
placement_group_policy
.{
"placement_group_policy": "strict",
"placement_group_type": "anti_affinity:local",
"label": "PG_Miami_failover",
"region": "us-mia"
}
Từ phản hồi, lưu id
làm placementId:
{
"id": 528, <== Lưu
"is_compliant": true,
"label": "PG_Miami_failover",
"members": [
{ "is_compliant": true, "linode_id": 123 }
],
"placement_group_policy": "strict",
"placement_group_type": "anti-affinity:local",
"region": "us-mia"
}
Thêm Linode vào nhóm
Gọi API Assign a placement group với placementId, đưa mảng linodes
là danh sách id đã lưu:
{
"linodes": [123, 456, 789]
}
Chờ vài phút rồi gọi Get a placement group bằng placementId để kiểm tra trạng thái:
{
"id": 528,
"is_compliant": true,
"label": "PG_Miami_failover",
"members": [
{ "is_compliant": true, "linode_id": 123 }
],
"migrations": {
"inbound": [
{ "linode_id": 456 },
{ "linode_id": 789 }
],
"outbound": []
},
"placement_group_policy": "strict",
"placement_group_type": "anti-affinity:local",
"region": "us-mia"
}
- members: các Linode đã được thêm thành công (kèm trạng thái
is_compliant
). - migrations.inbound: các Linode đang di chuyển vào nhóm; khi xong sẽ xuất hiện trong
members
.
Hoàn tất! Bạn đã tạo và gán Linode vào placement group.