ขอความเห็นคุณ pizzaman

ขอความเห็นเกี่ยวกับเรื่อง Cluster Server สำหรับการให้บริการ Server ตลาดเมืองไทย

ความเห็นแง่ไหนครับ
ที่ผมทราบตลาดตอนนี้มีความต้องการอยู่บ้าง แต่ส่วนใหญ่พวกที่จะทำ cluster มักจะเป้นบริษัทใหญ่พอที่จะทำเอง ประมาณว่ายังไม่ไว้ใจข้างนอก หรือไม่ก็เป็นเรื่องของนโยบาย … แต่ผมก็ไม่ได้ยินมากนักครับ

ในแง่ของ การทำให้การประมวลผลสำหรับการเรียกใช้งานเว็บไซต์ database ฯลฯ ของลูกค้ามีความรวดเร็วยิ่งขึ้น จากการที่มีการประมวลผลจาก Server เพียงเครื่องเดียว ซึ่งจะทำให้เมื่อมีการร้องขอข้อมูลเข้ามา ประมวลผล และส่งผลได้เร็วขึ้น ซึ่งจะอำนวยความสะดวกสำหรับเว็บไซต์ที่มี data transfer มากๆ

โชคดี ที่ผมยังไม่เจอเคสลูกค้าที่โหลด DB เยอะขนาดนั้นครับ

ขอรบกวนคุณ pizzaman ต่อจากที่ PM ไปน่ะครับ ตัวนี้เป็น Project ใหม่อีกตัว คือนั่ง plan design ทั้งระบบใหม่ดู คิดว่าอาจจะต้องทำโปรแกรมใหม่เกือบหมดเลย แล้วปรึกษาทีมงานใน AIS กับ ททท. ดูแล้วมาเจอทางออกเรื่อง cluster นี้เข้าเหมือนกัน เพราะว่าต้อง ทำ nested join ข้าม table มหาศาล DB ขนาดใหญ่พอตัว ไม่ทราบพอจะมีคำแนะนำ หรือทางออกยังไงมั่งครับ คือไม่อยากโยนงานไปให้ฝ่ายจัดซื้อครับ ในฐานะของ Project Manager ผมต้อง save cost ไว้ก่อนครับ

จำเป็นต้องถึงขั้นทำ Cluster Server เท่านั้นหรือครับ

โดยปกติการออกแบบ backend ที่ดี เราต้องแยก database server ออกไปอีกตัวหนึ่ง แยกการทำงานต่างหาก
จากที่ใช้งานกับลูกค้าจริง ที่มี query database มากจริงๆ ผมก็ใช้ Xeon CPU ขนาดหน่วยความจำ 4GB ทำ database server แยกออกไปอีกเครื่อง และเครื่องที่ทำงาน Apache หรือจะ IIS ก็แยกออกไปอีกเครื่องที่หน่วยความจำ 2GB ก็รองรับ Load ได้อย่างมากมายแล้วนะครับ

หากใช้ MySQL ก็ยังสามารถทำ Cluster Server MySQL เพิ่มได้อีกครับ

Solution นี้ต้องวิเคราะห์การทำงานในแต่ละ process ให้ออกว่า process httpd หรือ mysqld ทำงานหนักกว่ากัน ในกรณีของ MySQL ก็ต้องปรับแต่ง configuration เพิ่มเติมให้ใช้งาน Query Buffer ให้ใช้หน่วยความจำมากเท่ากับ RAM จริงมีให้ใช้งานเลยครับ อย่าง 4GB นี่ต้องปรับแต่ง my.cnf หรือ my.ini แน่นอนครับ
ไม่เช่นนั้นก็เหมือนทำงานที่หน่วยความไม่เกิน 1GB เหมือนปกติ default ทั่วๆไปครับ

การทำ Cluster Server มีหลายแบบหลายประเภท แม้แต่ตัว Apache เองก็ยังสามารถทำสองเครื่องร่วมกันทำงานได้เช่นกันครับ อาจจะต้องแยก DNS Server ออกมาเพื่อใช้ในการ Manage เพิ่มเติมครับ

จากประสบการณ์ DBMS ที่ใช้ RAM 4G กับ Xeon CPU นี่ก็เหลือจะรับประทานแล้วครับ หากใหญ่กว่านี้มักจะเป็นระดับข้ามประเทศที่มีสาขาเชื่อมกันหลายประเทศ มีความซับซ้อนในการ config raplicate database กันครับ

เหมือนจะเจาะประเด็นเรื่อง Clustered Database ใช่ไหมครับ เลือกได้หรือครับ ผมเดาๆ ว่าคงมี DB ที่ใช้งานอยู่แล้ว เช่นพวก Oracle หรือ SAP อะไรประมาณนั้น พวกนั้นจะมี clustering features ให้ใช้อยู่แล้ว ก็ไปเน้นที่ fiber ที่เชื่อมระหว่าง node ให้ดี คงมี solutions จาก vendor ครบอยู่แล้ว

แต่ถ้าจะทำ opensources solutions ก็ลองอ่านดู MySQL cluster ครัีบ ทำได้พอสมควร แต่ผมไม่ทราบว่าล่าสุดที่ ANSI-compliant ครบหมดหรือยัง และการรองรับ transaction ทำได้ reliable พอหรือยัง ฯลฯ

ลองดู Cluster แบบนี้ดูครับ อาจจะเข้าตาเข้าทาง

http://www.thaifreebsd.org/forums/index.php/topic,1090.0.html

มีการทดลองทำและใช้งานกันบ้างแล้วครับ ส่วนตัวก็ลองแล้ว work ครับ

อย่าลืมว่ายังมี Solution Loadbalancer อีกด้วยนะครับ
ประเด็นมันอยู่ที่คุณต้องการเอาไปรองรับงานอะไรเป็นหลักครับ หากเน้นไปที่ DBMS คงต้องพึ่งพา DBMS SQL ตัวใหญ่

หากเป็นของฟรี ก็มี SAPDB ให้ใช้งานครับ ที่ทำใช้งานมา SAPDB ถือว่าเทคโนโลยี่ดีเทียบเท่า Oracle DB เลยครับ

แต่จำเป็นต้องมี Database Admin ที่เข้าใจเรื่องเหล่านี้ด้วยครับ ต้องมีการปรับแต่ง Table Space และอะไรต่างๆ ฯลฯ

และที่สำคัญทางด้าน Client Server ว่าจะเอาอะไรมาเชื่อมต่อด้วยครับ หากเป็นไปได้ อยากให้ขยายความต้องการเล่ามาให้ฟังด้วยครับ เพราะผมเองก็จับ DBMS มาหลายตัว พอจะมองออกบ้าง เพื่อจะช่วยอะไรได้บ้างขอรับ…

ขอบคุณทุกๆคนมากครับ วันนี้หลังจากประชุมพูดคุยกับทางเทคนิค และฝ่ายขายของ Oracle ไปตอนบ่าย ก็ตกลงเซ็นสัญญาแล้วครับ เรื่อง DB ตอนนี้โล่งอกไปแล้วครับ

ส่วนเรื่องของ cluster นี้มองไว้หลายทางน่ะครับ ถึงจะมี oracle มาแล้ว ก็ยังไม่ขอตัดประเด็น MySQL ก่อนน่ะครับ

devone: ผมอาจจะต้องขอคำแนะนำเรื่อง solution ในเรื่อง config my.cnf my.ini แน่นอนครับ คืองานมันด่วนมากๆอ่ะครับ ผมนั่งดูประวัติคนที่มากรอกใบสมัครไว้กับ AIS แล้วยังไม่เจอ คนที่มีประสบการณ์ด้านนี้เลยครับ เจอแต่ นักศึกษาจบหมาดๆ - -’