virtualization/VMware

VMware Fault Tolerance

yueisu 2009. 6. 29. 15:44
한대의 물리 서버에 여러대의 가상머신을 작성하여 서버의 도입비용과 관리비용, 그리고 전력까지 줄일 수 있다는건 서버 가상화의 최대장점일겁니다. 하지만 반대로 이런 걱정도 있습니다. 물리 서버에 장애가 발생한다면? 그렇게 되면 그 위에서 움직이고 있는 가상머신도 끝~이죠... 흐흐 이것이 서버 가상화의 최대단점(?)일지도 모릅니다. 그렇기 때문에 각 가상화 솔류션의 벤더들은 이러한 물리 서버의 장애로 인한 가상머신의 정지를 예방하기 위한 대책을 내놓았죠. 이것이 바로 HA(High Availability) 기능입니다.

HA는 말그대로 '고가용성'으로 주로 스위치나 UTM을 이중화하는 기술이죠. 이 기술이 서버 가상화에서 쓰일 경우는 이렇습니다. 두 대이상의 물리 서버를 같은 HA그룹의 멤버로 등록을 합니다. 같은 HA그룹에 속해있는 물리 서버는 일정한 간격으로 하트비트를 주고받으며 상대방의 사활(死活) 상태를 감시하죠. 하트비트가 끊어지면 해당 서버에 장애가 발생했다고 판단, 해당 서버상에서 움직이고 있는 가상머신을 정지, 새로운 서버에서 기동을 합니다. HA의 문제는 바로 이겁니다. 라이브 마이그레이션처럼 가상머신이 움직이고 있는 상태에서 다른 물리 서버로 이동이 않된다는거죠. 하이퍼바이저에 따라서 차이가 있긴 합니다만, 30초~2분 정도 가상머신이 정지된다고 봐도 될겁니다. EC사이트 같이 트랜젝션이 많은 DB서버의 경우는 치명적이죠... DB서버와 같이 미션 크리티컬한 서버는 가상화에 적합치않다는 얘기는 바로 이런 이유도 있습니다.
이런 HA의 단점을 보완하기 위해서는 가상머신에 클러스터링을 도입해야 했습니다만, 클러스터링 소프트웨어만으로도 서버를 살 수 있을 정도의 비싼 가격이라 중소기업에서는 쉽게 되지않았을겁니다.

VMware Fault Tolerance는 이런 HA의 약점을 보완하는 기능입니다. 가상머신에 FT를 구성하면 내부에서는 Vmotion이 실행됩니다. 보통은 Vmotion이 끝나면 실행전의 서버에 있던 가상머신은 삭제됩니만 FT를 실행하면 Vmotion이 끝난 가상머신을 삭제하지않습니다. 양쪽의 가상머신은 하트비트를 주고받으며 정기적으로 데이터도 동기하도록 합니다. 이로써 한쪽의 가상머신에 장애가 발생하더라도 다른 한쪽의 가상머신이 살아있으니, 지속적으로 운영이 가능하게 됩니다.

사실 개인적으로 꽤나 기대를 했던 기능이었습니다. 하지만 일단 나오고보니, 의외로 제한 기능이 많더군요.
간단하게 제한 기능을 나열해보면...
  1. 가상 CPU(vCPU)가 두개 이상인 가상머신은 FT를 이용할 수 없습니다.
  2. FT를 적용한 가상머신은 스냅숏 기능을 사용할 수 없으며 반대로 스냅숏을 이용하고 있는 가상머신은 스냅숏을 전부 삭제해야한 FT기능을 이용할 수 있습니다.
  3. 씬프로비젼으로 작성한 가상 HDD은 FT 기능을 이용하면 씩 가상 HDD로 변경됩니다.(씬프로비젼은 동적으로 가상 HDD의 용량을 조절하는 기능입니다. 예를 들어 가상머신 작성시 HDD를 200GB로 지정을 했더라도 씬프로비전으로 작성한 HDD의 용량은 사용한만큼 늘어가죠. 물론 가상머신은 HDD를 200GB로 인식합니다)
  4. USB등의 일부 장치를 이용할 수 없습니다.
  5. 스토리지 Vmotion을 이용할 수 없습니다.
  6. 가상머신의 퍼포먼스가 20%~30% 저하됩니다.
흐흐... 의외로 제한이 많고, 무엇보다도 가상머신의 퍼포먼스가 저하되는건 모든 가상머신에 FT 기능을 적용한다는게 바람직하지않다는 얘기죠. 

아직 제공되고 얼마되지않았기에 향후 더욱 안정되고 이용하기 쉽게 개선된다면 모를까 지금으로써는 정말로 미션 크리티컬한 일부 가상머신에 한정하는게 좋을 것 같습니다.