0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Mở Rộng Subnet trên Azure mà Không Gây Gián Đoạn

Đăng vào 3 tuần trước

• 5 phút đọc

Chủ đề:

#network#azure

Mở Rộng Subnet Trên Azure Mà Không Gây Gián Đoạn

Chào mừng bạn đến với bài viết về việc mở rộng subnet trong Azure mà không cần phải thực hiện các bước redeploy, một tính năng mới giúp cải thiện hiệu suất và giảm thiểu gián đoạn trong quá trình làm việc của bạn.

Giới Thiệu

Trong Azure, một subnet có một tiền tố địa chỉ duy nhất, là một phần của không gian địa chỉ Virtual Network (VNet) của bạn. Điều này hoạt động tốt cho đến khi khối lượng công việc của bạn vượt quá số lượng IP có sẵn. Truyền thống, việc khắc phục vấn đề này đồng nghĩa với việc tạo một subnet mới và di chuyển tài nguyên, thường dẫn đến thời gian gián đoạn. Tuy nhiên, Azure đã giới thiệu tính năng subnet với nhiều tiền tố cho phép bạn mở rộng dung lượng mà không cần redeploy.

Subnet Là Gì?

Subnet có thể được hiểu là một nhóm logic các giao diện mạng ảo (vNIC) chia sẻ các chính sách mạng giống nhau, chẳng hạn như Nhóm Bảo mật Mạng (NSG), NAT Gateways, và bảng định tuyến. Trong cùng một VNet, các vNIC có thể giao tiếp trực tiếp với nhau, bất kể chúng ở trong subnet nào. Việc thêm một tiền tố mới vào VNet và tạo một subnet mới sẽ đủ để khắc phục tình trạng thiếu địa chỉ IP trong subnet đầu tiên.

Tình Huống Thực Tế

Hãy xem xét một ứng dụng cần một Azure SQL Database, một bộ cân bằng tải, và từ 10 đến 15 máy ảo (VM) cho ứng dụng. Để dễ dàng triển khai, bạn sử dụng VMSS với chế độ điều phối linh hoạt. Bạn tạo một VNET cho ứng dụng với tiền tố 192.168.0.0/24. Trong VNET này, hai subnet được tạo ra, một cho điểm cuối riêng tư của Database, 192.168.0.0/29, và một cho VMSS và bộ cân bằng tải (192.168.0.128/27). Tiền tố cuối cùng có đủ địa chỉ IP để hỗ trợ hoạt động mở rộng (27 IP miễn phí).

Mọi thứ hoạt động hoàn hảo cho đến khi nhóm marketing thông báo rằng ứng dụng sẽ được trình bày trên mạng xã hội và TV, vì vậy bạn cần tăng dung lượng ít nhất gấp sáu lần, có nghĩa là ít nhất 90 phiên bản VMSS hoặc một tiền tố /25.

Giải Pháp

Có hai giải pháp:

  1. Tạo một subnet mới và di chuyển VMSS. Đây là giải pháp mặc định cho đến nay, nhưng cần có thời gian gián đoạn.
  2. Thêm một tiền tố vào subnet hiện có. Đây là tính năng mới.

Một tiền tố /25 là cần thiết, nhưng để tránh bất kỳ sự gián đoạn nào trong quá trình mở rộng, một /24 sẽ tốt hơn. Một tiền tố mới sẽ được thêm vào VNET và sau đó vào subnet.

Cách Thực Hiện

Tính năng nhiều tiền tố hiện được hỗ trợ thông qua PowerShell, Azure CLI, ARM templates, và Bicep. Cổng Azure không được hỗ trợ. Dưới đây là một ví dụ PowerShell để mở rộng subnet mà không gây gián đoạn:

Bước 1: Cập Nhật Mô-đun Azure PowerShell

powershell Copy
Update-Module -Name Az -Force

Bước 2: Thêm Tiền Tố Mới vào VNET Hiện Tại

powershell Copy
$vnet = Get-AzVirtualNetwork -Name <VnetName> -ResourceGroupName <ResourceGroupName>
$vnet.AddressSpace.AddressPrefixes.Add("192.168.1.0/24")
Set-AzVirtualNetwork -VirtualNetwork $vnet

Bước 3: Thêm Tiền Tố Mới vào Subnet

powershell Copy
$vnet = Get-AzVirtualNetwork -Name <VnetName> -ResourceGroupName <ResourceGroupName>
Set-AzVirtualNetworkSubnetConfig -Name 'APP' -VirtualNetwork $vnet -AddressPrefix '192.168.0.128/27', '192.168.1.0/24'
$vnet | Set-AzVirtualNetwork

Xem Kết Quả

Subnet đã được cập nhật. Nếu bạn nhìn vào Cổng Azure, bạn sẽ thấy Azure giữ ba địa chỉ IP đầu tiên của mỗi tiền tố cho mục đích sử dụng nội bộ. Tuy nhiên, bạn sẽ không có tùy chọn quản lý điều này từ cổng.

Quản Lý Nhiều Tiền Tố Trong Subnet

Bạn cũng có thể quản lý nhiều tiền tố trong một subnet bằng cách sử dụng Bicep và ARM templates. Bạn sẽ cần sử dụng ít nhất phiên bản API 2018-08-01 để sử dụng thuộc tính gọi là addressPrefixes. Thuộc tính này sử dụng một mảng chuỗi làm giá trị.

Trong ARM/Bicep, thuộc tính addressPrefixes chấp nhận một mảng các CIDR blocks. Điều này cho phép bạn có nhiều tiền tố. Bạn vẫn có thể sử dụng addressPrefix cho các giá trị đơn lẻ, nhưng không được phép trộn lẫn cả hai trong cùng một định nghĩa tài nguyên.

Ví Dụ Bicep

bicep Copy
param location string = resourceGroup().location

@description('Tên VNet')
param vnetName string = 'vnet2'

@description('Không gian địa chỉ VNet')
param vnetAddressPrefix string = '10.0.0.0/8'

@description('Tiền tố Subnet đầu tiên')
param subnetPrefix1 string = '10.0.0.0/24'

@description('Tiền tố Subnet thứ hai')
param subnetPrefix2 string = '10.0.1.0/24'

@description('Tên Subnet1')
param subnet1Name string = 'sub1'

resource vnet 'Microsoft.Network/virtualNetworks@2024-07-01' = {
  name: vnetName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        vnetAddressPrefix
      ]
    }
  }
}

resource subnet1 'Microsoft.Network/virtualNetworks/subnets@2024-07-01' = {
  parent: vnet
  name: subnet1Name
  properties: {
    addressPrefixes: [
        subnetPrefix1,
        subnetPrefix2
    ]
  }
}

Hạn Chế Đối Với Subnet Nhiều Tiền Tố

  • Không có phân quyền subnet (trừ các cổng VPN/ExpressRoute)
  • Không có VNet injection cho các dịch vụ container
  • Chủ yếu hỗ trợ khối lượng công việc IaaS (VM, VMSS)

Thực Hành Tốt Nhất

Kế hoạch cho sự phát triển bằng cách sử dụng addressPrefixes từ đầu trong Bicep/ARM Template. Ngay cả khi bạn chỉ cần một tiền tố hôm nay, việc định nghĩa nó dưới dạng một mảng sẽ bảo vệ cấu hình mạng của bạn trong tương lai.

Kết Luận

Việc mở rộng subnet mà không gây gián đoạn trong Azure là một công cụ quan trọng cho các nhà phát triển và quản trị viên hệ thống. Với tính năng mới này, bạn có thể dễ dàng mở rộng dung lượng mạng mà không gặp phải các vấn đề về thời gian gián đoạn. Hãy áp dụng những kiến thức này để tối ưu hóa hạ tầng của bạn và đảm bảo sự liên tục trong công việc.

Câu Hỏi Thường Gặp (FAQ)

1. Tính năng nhiều tiền tố có thể sử dụng trên cổng Azure không?
Không, tính năng này hiện chỉ được hỗ trợ qua PowerShell, Azure CLI, ARM templates, và Bicep.

2. Có hạn chế nào khi sử dụng nhiều tiền tố không?
Có, không thể sử dụng phân quyền subnet và không hỗ trợ VNet injection cho dịch vụ container.

3. Có cần phải cập nhật mô-đun PowerShell trước khi sử dụng không?
Có, bạn cần cập nhật mô-đun Azure PowerShell trước khi thực hiện các thao tác mở rộng.

Hãy thử ngay hôm nay và nâng cao khả năng quản lý mạng trong Azure của bạn!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào