동일한 서버에서 프로세스의 리소스(CPU, 메모리 및 네트워크 대역폭) 소비를 제한하고 싶습니다. 프로세스를 한 서버에서 다른 서버로 마이그레이션할 수 있다면 좋을 것입니다.
나는 가벼운 가상화를 찾고 있다고 생각합니다. 저는 LXC가 좋은 선택이라고 생각했습니다. 그러나 2.6.18 커널은 LXC를 지원하지 않습니다. 공유 클러스터이므로 커널을 업그레이드할 수 없습니다. 그리고 "setrlimit" 시스템 호출은 가상 머신처럼 리소스 소비를 제한하는 것이 아니라 예산에 도달했을 때만 프로세스에 신호를 보내는 것 같습니다(틀렸다면 정정해 주세요). 이 작업에 대한 제안 사항이 있나요?
감사해요!
답변1
이러한 리소스 중 일부는 pam_limits 모듈을 통해 제한될 수 있습니다. 이에 대한 주요 문서는 다음에서 찾을 수 있습니다.
man limits.conf
모든 Red Hat 유형 시스템의 구성 파일은 /etc/security/limits.conf입니다.
아마도 가장 먼저 이해해야 할 것은 하드 제한과 소프트 제한 사이의 관계일 것입니다. 또한 살펴봐야 할 일부 지시문은 다음과 같습니다.
- CPU
- 메모리 잠금
- 핵무기
매뉴얼 페이지 하단에 몇 가지 예가 있습니다.
네트워크 대역폭 측면에서 이는 수행하기가 더 어렵습니다(그러나 불가능하지는 않습니다). 기본 아이디어는 iptables를 통해 UID를 기반으로 액세스를 제한하고 tc(트래픽 제어)를 통해 트래픽을 실행하는 것입니다.
man tc