Friday, October 14, 2011

VMware Fault Tolerance

สวัสดีคับ ช่วงนี้ผมได้เจอปัญหาเกี่ยวกับ Fault Tolerance หรือ ที่เราเรียกกัน FT ค่อนข้างเยอะ มีหลายๆคนยังคงสับสนระหว่าง FT กับ HA (High Availability) อีกทั้งยังไม่รู้ถึงปัจจัยต่างๆที่จะส่งผลกระทบต่อ performance ของ VM ที่ ใช้ FT งั้นจะขออธิบายคร่าวๆ เผื่อหลายๆคนที่ยังไม่เคลียร์ในเรื่องนี้นะครับ

FT ต่างกับ HA ตรงไหน ??
ในกรณีที่เครื่อง ESXi มีปัญหา เช่น ไฟดับ จะส่งผลให้ VM ทั้งหมดบนที่รันอยู่บน ESXi นั้นจะร่วงไปด้วย ,HA นั้นจะทำหน้าที่ power on เครื่อง VM ที่ดับไปนั้น ให้ไปรันอยู่บน ESXi เครื่องอื่นที่เหลืออยู่ใน Cluster (มี downtime )
สำหรับ VM ที่ทำ FT นั้นจะเหมือน การทำ clustering คับ โดยจะระบบจะสร้างเครื่อง secondary VM ขึ้นมา ดังนั้นถ้าเครื่อง primary ร่วงไป , เครื่อง secondary จะทำหน้าที่แทนทันที (ไม่มี downtime) โดยที่ทั้งสองเครื่องนี้ จะไม่มีทางรันอยู่บน ESXi(Host) เดียวกันเด็ดขาด


ข้อควรรู้เกี่ยวกับ FT
- การทำ FT นั้นไม่ต้องพึ่งพา software clustering ใดๆเลย
- Support single vCPu เท่านั้น สำหรับ support Multi processor นั้นขอให้รออีกนิดคับ ใกล้จะมาแล้ว
- CPU บางรุ่นเท่านั้นที่ support นะคับ อีกทั้งcpu เครื่องprimary,secondary ต้องอยู่ในกลุ่มเดียวกันถึงจะทำ FT ได้ โดยสามารถตรวจสอบได้จาก KB: 1008027
- OS ก็เช่นกัน ไม่ได้รองรับ OS ที่รุ่น โดยสามารถตรวจสอบได้จาก KB: 1008027

- สำหรับ version 4.0 ESX/ESXi ต้นทางและปลายทางต้องรัน version และ build number เดียวกัน
แต่สำหรับ version 4.1 ขอแค่ version FT เท่ากันก็เพียงพอคับ (สามารถดูได้จาก tab summary)
- ไม่สามารถทำ snapshot ขณะ ออน FT ได้ นั่นหมายถึง ไม่สามารถ backup ได้ด้วย vcb , vStorage API และไม่สามารถทำ storage vmotion ได้ด้วย
- CPU เครื่องprimary และ secondary ไม่ควรต่างกันเกิน 400MHz
- ไม่ควรรันเกิน 4 FT VM ต่อ 1 ESX/ESXi (จิงๆสามารถรันเกินได้นะคับ แต่ VMware ไม่แนะนำ)
- Nic ที่จะใช้ทำ FT logging ขั้นต่ำควรเป็น 1Gbps
-ไม่ support Thin-disk นะคับ
- VM ที่ทำ FT นั้น ,Memory reservation ของ VM (edit setting --->resource) จะถูกเซ็ตไว้ให้เป็นค่าเดียวกันจำนวน memory ที่เราเซ็ตไว้ตอนสร้าง VM นั้น พูดง่ายๆคือจองเมมไปใช้เต็มที่เลย
-เวลา enable FT นั้น ระบบจะทำการ copy memory เครื่อง primary ไปยังเครื่อง secondary โดยผ่านทาง feature vmotion ดังนั้น การ enable FT บ่อยๆนั้นอาจจะไม่เหมาะสมเท่าไหร่ ,process การ enable FT นั้นจะช้าหรือเร็ว จะขึ้นอยู่กับ speed ของ port vmotion และขนาดของ memory
-ควรจะ dedicate nic ให้กับการทำ FT logging เนื่องจาก network input (Rx) , disk read , user input ของเครื่อง primary นั้นจะถูกต่อส่งไปยังเครื่อง secondary โดยผ่านทาง nic นี้
-ในกรณีที่ เครื่อง primary VM ตายไป เครื่อง secondary จะทำหน้าที่เป็น primary แทน หลังจากนั้น ระบบจะทำการสร้างเครื่อง secondary ใหม่ขึ้นมาทันที โดย HA จะเป็นคนเลือกให้ว่าควรจะไปอยู่ที่ไหน แต่ที่แน่ๆไม่มีทางอยู่บน ESX/ESXi เดียวกับเครื่อง primary แน่ๆคับ โดยprocess นี้ระบบทำให้อัตโนมัติคับ
- ถ้าต้องการทำ load balance FT logging nic นั้น ----> KB: 1011966
-FT ไม่พึ่งพา vCenter จึงไม่ต้องห่วงกรณีที่ vCenter down ไป
-เราสามารถ vmotion ได้ทั้งเครื่อง primary และ secondary นะคับ
-เพื่อ balance network traffic ควร mix ระหว่าง primary และ secondary VM ของแต่ละระบบไว้ใน ESX/ESXi เดียวกัน เนื่องจาก network traffic ส่วนใหญ่นั้นจะวิ่งจาก primary -->secondary เป็นหลัก
-ถ้าเครื่อง secondary sync ตามเครื่อง primary ไม่ทัน จะทำให้ performance ของ VM นั้นตกลง เนื่องจาก เครื่อง Primary ต้องรอให้เครื่อง secondary ไล่ตามให้ทัน
- Vmware เรียก technology ในการ sync นี้ว่า vLockstep คิดซะว่าเหมือน เกียร์สองตัวเชื่อมด้วยสายพานเดียวกันคับ ถ้าตัวหน้าหมุนไป ตัวหลังก็ต้องหมุนตาม ถ้าตัวหลังหมุนช้าลง ก็จะทำให้ตัวหน้าช้าลงไปด้วย ยกตัวอย่างเช่น ESX/ESXi ที่ เครื่อง secondary อยุ่นั้น CPU ใช้งาน100% แต่ที่ ESX/ESXi ของเครื่อง primary นั้น CPU ใช้ไปแค่ 30%
จะส่งผลให้ เครื่อง secondary ไม่มีcpu resource เพียงพอที่จะไล่syncตามเครื่อง primary

หวังว่าที่กล่าวมาทั้งหมดนี้ คงช่วยตอบคำถามหลายๆคนได้นะคับ

2 comments:

  1. ขอสอบถามหน่อยครับ
    ถ้าผมจะทำ FT โดยแยก Physical VM และ แยก Storage กัน คือ ต่าง VM มี local disk ของตัวเอง จะสามารถทำได้หรือป่าวครับ

    ReplyDelete
  2. ขออนุญาตฝากลิงค์นะคะ
    พบกับเกมส์คาสิโนออนไลน์ อาทิ ไพ่บาคาร่า, รูเล็ต, มังกรเสือ, กำถั่ว ฝาก-ถอน ได้ทุกวันตลอด 24 ชั่วโมง ที่นี่เลยค่ะ
    https://www.111player.com

    ReplyDelete