문제

나는 실행할 필요가 상대적으로 많은 수의 가상 머신 상대적으로 적은 수의 실제 호스트.각 가상 기계를 수행하지 않을 많이 각각 실행해야 합니다 기본적으로 한 기본적인 네트워크 서비스-생 SMTP 다.또한,부하에 각 될 것입니다.

불행하게도,이 숫자는 무언가 다음과 같 100 상 컴퓨터에는 5 대의 물리적 hosts.각 호스트는 괜찮은 충분 코어 2 2 기 ram,1tb 디스크에 있습니다.그러나,내가 알지 vmware 의 이미지 우분투와 던지기에서는 기계 늘 저를 어디서나 근처의 100 인 것 무언가를 가까이 20.

그래서,어떤 희망을 위해 이 비율은 이미지의 호스트?또한,이의 구현상 기계를 위해 가장 적합할 것이 이 목적-즉는 전반적인 효율적인 자원의 사용량?우리는 주로 사용 vmware 지만,여기 있는 경우에는 상당한 성능을 활용할 수 있는 결과를 보면으로 전환하여 젠나처럼,나는 확실히 우리는 그것을 고려할 것입니다.

사전에 감사를 위해 당신의 통찰력:)

참고:결국 우리를 사용하여 오픈 vz 고 오히려습니다.에 대한 기본 매개 변수는 우분투 템플릿 우리 실행에 대한 40 인스턴스/기계입니다.

도움이 되었습니까?

해결책

적합하게 만드는 세 가지 주요 전선이 있습니다.

  1. 더 낮은 오버 헤드. OpenVZ, vServer, Chroot는 해당되는 경우 이상적입니다. 각 인스턴스가 실제로 필요한 경우 자체 커널이있는 실제 VM이 되십시오. VMware 대신 KVM/Xen을 사용해보십시오. 덜 성숙 할 수 있지만 훨씬 더 유연성이 있습니다.

  2. 더 작은 손님. Ubuntu Jeos를 사용해 보거나 Busybox로 직접 굴립니다.

  3. 손님 사이에서 가능한 한 많이 공유하십시오. 모든 OS와 함께 단일 R /O 이미지를 공유하고 /var, /home, /etc 등에 각 게스트에 대해 작은 R /W 이미지를 장착 해보십시오.

다른 팁

그것에 대한 몇 가지 문제 ...

  1. vmware 서버의 경우 테스트 용으로 만 서버 하드웨어가 필요합니다.
  2. Xen Server와 같은 레벨 인 가상화 솔루션 또는 VMware ESX 또는 ESXI (무료) 또는 Hyper-V와 같은 가상화 솔루션을 사용하십시오.
  3. 20-1에는 더 많은 램이 필요합니다. 수학이 추가되지 않습니다. 최소한의 기능 머신에는 512가 필요합니다. 512는 256 이상을 가져야하는 완벽하게 벗겨진 리눅스가 아니라면 512가 필요합니다. 20x256 = 5GB + 5-10% 오버 헤드. 실제로 그 사양에서는 일어나지 않을 것입니다.
  4. 20-1에는 더 많은 프로세서가 필요합니다. 각 기계에는 VCPU가 있습니다. 코어 2에서 공유한다는 것은 프로세서 당 10-1을 의미합니다. 안좋다. 우리는 듀얼 쿼드 코어 Dell 1950, 16GB RAM에서 거의 20을 실행합니다. 잘 작동합니다.
  5. 당신이 무엇을 선택하든, 당신은 메모리를 과도하게 구독 할 것입니다. 어느 것이 당신을 허락했는지 정확히 모르겠습니다. VMware는 Will이지만 경고를 보여줍니다.
  6. 나는 들었지만 Xenserver가 성능 혜택을 제공 할 것이라는 증거는 없지만 아무도 10-20%이상을 주장하지 않습니다.

행운을 빕니다

100 개의 풀 기능 운영 체제가 정말로 필요합니까?

접근 웹 서버 사용을 이미 사용하지 않는 이유는 무엇입니까? 가상 웹 서버/호스트를 의미합니다.

예를 들어 단일 구성 파일을 사용하여 많은 가상 서버를 호스팅하는 단일 물리 서버에 설치된 Apache HTTPD를 사용하십시오. 또한 다른 IP 주소가있는 DNS 구성 및/또는 많은 가상 네트워크 인터페이스 (Eth0 : 0, Eth0 : 1, ..., Eth0 : N)가 필요합니다.

실제로 세계에 노출 된 여러 서비스 만 필요하고 부하가 높지 않은 경우 작동해야합니다.

또 다른 가능성은 매우 적은 양의 메모리로 실행할 수있는 경량 리눅스 분포를 사용하는 것입니다. DAMNSMALLLINUX 또는 DDWRT의 변형과 같은 것. 16MB의 메모리만으로 실행할 수 있으므로 단일 시스템에서 20 개 이상을 실행할 수 있습니다.

할 수 있는 최고의 실 VMware vmware ESX server 으로 그들 모두가 멋진 메모리 풀링 기능입니다.그것은 기본적으로지는 메모리의 동일하고 사용하는 사이에 그들을 여러 시설,그래서 만약 당신이 실행되는 많은 동일한 시설,당신을 얻을 수 있게 더 많은 호스트에서 보다 다른 Vm.

체크인 비트"에 대하여 투명하는 페이지 공유"에서 이 블로그 항목에, 주석은 그것에 대해 너무입니다.

물론 당신은 여전히 밀어와 20 명당 호스트와 유 2Gb 램을 각각에,그러나 제거하는 경우 모든 불필요한 서비스와 앱을 구축 1guest 이미지와 클론 설치하기 전에 전용 응용 프로그램에서 각각할 다,특히 VMware 링크 보여줍니다 4Gb 실행하는 호스트는 40 명!

전체 데스크탑과 9 개의 가상 머신을 실행하는 쿼드 코어 머신 하나가 있습니다. 이것은 테스트 머신이므로 모든 종류의 손님을 사용합니다. RAM 사용에 대한 최고는 데비안 -KfreeBSD와 작은 코어 리눅스 인 것 같습니다. Tiny Core Linux는 10m의 RAM을 사용하지 않습니다. 몇 가지 서비스를 추가하면 32m 일 수 있으므로 1GB의 RAM 내에서 32 VM을 실행할 수 있습니다! 2GB가 있으므로 하이퍼 바이저 및 오버 헤드 (KVM을 사용하고 있음)를 포함한 48 대의 기계를 실행할 수 있다고 가정 해 봅시다. 따라서 5 개의 기계를 사용하면 최대 240 대의 기계가 될 것입니다. D

잠시 후 시도 할 것 같아요 : D

BTW. 당신은 VM의 소량에 가벼운 하중이 있다고 말했기 때문에 CPULOAD 또는 디스크로드를 의지하지 않았습니다. 그리고 그 수치는 정확히 0 중복성이 있습니다.

손님을 충분히 슬림 할 수 있다면 아마도 X, 최소한의 서비스가 시작되지 않을 수 있습니다. Slackware 또는 Ubuntu 서버를보십시오. Xen은 웹 호스팅 회사들 사이에서 인기있는 것처럼 보이므로 살펴볼 가치가 있습니다.

CPU 사용량은 앱에 따라 다르지만 RAM을 더 구매하고 싶을 수도 있습니다!

각 네트워크 서비스 인스턴스가 자신의 가상 머신에 구획화되어야하는 이유가 있습니까? 사용자를 서로 분리 할 필요가 없지만 프로세스와 트래픽을 격리 해야하는 경우 5 개의 서버를 사용하여 각 인스턴스에 대해 별도의 프로세스를 시작하는 것이 좋습니다. 각 인스턴스는 별도의 가상 인터페이스에 바인딩됩니다.

예를 들어, 가상 인터페이스를 구성하고 IP 주소를 할당하십시오. 작성하려는 인스턴스에 대해 httpd.conf 파일 및/또는 sendmail.cf 파일을 만듭니다. 구성 파일에서 데몬이 가상 인터페이스에 바인딩되어야합니다 (그리고 해당 것만). 데몬을 시작하십시오.

각 인스턴스에 대해 반복하십시오. 많은 프로세스가 실행되며 (수천 수천이 아닌 경우) 총액은 수십 개의 VM보다 메모리를 적게 사용합니다. 또한 OS를 사용하지 않은 OS를 디스크로 바꿀 수 있습니다.

수학을하는 경우 각 기계에 대해 평균 100MB의 RAM을 얻습니다. 이것은별로 아닙니다. VM의 오버 헤드는 상당히 큽니다. 각 인스턴스에서 전체 OS를 실행해야합니다.

정말 작은 풋 프린트 OS를 사용합니다 (http://www.damnsmalllinux.org/?) 그리고 더 많은 것을 벗겨 내거나 더 큰 기계를 얻는 데 시간을 보내십시오.

기계가 저렴하고 RAM이 많은 64 비트 OS로 업그레이드하는 경향이 있습니다.

VMware에는 물리적 머신 그룹을 "풀"할 수있는 멋진 옵션이 있으며 VM의 작동을 방해하지 않고 가상 머신을 사용하지 않는 하드웨어로 자동 이동합니다.

오히려 광고 링크.

VMware로 제한되어 있습니까? 당신은 고려 했습니까? 운영 체제 수준 가상화? 각 VM이 동일한 커널을 실행할 수 있다는 점을 감안할 때 오버 헤드가 적은 VM을 더 많이 얻을 수 있습니다.

몇 가지 생각 ...

1- 다른 사람들이 지적했듯이 메모리 산술은 작동하지 않으므로 더 많은 RAM이 필요합니다.

2- 서비스에 따라 사전 구성된 가상 머신을 찾을 수 있습니다. 예를 들어, 아스타로 무료 방화벽 소프트웨어에 대한 VM 설정이 있습니다. 또한 적응할 수있는 매우 작은 Linux 배포판을 찾을 수도 있습니다.

3- 어쩌면 나는 무언가를 놓치고 있을지 모르지만 Ubuntu가 이미 꽤 가까운 것처럼 들립니다 ... 5 개의 기계에서 기계 당 20 인스턴스가 필요한 100 인스턴스를 얻습니다. 그러나 미래의 성장을위한 헤드 룸은 많지 않습니다 ...

조심해, 행운을 빕니다.

이것이 가능한지 모르겠지만 Chroot 환경에서 각 서비스를 실행하는 것은 어떻습니까? 필요한 라이브러리 파일을 단단하게 연결하여 각 Chroot 파일 시스템을 작성하여 디스크 공간을 절약 할 수 있습니다.

자체 VM에서 각 서비스를 실행하는 데있어 또 다른 문제는 모두 자체 IP 주소가 필요하다는 것입니다. 100 IP는 내부 네트워크 (172/8 또는 10/8 설정과 같은)에서 문제가되지 않을 수 있지만, 클래스 A의 일부 (많은 대중이 있다고 가정 함). 빠른.

그리고 다른 사람들이 요청한 것처럼 왜 각 서비스가 자체 VM이어야합니까? 그들 중 다수는 동일한 호스트에서 쉽게 달릴 수 있어야합니다.

그것이 응용 프로그램 수준에서 할 수있는 일이라면 - 나는 virtualizatoin없이 갈 것입니다. 다른 포트 번호에서 여러 앱의 여러 인스턴스를 실행할 수 있으며 IP 별칭이 쉽게 다른 IP를 실행할 수 있습니다. 이렇게하면 각 상자에서 20 개 이상의 사본을 쉽게 실행할 수 있습니다. 도대체 하드웨어의 절반으로 모든 것을 할 수 있습니다.

가상화는 모든 것에 대한 해결책이 아닙니다. :)

내 2c.

클라우드 파운드리. 나는 답을 제출 한 다른 사람에 비해 VM에 대해 아무것도 모르지만, 호스트가 있다면 이해하는 바에 따르면 해당 호스트의 VM, 그 VM의 Cloud Foundry는 쉽게 기본 보조 VM을 만들 수 있으며 쉽게 만들 수 있습니다. 하드웨어 사용량을 낮게 유지하면서 해당 보조 VM 세트 내의 모든 서비스를 복제하고 구성하십시오. 나는 그것이 확실하게 작동하는지 모르겠지만, 내가 이해하는 바에 따르면 더 최소한의 접근법 중 하나 일 것이며 호스트 머신을 손상시키는 위험을 줄일 수있는 두 가지 선체 접근법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top