Computer >> Máy Tính >  >> Hệ thống >> Linux

Làm thế nào để giới hạn tài nguyên mà một thùng chứa LXD có thể sử dụng

Làm thế nào để giới hạn tài nguyên mà một thùng chứa LXD có thể sử dụng

Trong bài viết trước, bạn có thể khám phá LXD là gì và cách bắt đầu với nó, trong trường hợp bạn chưa quen với nền tảng này.

Trong hầu hết các trường hợp, bạn sẽ sử dụng nhiều vùng chứa trên cùng một hệ thống để chia một tổng thể lớn hơn thành các thành phần nhỏ hơn. Nên giới hạn số lượng tài nguyên mà mỗi thành phần có thể sử dụng. Nhưng tại sao? Rõ ràng, số lượng lý do là không giới hạn như các trường hợp mà bạn có thể sử dụng vùng chứa.

Khi nào các giới hạn đối với thùng chứa LXD có thể hữu ích

  • Cung cấp một dịch vụ và cung cấp cho mỗi khách hàng một phiên bản LXD. Ví dụ:đây có thể là một máy chủ lớn và bạn lưu trữ từng trang web của khách hàng vào một vùng chứa riêng biệt. Nếu một trang web nhận được lượng truy cập đột ngột, điều này có thể làm chậm các trường hợp khác. Với giới hạn, chỉ một vùng chứa sẽ giảm tốc độ và các vùng còn lại sẽ hoạt động bình thường.
  • Trong một trường hợp tương tự, bạn có thể dễ dàng bán các gói dịch vụ khác nhau. Một khách hàng có thể trả cho X lượng tài nguyên và người kia có thể trả cho Y. Và bạn có thể dễ dàng điều chỉnh điều này bằng một vài lệnh đơn giản.
  • Bạn có thể tự bảo vệ mình trước các hình thức tấn công Từ chối Dịch vụ đơn giản hơn. Khi một vùng chứa bị bắn phá, nó sẽ đạt đến giới hạn sử dụng tài nguyên. Các vùng chứa khác sẽ không bị ảnh hưởng.
  • Bạn có hai vùng chứa, mỗi vùng sẽ sử dụng 100% thời gian có sẵn của CPU. Tuy nhiên, bạn muốn một người hoàn thành công việc nhanh hơn người kia. Ví dụ:một người có thể kết xuất video cho một dự án mà bạn cần vào ngày mai. Bạn có thể gán 90% thời gian CPU cho phần đầu tiên và 10% cho phần thứ hai.

Tất nhiên, bạn có thể có lý do của riêng mình. Và nếu bạn chỉ sử dụng một vùng chứa trên toàn bộ hệ thống, bạn thậm chí có thể không cần điều này. Nhưng nếu bạn đang sử dụng nhiều vùng chứa, bạn hầu như luôn cần đặt một số loại giới hạn. Bởi vì, một cuộc tấn công, một lỗi hoặc một số dạng hành vi sai khác trong một phiên bản LXD có thể ảnh hưởng đến toàn bộ hệ thống và làm chậm nó. Bạn càng có nhiều vùng chứa, khả năng xảy ra trường hợp như vậy càng tăng.

Cách đặt giới hạn tài nguyên trên vùng chứa LXD

Kiểm soát tài nguyên liên quan đến hoạt động của đĩa sẽ cần phải cài đặt ZFS. Nếu bạn làm theo hướng dẫn ở đây, nó đã được cài đặt. Nếu không, hãy cài đặt các tiện ích ZFS theo hướng dẫn trong hướng dẫn và sau đó chạy lại lệnh bên dưới. Chọn ZFS khi được hỏi sẽ sử dụng phần phụ trợ lưu trữ nào.

sudo lxd init

Giới hạn mức sử dụng bộ nhớ

Trong các lệnh bên dưới, hãy thay thế “container_name” bằng tên thực của vùng chứa của bạn. Đặt giới hạn bộ nhớ đơn giản như nhập:

lxc config set container_name limits.memory 100MB

Nhập “GB” thay vì “MB” nếu bạn muốn sử dụng gigabyte thay vì megabyte.

Giới hạn mức sử dụng CPU

Khi bạn muốn giới hạn số lõi CPU mà một vùng chứa có thể sử dụng, hãy nhập:

lxc config set container_name limits.cpu 2

Để "ghim" vào các lõi CPU cụ thể, hãy sử dụng:

lxc config set container_name limits.cpu 0-0

Điều này sẽ làm cho bộ chứa chỉ sử dụng CPU đầu tiên. Để sử dụng thứ hai, bạn sẽ nhập 1-1. Để sử dụng tất cả các lõi CPU từ thứ nhất đến thứ ba, bạn sẽ nhập 0-3.

Một loại giới hạn khác là thời gian CPU mà một vùng chứa có thể sử dụng.

lxc config set container_name limits.cpu.allowance 10ms/100ms

Điều này sẽ chỉ cho phép vùng chứa sử dụng 10 mili giây thời gian CPU trong mỗi 100 mili giây, vì vậy khoảng 10% của một lõi CPU.

Giới hạn mức sử dụng đĩa

Để hạn chế tài nguyên liên quan đến đĩa, trước tiên bạn phải thêm thiết bị đĩa gốc vào vùng chứa của mình. Nó đã tồn tại theo mặc định, được kế thừa từ hồ sơ LXD mặc định. Nhưng bạn không thể thay đổi cài đặt của nó trên cơ sở mỗi vùng chứa cho đến khi bạn thực hiện điều này.

lxc config device add container_name root disk pool=default path=/

Nếu bạn đặt tên cho nhóm của mình theo cách khác, hãy thay thế "mặc định" bằng tên của nhóm lưu trữ của bạn. Nếu bạn quên tên của nó, bạn có thể hiển thị nó bằng:

lxc storage list

Để giới hạn dung lượng ổ đĩa, một phiên bản LXD có thể sử dụng:

lxc config device set container_name root size 7GB

Rất tiếc, các giới hạn I / O (đọc / ghi “tốc độ” và IOPS) hiện không hoạt động.

Giới hạn mức sử dụng mạng

Đối với đĩa, trước tiên bạn phải thêm một thiết bị ethernet ảo mà bạn có thể cấu hình. Tìm tên của cầu nối mạng kết nối các phiên bản LXD của bạn với thế giới bên ngoài.

lxc network list

Thay thế “lxdbr0” nếu cần (nếu cây cầu được đặt tên khác trong trường hợp của bạn). Nếu bạn không chọn loại mạng làm cầu nối (câu trả lời mặc định), trong các bước cấu hình “lxd init”, bạn có thể phải điều chỉnh lệnh bên dưới để phản ánh lựa chọn của mình. Ví dụ:bạn cũng có thể phải thay thế “nictype” bằng bất cứ thứ gì bạn đã sử dụng cho mạng LXD của mình.

lxc config device add container_name eth0 nic name=eth0 nictype=bridged parent=lxdbr0

Cuối cùng, đặt giới hạn cho việc xâm nhập mạng (tải xuống) và / hoặc đi ra (tải lên).

lxc config device set container_name eth0 limits.ingress 1Mbit

1Mbit là một megabit (không phải megabyte). Một byte chứa 8 bit, có nghĩa là điều này sẽ giới hạn tải xuống khoảng 1/8 =0,125Mbits mỗi giây, khoảng 120 kilobyte. Vì vậy, nếu bạn muốn tải xuống với 1MB / s (megabyte), hãy nhân với 8 và đặt giới hạn nhập thành 8Mbit.

Đối với đầu ra, sử dụng:

lxc config device set container_name eth0 limits.egress 1Mbit

Kết luận

Điều này bao gồm các thuộc tính được sử dụng phổ biến nhất liên quan đến giới hạn tài nguyên. Nhưng có rất nhiều biến khác mà bạn có thể đặt bằng lxc config device setlxc config set . Bạn có thể đọc thêm về các thuộc tính vùng chứa có thể điều chỉnh này trên trang GitHub của LXD.