Latest Entries »

แอดมินหลายๆ คน มักเจอคำถามนี้เหมือนกัน บทความนี้จึงขอนำเสนอวิธีต่างๆ และข้อดี ข้อเสีย ของแต่ละวิธีครับ

การทำงานของ proxy แบ่งตามมุมมองจากไคลเอนท์ได้ 2 กลุ่มหลักๆ คือ
A) Explicit Proxy
B) Transparent Proxy

Explicit Proxy

    เป็นการบอกให้ไคลเอนท์รู้ว่า proxy อยู่ที่ไหน และให้ส่งมาที่ proxy ก่อน

    1) Manual

      หรือทำมือ ซึ่งเป็นวิธีที่ง่ายที่สุด
      วิธีทำ
      – เปิด IE > Tools > Internet Options > Connections > LAN Settings แล้วระบุชื่อ proxy ลงไป
      ข้อดี
      – ง่าย ไม่ซับซ้อน
      ข้อเสีย
      – หากมีเครื่องไคลเอนท์จำนวนมาก แอดมินอาจมือหงิกได้
      – เวลาเปลี่ยน proxy ก็มือหงิกอีกรอบ

    2) Proxy Script

      วิธีทำ
      – เอา java script ไปวางไว้ในเวปภายในของบริษัท แล้วทำเช่นเดียวกับ manual แต่ให้ระบุโดยใช้ Use automatic configuration script ชี้ไปยัง url ของ java script
      ข้อดี
      – ยังง่ายอยู่ เพราะสามารถหาตัวอย่าง proxy script ได้ในเน็ต
      – สามารถกำหนดเงื่อนไขแปลกๆ เช่น ทำ load balance กับ proxy สองตัว หรือเลือกได้ว่าเวปไหนออกตรง เวปไหนผ่าน proxy
      – การแก้ไขทำได้ง่าย เพราะแก้แค่ที่เดียว
      ข้อเสีย
      – เวลากำหนดครั้งแรกยังต้องทำทีละเครื่องเช่นเดิม

    3) WPAD

      หรือที่ในหน้า proxy ของ IE บอกว่า Automatically detect setting นั่นเอง
      วิธีทำ
      – ใช้ proxy script เจ้าเดิม เพียงแต่เราจะวางให้ถูกที่ถูกทาง โดยมันจะค้นหา proxy script ตามชื่อโดเมนของไคลแอนท์ เช่น ไคลเอนท์ชื่อ pc1.sale.bangkok.modplusplus.com เวลามันค้นหา proxy script ก็จะวิ่งตามนี้

      http://wpad.sale.bangkok.modplusplus.com/wpad.dat
      http://wpad.bangkok.modplusplus.com/wpad.dat
      http://wpad.modplusplus.com/wpad.dat

      ดังนั้นหน้าที่เราคือต้องสร้าง DNS A record ชื่อ wpad.modplusplus.com และเปลี่ยนชื่อ proxy script เป็น wpad.dat จากนั้นไปวางในเวปเซิร์ฟเวอร์ที่ชื่อ wpad.modplusplus.com
      ข้อดี
      – คอนฟิกที่ไคลเอนท์น้อยกว่าสองแบบแรก
      ข้อเสีย
      – ต้องยุ่งกับ DNS
      – ไคลเอนท์ที่ไม่ได้ join AD อาจใช้งานลำบาก เนื่องจากจะไม่ทราบโดเมนในการค้นหา
      – ไม่ใช่ทุกแอพพลิเคชั่นที่ใช้งาน WPAD ได้
      รายละเอียดเพิ่มเติมอ่านได้ที่ Wikipeia คลิ๊กที่นี่

    4) DHCP

      ถ้าใครที่ใช้ DHCP กันอยู่แล้วอาจพ่วง proxy script ไปกับ DHCP แทนการใช้ WPAD ก็ได้ครับ
      วิธีทำ
      เข้าไปกำหนด proxy option 252 ให้ชี้ไปที่ url ของ proxy script วิธีการขึ้นอยู่กับยี่ห้อของ DHCP server ครับ ถ้าเป็น Microsoft เข้าไป คลิ๊กที่นี่ แล้วอย่าลืมมาเพิ่มในแต่ละ DHCP scope ด้วยนะครับ
      ข้อดี
      – ไม่ต้องแตะไคลเอนท์เลย
      ข้อเสีย
      – ไคลเอนท์ที่ทำ static IP จะใช้ไม่ได้ ดังนั้นแนะนำให้ทำร่วมกับ WPAD ครับ

    5) Microsoft Group Policy Object (GPO)

      วิธีทำ
      – เข้าไปกำหนดแบบ manual หรือ proxy script ผ่าน Microsoft Group Policy Management Console (GPMC) ซึ่งจะกระจายให้กับไคลเอนท์ที่อยู่ใน AD ทั้งหมด
      ข้อดี
      – ไม่ต้องไปยุ่งกับไคลเอนท์
      – ไม่ต้องเข้าไปแก้ไข DNS หรือ DHCP
      ข้อเสีย
      – อาจมีปัญหากับอุปกรณ์ mobile หรือ table ซึ่งไม่สามารถ join AD ได้

Transparent Proxy

    เป็น proxy ใสแจ๋ว ฝั่งไคลเอนท์ไม่รับรู้ว่ามี proxy อยู่ เวลาติดตั้งไม่ต้องยุ่งกับไคลเอนท์ แต่จะมีขั้นตอนติดตั้งที่ยุ่งยากกว่า และแพงกว่า
    6) L4 Switch

      วิธีทำ
      – ใช้ L4 switch ตรวจสอบว่ามี traffic ใช้พอร์ต 80 หรือ 443 หรือไม่ ถ้ามีจะโยน traffic ดังกล่าวให้ proxy แต่ถ้าไม่ใช่ก็จะปล่อยผ่าน
      ข้อดี
      – ไม่ต้องไปยุ่งกับไคลเอนท์
      – ไม่ต้องเข้าไปแก้ไข DNS หรือ DHCP
      – สามารถใช้ได้กับทุกแอพพลิเคชั่น ทุกแพลตฟอร์ม
      ข้อเสีย
      – อุปกรณ์ L4 switch มักจะมีราคาแพง บางครั้งอาจแพงกว่า proxy ด้วย

    7) WCCP

      หรือ Web Cache Communication Protocol พัฒนาโดย Cisco ให้ใช้งาน proxy ร่วมกับ Cisco switch แทนการพึ่ง L4 หรือ L7 switch ที่มีราคาแพง
      วิธีทำ
      – ทำงานเช่นเดียวกับ L4 switch คือ WCCP router (หรือ WCCP switch) จะส่ง web traffic มาให้ proxy ก่อน แต่ถ้าไม่ใช่ก็จะปล่อยตรง
      ข้อดี
      – เหมือนกับ L4 switch
      – ราคาของ WCCP router มักจะถูกกว่า L4 switch และบางครั้งก็มีมาพร้อมกับ L2/L3 switch เลย
      ข้อเสีย
      – proxy ต้องสนับสนุน WCCP protocol ด้วย

    8) In-line (or Bridge)<

      วิธีทำ
      – เป็น proxy ที่วางขวาง traffic ทั้งหมด ซึ่งบางผู้ผลิตจะทำเป็น firewall/ISP ที่เพิ่มความสามารถในการสแกนข้อมูลที่เป็น HTTP/HTTPS protocol
      ข้อดี
      – หากเป็นความสามารถเสริมของ firewall/IPS ก็เพียงแค่เรียกเปิดใช้งาน ไม่จำเป็นต้องติดตั้งอุปกรณ์เพิ่ม
      ข้อเสีย
      – หากต้องมี downtime อาจส่งผลกระทบให้ไม่สามารถใช้งานอินเทอร์เน็ตได้ทั้งองค์กรได้ หรือต้องใช้รุ่นที่มี hardware bypass traffic เวลาอุปกรณ์ไม่ทำงาน ซึ่งจะมีราคาสูง

DNS MX record หรือ Mail Exchanger Record เป็นข้อมูล DNS ชนิดหนึ่ง ซึ่งแทนที่จะใช้แปลงจาก Name เป็น IP เหมือนกับ DNS A record ทั่วไป แต่ MX record จะเป็นตัวบอกว่าเมล์เซิร์ฟเวอร์ของโดเมนของเราอยู่ที่เครื่องไหน เช่นหากต้องการรู้ว่า MX record ของโดเมน microsoft.com คือเครื่องไหนให้ใช้คำสั่ง

nslookup -qt=mx hotmail.com

จะมีผลลัพธ์แบบนี้

microsoft.com MX preference = 10, mail exchanger = mail.messaging.microsoft.com

หมายความว่า อีเมล์ที่ส่งหาโดเมน microsoft.com จะส่งไปที่เครื่องเซิร์ฟเวอร์ mail.messaging.microsoft.com หากอยากดูโดเมนอื่นก็ใส่โดเมนเข้าไปท้ายคำสั่งแทน


ซึ่งหากมี MX หลายๆ ตัวก็จะได้แบบนี้

hotmail.com MX preference = 5, mail exchanger = mx4.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx1.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx2.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx3.hotmail.com



นอกจากนี้ยังสามารถกำหนดลำดับโดยใช้ MX preference ได้ ซึ่งค่าที่น้อยที่สุดจะมีถูกใช้ก่อน ถ้าส่งไม่สำเร็จก็จะพยายามติดต่อไปยังเครื่องที่มี preference สูงขึ้นต่อไป เช่น

nectec.or.th MX preference = 20, mail exchanger = maildr.nectec.or.th
nectec.or.th MX preference = 10, mail exchanger = imail.nectec.or.th

เวลาทำงานเมล์เซิร์ฟเวอร์ต้นทางจะพยายามส่งไป imail ก่อน หากไม่สำเร็จจะส่งต่อไปยัง maildr


ตัวอย่างข้างล่างเป็น combo set หลายๆ MX ที่มี preference เท่ากัน และ preference ต่างกัน

ironport.com MX preference = 10, mail exchanger = soma-c601.ironport.com
ironport.com MX preference = 20, mail exchanger = soma-c602.ironport.com
ironport.com MX preference = 20, mail exchanger = cas1-c604.ironport.com
ironport.com MX preference = 10, mail exchanger = cas1-c603.ironport.com



เราสามารถเอามาประยุกต์ใช้กับการเปลี่ยน IP ของเมล์เกตเวย์หรือย้าย ISP ได้ด้วยนะครับ
สมมุติปัจจุบันเรามี MX เป็น

example.com MX preference = 30, mail exchanger = oldisp.example.com

สิ่งที่ต้องทำคือสร้าง MX เพิ่มล่วงหน้าซัก 1-2 วันก่อนเปลี่ยน และให้ preference น้อยกว่า

example.com MX preference = 30, mail exchanger = oldisp.example.com
example.com MX preference = 20, mail exchanger = newisp.example.com

ซึ่งระหว่างที่ยังใช้ IP เดิม ก็จะพยายามส่งมาที่ newisp.example.com แต่ไม่มีใครตอบ จึงพยายามส่งอีกครั้งไป oldisp.example.com และเมื่อเปลี่ยนมาใช้ IP ใหม่ ก็จะส่งเข้า newisp.example.com ได้เลย
และหลังจากที่เปลี่ยน ISP เรียบร้อยแล้ว มั่นใจว่าจะไม่ย้ายกลับก็ลบของเดิมออกได้ครับ

example.com MX preference = 20, mail exchanger = newisp.example.com

นอกจากนี้หากไม่ต้องการรอนานหลักวันอาจลดค่า TTL ของ MX record ให้เหลือเป็นหลักสิบนาที เพื่อให้ DNS server ในอินเทอร์เน็ตลดเวลาที่เก็บใน local cache ทำให้ผู้อื่นเห็นข้อมูลใหม่เร็วขึ้นก็ได้ครับ แต่จะมีโหลดเพิ่มขึ้นที่ DNS server ของเราได้ ทำให้บางครั้ง ISP อาจไม่ยอมคอนฟิกค่า TTL ให้ครับ

เนื่องจากทุก transaction จะต้องถูกเขียนลง log ก่อนที่จะลง data file ดังนั้นหาก transaction มีขนาดใหญ่ เช่น ลบหลาย record ขนาดรวม 5GB ก็จำเป็นต้องเขียน logs ขนาด 5GB แม้ว่าจะเป็น simple recovery model ก็ตาม นอกจากนี้จะทำให้เกิด I/O สูงมากด้วย ดังนั้นแนะนำให้ซอยเป็น transaction ย่อยๆ โดยใช้ TOP และ @@ROWCOUNT มาช่วยทำงานครับ ตัวอย่างตามข้างล่าง


DECLARE @Done BIT
SET @Done = 0
WHILE @Done = 0
  BEGIN
    DELETE TOP (20000) -- reduce if log still growing
      FROM SomeTable WHERE SomeColumn = SomeValue
    IF @@ROWCOUNT = 0
      SET @Done = 1
    CHECKPOINT -- marks log space reusable in simple recovery
  END

ที่มา http://stackoverflow.com/questions/1448857/there-must-be-a-way-to-delete-data-in-sql-server-w-o-overloading-the-log

Recover Model เป็นโหมดที่จะเลือกการเก็บ transaction logs ว่าจะเก็บอย่างไร
ซึ่งมีอยู่ 3 แบบ แต่ละแบบจะมีรายละเอียดต่างกันคือ
Full

    เก็บทุกอย่าง ปลอดภัยสุด
    ข้อดี
    – เก็บการเปลี่ยนแปลงทั้งหมด หาก database file เสียสามารถกู้คืนได้โดยใช้ transaction logs
    – สามารถ recovery แล้วเลือกเวลาที่ต้องการ (point in time recovery) เช่น database มีปัญหาตอน 12:30น. ดังนั้นสามารถ recovery ไปยังสถานะเมื่อเวลา 12:25 ก่อนที่จะมีปัญหาได้
    ข้อควรระวัง
    – transaction logs จะมีขนาดใหญ่มาก ต้อง backup logs สม่ำเสมอเพื่อป้องกันไม่ให้ logs file โตเกินไป

Simple

    ประหยัดพื้นที่ฮาร์ดดิสก์ที่สุด
    ข้อดี
    – transaction เมื่อ checkpoint แล้วจะลบออก transaction logs file ทำให้ logs file มีขนาดเล็ก
    ข้อควรระวัง
    – หาก database file เสีย ต้อง restore จาก backup เท่านั้น ไม่สามารถนำ transaction logs มา redo ได้
    – ไม่สามารถเลือกว่าจะ restore ไปยังเวลาที่ต้องการได้ restore ได้เฉพาะ ณ เวลาที่ backup เท่านั้น

Bulk-logged

    เหมาะกับงานพวก Analysis Service ที่ต้อง import data ขนาดใหญ่
    ข้อดี
    – เหมือนกับ full ยกเว้นไม่เก็บ transaction logs เวลาทำ bulk insert
    ข้อควรระวัง
    – เหมือนกับ full

โดยสามารถคอนฟิกจาก SQL Server Management Studio (SSMS) มีขั้นตอนดังนี้

    1) คลิ๊กขวาที่ Database Name ที่ต้องการ
    2) เลือก Properties จาก drop down menu
    3) เลือก Options ในกรอบด้านซ้ายมือ
    4) เปลี่ยน recovery model ตามที่ต้องการ
    5) กด OK เพื่อยืนยันการแปลี่ยนแปลง

เวลาเราเรียกใช้งาน SQL Server Management Studio (SSMS) จะพบว่า SQL Server นั้นมี database สร้างไว้อยู่แล้ว 4 DB เราจะเรียก DB เหล่านี้ว่า System Database ซึ่งประกอบไปด้วย

Master

    – เป็น database หลัก จะเป็นที่เก็บค่าคอนฟิกของ SQL server เช่น Instance configuration, login, linked server เป็นต้น และจะเป็น database ตัวแรกที่ถูกโหลดขึ้นมาเวลา SQL Server ทำงาน
    – ซึ่งถ้า Master database corrupt ล่ะก็ start service ไม่ขึ้นกันทีเดียว ดังนั้นแนะนำให้ backup Master database ไว้เป็นระยะๆ ด้วยนะครับ

TempDB

    – ตามชื่อเลยครับ เป็น database ชั่วคราว เช่นเป็นที่อยู่ของ temporary tables, พี่พัก result ที่ได้ระหว่าง join หลายๆ table, ที่พักตอน sort, row version สำหรับงาน snapshot
    – โดย TempDB จะถูกเคลียร์ที่ครั้งที่ SQL server start ดังนั้นจึงไม่จำเป็นต้อง backup TempDB
    – และเพื่อให้ SQL server ทำงานได้เร็วขึ้น แนะนำให้ย้าย TempDB ไปไว้ใน disk ลูกที่เร็วที่สุดครับ

Model

    – เป็น template database เช่นถ้าอยากให้ database ใหม่ที่สร้างหลังจากนี้มี table, store procedure, user หรืออื่นๆ อยู่ในทุก database ก็ให้มาสร้าง object เหล่านั้นไว้ใน Model database แต่จะไม่มีผลกับ database ที่เคยสร้างไว้ก่อนหน้าแล้วนะครับ มีผลกับของใหม่เท่านั้น

MSDB

    – ใช้เก็บคอนฟิกของ SQL Agent, SSIS package (หรือ DTS package ในสมัย SQL 2000) นอกจากนี้ยังเก็บข้อมูลประวัติ backup ไว้ด้วย ซึ่งจะมีประโยชน์มากเวลาต้องการรู้ว่า database ไหน backup ไปเมื่อไหร่

นอกจากนี้ยังมี system database อื่นๆ อีกขึ้นอยู่กับว่าได้ติดตั้งและใช้งานฟีเจอร์อื่นๆ หรือไม่ เช่น Resource, Distribution และ ReportServer

Microsoft SQL Server ยอมให้เรามี SQL Server Service หลายๆ ตัวได้ในเครื่องเซิร์ฟเวอร์เดียวกัน โดยใช้ฟีเจอร์ที่ชื่อว่า Named Instance ซึ่งเราสามารถตั้งชื่อ SQL instance แต่ละตัวแยกกันได้ โดยการเรียกใช้จะเป็น “ServerName\InstanceName” ซึ่งจะพ่วงชื่อ instance มาด้วย ต่างกับ default instance ที่อ้างแค่ชื่อเซิร์ฟเวอร์เปล่าๆ แบบนี้ “ServerName”

สำหรับการตั้งชื่อนั้นทำได้ตั้งแต่ตอนที่ติดตั้ง SQL Server โดยหากไม่ระบุ named instance จะได้ชื่อ instance เป็น MSSQLSERVER ซึ่งก็คือ default instance หรือชื่อเซิร์ฟเวอร์เปล่าๆ นั่นเอง และหากต้องการ instance เพิ่มก็แค่รัน setup.exe ซ้ำอีกครั้ง แล้วก็เลือกชื่อ instance ที่ไม่ซ้ำกับของเดิมครับ

ข้อควรระวังสำหรับผู้ใช้งาน SQL Express Edition
SQL Express Edition จะต่างกับของเสียเงินนิดนึงหากไม่ระบุชื่อ instance จะสร้าง named instance ที่ชื่อว่า SQLExpress ให้อัตโนมัติ ดังนั้นเวลาใช้งานก็ต้องอ้างเป็น “ServerName\SQLExpress” แต่ถ้าอยากได้ default instance ใน SQL Express Edition ก็ให้เลือกตั้งชื่อเป็น MSSQLSERVER แทน ก็จะได้ default instance เวลาใช้งานสามารถอ้างเป็นชื่อเซิร์ฟเวอร์เปล่าๆ ได้เลยครับ

ข้อดีของการมีหลาย SQL Instance ในเครื่องเดียว
1) สามารถติดตั้ง SQL Server ได้หลายเวอร์ชั่น หลาย Edition ในเซิร์ฟเวอร์เครื่องเดียวกัน เช่น
    1a) มี SQL 2008 R2 Standard สำหรับงาน production และมี SQL 2008 Express สำหรับทำเป็นระบบทดสอบในเครื่องเดียว
    1b) บางโปรแกรมต้องกำหนด collation พิเศษ ซึ่งอาจส่งผลกระทบต่อ database อื่นในกรณีที่มี instance เดียวได้
2) การบริหารจัดการและดูแลรักษาของแต่ละ Named Instance แยกจากกัน
    เช่น เวลาแพตช์ SQL Express ต้องมี downtime ก็ทำได้ โดยอีก instance ที่เป็น SQL Standard ก็ยังทำงานได้ตามปกติ

แล้วข้อควรระวังของหลาย instance ล่ะ
1) ใช้ทรัพยากรของเครื่องเซิร์ฟเวอร์มากกว่า มีหลาย database แต่ใช้ Instance เดียว
2) ต้องระวังเรื่อง Disk I/O throughput และ Network Bandwidth ของ instance ที่ใช้งานสูงอาจกระทบกับ instance อื่นได้
3) ภาระบริหารจัดการจะสูงขึ้นเพราะต้องดูแลหลายที่ เช่น แพตช์, login, permission ก็ต้องทำหลายที่
4) การคิด license
    4a) SQL 2005 – เฉพาะ processor license และ Enterprise server license ที่สามารถทำหลาย instance โดยไม่ต้องซื้อเพิ่มได้
    4b) SQL 2008 – ทั้ง processor license และ server license ไม่ว่าจะ edition ไหน ก็สามารถทำหลาย instance โดยไม่ต้องซื้อเพิ่มได้ อ่านเพิ่ม ที่นี่
    4c) SQL 2008 R2 – ยังไม่มีข้อมูล
    ดังนั้นเรื่อง License แนะนำให้ปรึกษากับไมโครซอฟท์หรือคนขายก่อนจะดีกว่าครับ

ใครที่ใช้ VMware คงคุ้นๆ กันหน้าจอติดตั้ง VMware Tools ที่จะถามว่าจะลงแบบไหน Typical, Complete หรือ Custom ความแตกต่างก็คือ
– Typical – ติดตั้งไดร์เวอร์ทุกอย่าง แต่สามารถใช้งานได้เฉพาะกับแพลตฟอร์มที่กำลังใช้งานอยู่เท่านั้น เช่นหากปัจจุบันใช้ VMware Workstation อยู่ เวลาย้ายไป ESXi ก็ต้อง update VMware Tools อีกครั้ง
– Complete – ติดตั้งไดร์เวอร์ทุกอย่างของทุกแพลตฟอร์ม สามารถย้ายจาก Workstation ไป ESXi ได้เลย โดยไม่จำเป็นต้อง update VMware Tools อีก เพราะไดร์เวอร์ของ ESXi ได้ติดตั้งไว้ล่วงหน้าเรียบร้อยแล้วแล้ว
– Custom – เราสามารถเลือกได้ว่าจะลงโมดูลไหนบ้าง

พูดถึงเรื่อง SQL Server ก็มักจะมีคำถามว่าทำอย่างไรถึงจะทำให้ SQL Server มี high availability คำตอบแรกๆ และง่ายๆ ก็จะเป็นทำ Cluster วันนี้เราจะมีดูกันว่าต้องมีอะไรบ้างครับ

Hardware
1) เครื่องคอมพิวเตอร์ 2 เครื่อง — แน่ล่ะสิทำ cluster ก็ต้องเป็น 2 เครื่อง active กะ stand-by
2) share storage — อันนี้ยากแล้ว ถ้าจะให้ดีประสิทธิภาพสูงก็หนีไม่พ้น SAN หรือถ้าอยากได้ของถูก iSCSI ก็ได้นะ แต่คุณภาพสู้ไม่ได้แน่นอน
3) ระบบ Active Directory — เนื่องจากทุก advanced solution ต้องพึ่ง AD ดังนั้น SQL Cluster ก็เช่นกัน

Software
1) Windows Server 2008 R2 Enterprise Edition 2 licenses — ขอย้ำว่า Enterprise นะ เพราะต้องทำ Microsoft Fail Over Cluster
2) Microsoft SQL Server 2008 R2 Standard Editon 2 license — ถ้าทำแค่ cluster 2 node ใช้แค่ standard ก็พอครับ แต่หากอยากได้มากกว่านั้น ก็คงต้องกัดฟันจ่ายเงินเพิ่มเป็น Enterprise Edition สำหรับของฟรี Express Edition หมดสิทธิ์กับงาน cluster ครับ
3) SQL CALs ตามจำนวน client ถ้าข้อที่แล้วซื้อเป็น processor license ก็ข้ามได้ครับ

วิธีการแบบคร่าวๆ
1) ติดตั้ง Windows Server ลงบนทั้ง 2 เครื่อง และ patch ต่างๆ
2) ติดตั้ง Fail Over Cluster ลงบน Windows ทั้ง 2 เครื่องก่อน (แนะนำว่าควรจะมี share storage สำหรับ quorum disk ด้วย) ขั้นตอนนี้ต้องเตรียม IP เผื่อสำหรับ Virtual IP ของ Fail Over Cluster ด้วยนะครับ
3) ติดตั้ง SQL Cluster โหนดแรก โดยเลือกจาก New SQL Server Failover Cluster Installation ในหน้า Install Wizard ของ SQL
4) ติดตั้ง SQL Cluster โหนดที่สอง คราวนี้เลือก Add node to a SQL Server failover cluster แทนครับ
5) ติดตั้ง service pack และ hotfix อันนี้พิศดารนิดนึง สมัย SQL 2005 ทำที่ active node แล้วมันจะส่งมาที่ passive node ให้เอง แต่พอ SQL 2008 เป็นต้นมา เราต้องทำที่ passive node ก่อน แล้ว failover แล้วค่อยกลับไปทำที่ active node ที่กลายเป็น passive ไปแล้วแทน แม้ว่าจะยุ่งยากขึ้น แต่ downtime ลดลงนะครับ

ปล. High Availability กับ SQL server ไม่ได้มีแค่ Cluster นะครับ ที่พูดกันเยอะเพราะทำง่ายสุดครับ เพราะยังมีหลายทางเลือกเช่น Replication, Log Shipping, Mirroring หรือแม้แต่ Virtualization ก็มีครับ

Simple Mail Transfer Protocol (SMTP) เป็นโพรโทคอลหรือกฏเกณฑ์ที่ใช้ในการส่งอีเมล์ โดยหากใช้ในอินเทอร์เน็ตจะทำงานอยู่บนพอร์ต TCP 25 และจะใช้ร่วมกับ DNS MX record เพื่อค้นหาเมล์เกตเวย์ของปลายทาง แต่หากใช้ส่งกันระหว่างเซิร์ฟเวอร์ภายในองค์กร อาจเปลี่ยนไปใช้พอร์ตอื่นนอกเหนือจาก TCP 25 ก็ได้เช่นกัน

เมล์เซิร์ฟเวอร์ที่กันในปัจจุบันสนับสนุนโพรโทคอล SMTP กันหมด แม้แต่ของซื้อของขายอย่าง Microsoft Exchange และ IBM Lotus Domino ซึ่งเวลาคุยกันภายในองค์กรจะใช้โพรโทคอลของตัวเอง แต่ถ้าต้องวิ่งออกอินเทอร์เน็ตก็ใช้ SMTP ซึ่งเป็นมาตรฐานกลางได้เหมือนกับค่ายโอเพ่นซอร์ส

เนื่องจากอายุอานามของ SMTP พอๆ กับอินเทอร์เน็ต ซึ่งเลยหลักสี่มานานแล้ว เลยทำให้ SMTP มีปัญหาสำคัญคือเรื่องความปลอดภัยที่ไม่ค่อยจะสู้ดีนัก เพราะข้อมูลที่ส่งกันด้วย SMTP จะเป็นตัวอักษรล้วน (plain text) ใครส่งจดหมายรักถึงใคร คนที่อยู่กลางทางอ่านได้หมด ดังนั้นจึงมีการปรับปรุงเป็น ESMTP โดยตัว E นั้นก็คือ Extended หรือ Enhanced หมายถึง SMTP เวอร์ชั่นปรับปรุงนั่นเอง โดยความสามารถที่เพิ่มเด่นๆ ก็จะเป็นการพิสูจน์ตนก่อนส่ง (user authentication) และการเข้ารหัสลับระหว่างที่ส่ง (SMTP over TLS)

หากใครจะลองส่งเมล์จาก telnet โดยใช้ SMTP ก็สามารถลองทำตามได้นะครับ

Telnet mailgateway.xyz.com 25

รอเซิร์ฟเวอร์ปลายตอบรับ จากนั้นก็ลองทำตามครับ S: หมายถึงเซิร์ฟเวอร์ปลายทาง C: หมายถึงไคลเอนท์ของเรา

S: 220 mailgateway.xyz.com
C: HELO mypc.abc.com
S: 250 Hello mypc.abc.com
C: MAIL FROM: <modplusplus@abc.com>
S: 250 Ok
C: RCPT TO: <somchai@xyz.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Mod++" <somchai@xyz.com>
C: To: "Somchai Saetung" <somchai@xyz.com>
C: Subject: Test
C:
C: Hello World
C: .
S: 250 Ok: queued as 123
C: QUIT
S: 221 Bye

เพียงเท่านี้เราก็สามารถส่งเมล์ได้โดยไม่ต้องง้อ Outlook แล้วครับ 😀

สมมุติว่าเราเป็นพนักงานของบริษัท abc จะส่งเมล์ไปยังบริษัท xyz การทำงานของระบบอีเมล์จะเริ่มตั้งแต่
1) เราเปิดโปรแกรม Outlook เขียนเมล์ถึง somchai@xyz.co.th โปรแกรมจะส่งเมล์ไปยังเมล์เซิร์ฟเวอร์ของเราก่อน
2) เมล์เซิร์ฟเวอร์ของเราจะส่งอีเมล์ไปให้เมล์เกตเวย์เพื่อตรวจสอบหาไวรัสและสแปม
3) เมล์เกตเวย์จะวิ่งไปถาม DNS server ว่าเมล์เกตเวย์ของผู้รับซึ่งก็คือ xyz.co.th อยู่ที่ไหน
4) เมล์เกตเวย์ของเราจะส่งอีเมล์ไปยังเมล์เกตเวย์ของผู้รับซึ่งก็คือ xyz.co.th
5) เมล์เกตเวย์ของผู้รับจะตรวจสอบไวรัสและสแปม ถ้าผ่านก็จะส่งต่อให้เมล์เซิร์ฟเวอร์ของผู้รับ
6) เพื่อผู้รับเปิดโปรแกรมอีเมล์ เมล์จะถูกโหลดจากเมล์เซิร์ฟเวอร์มาที่เครื่องไคลเอนท์และแสดงผล

Basic Email Flow Diagram

โอกาสหน้าจะมาพูดถึงแล้วถ้าเป็นฟรีอีเมล์อย่าง hotmail หรือ gmail จะต่างจากอีเมล์ของบริษัททั่วไปอย่างไร แล้วเจอกันครับ 😀