ติดตั้ง Microsoft SQL Server 2017 Express และ Windows Server 2019 บน Azure Virtual Machine

Ponggun
T. T. Software Solution
7 min readMar 6, 2020

สวัสดีผู้อ่านทุกท่านน่ะครับ ^^

บทความก่อนหน้านี้ผมเคยแนะนำการสร้าง Ubuntu บน Azure Virtual Machine

ซึ่งในบทความนี้ก็จะคล้ายกันครับ แต่เปลี่ยน OS เป็น Microsoft Server แทนครับผม โดยจะแนะนำในรูปแบบของบันทึกการสร้าง Service ประเภท IaaS
(Infrastructure-as-a-service)
น่ะครับ

เราจะทำการสร้าง Windows Server บน Azure และเน้นรับผิดชอบในเฉพาะในส่วนของ Software เช่นการดูแล OS, ติดตั้ง Application ต่างๆ

ส่วนของ Hardware นั้นให้ทาง Microsoft ช่วยดูแลให้ครับ ทำให้เราลดเวลาที่ต้องดูแล Server ได้เช่นการเพิ่มลด Hard Disk

ภาพจาก robertgreiner.com
ภาพจาก azure.microsoft.com

ถ้าใครสนใจเนื้อหาประเภทของ Cloud Services ต่างๆ ผมขอแนะนำบทความจากสลัดผักน่ะครับ

Microsoft SQL Server ใน Azure มีอะไรบ้าง

Azure มีบริการ SQL Server หลายหลายรูปแบบเลยครับ แต่ในที่นี้จะขอยกหลักๆมา 3 บริการน่ะครับ

  1. SQL Databases (PaaS) เป็น Service ที่ผมแนะนำครับเพราะมีราคาที่ถูกที่สุด จัดการดูแลง่าย แต่ Database ที่เราจะนำมาติดตั้งนั้นต้องเป็น File ประเภท
    Data-tier Applications (.bacpac) เท่านั้น ซึ่งมีข้อดีคือสามารถ Export / Import ได้สะดวก
    แต่ก็มีข้อจำกัดเช่น ไม่สามารถทำการ query ข้าม database
    ทำให้ถ้าเรามีการเขียน Query ในลักษณะนี้ เราจำเป็นต้องแก้ไขให้ Database ให้สามารถ Export ในรูปแบบของ File .bacpac ก่อน ซึ่งเราเรียกขั้นตอนที่ต้องแก้ไขบางอย่างเพื่อให้ใช้งาน Cloud Service ว่า Cloud Optimized (Minimal Code Changes)
  2. SQL Managed Instances (PaaS) เป็น Service ที่มีราคาสูงกว่า SQL database แต่ยังได้ความเป็น PaaS เหมือนกันคือดูแลจัดการง่าย และลดข้อจำกัดจาก File ประเภท Data-tier Applications (.bacpac) โดยใน Service นี้เราสามารถ Restore Database จาก File Backup (.bak) ได้เลยโดยไม่ต้องแก้ไขอะไร Database เราเรียกขั้นตอนนี้ว่า Lift & Shift (No Code Change)
  3. SQL Virtual Machines (IaaS) เป็นการติดตั้ง SQL Server ลงบน Microsoft Server / Linux Server ครับ ซึ่งจะมีข้อเสียคือเราต้องดูแลมากกว่า 2 อย่างแรก เช่นการ Patch OS
    แต่จะช่วยเราควบคุมค่าใช้จ่ายได้สะดวกขึ้นถ้าเรามี Database อยู่แล้ว และยังไม่พร้อมที่จะแก้ไข Database เพื่อใช้กับแบบ SQL databases
    โดยราคาจะขึ้นกับ License ของ SQL ที่เราเลือกครับ ทำให้ถ้าเราอยากที่จะคุมค่าใช้จ่ายเพื่อลองออก MVP ก่อน เราอาจจะเริ่มต้นด้วย Free License ก่อน (Express Edition) ได้ครับ

แนะนำบทความจาก Microsoft ในการศึกษาเทคนิคการ Migrate to Cloud น่ะครับ

ทำไมถึงเลือกใช้ SQL virtual machines

ภาพเปรียบเทียบราคาทั้ง 3 SQL Services

เหตุผลที่ผมต้องเลือก SQL Virtual Machine มาจากเรื่องของระยะเวลาและค่าใช้จ่ายครับ

  • Database ของผมมีการเขียน Query Join ข้าม Database กัน ซึ่งผมยังไม่พร้อมที่จะแก้ไข Code ตรงนี้ ทำให้ผมไม่สามารถเลือก SQL Databases ได้ครับ
  • แต่ถ้าจะเลือก PaaS อีกแบบ คือ SQL Managed Instances ก็มีราคาเริ่มต้นทีสูงเกินไปเพราะราคาเริ่มต้นของ Database + VPN เพื่อต่อ Database
    ก็เกือบๆ 1,000 USD ต่อเดือนแล้วครับ
  • เลยกลับมาตัดสินใจเลือก SQL Virtual Machines เพื่อทำ MVP ในราคาเริ่มต้นที่พอรับไหวครับ

ขั้นตอนในบทความ

  1. Create Azure Resource Group
  2. Create Azure Virtual Machine with SQL Server 2017 Express Edition
  3. Configure Remote Desktop Connection
  4. Restore Database Backup
  5. Configure Remote Connect Database Server from Local Machine
  6. Configure Database Backup
  7. Configure Virtual Machine Backup
  8. Explore SQL Virtual Machines

1. Create Azure Resource Group

Resource Group จะเกี่ยวกับการจัดหมวดหมู่ของ Azure Resource เข้าด้วยกันเพื่อง่ายต่อการจัดการน่ะครับ เช่น สร้าง Group Dev สำหรับ Resource ทั้งหมดที่เกี่ยวกับ Development ซึ่ง เวลาลบเราสามารถลบได้ทั้ง Group เลยในครั้งเดียว

Region

  • ระบุตำแหน่งของ Data Center ที่เราจะติดตั้ง VM
  • แนะนำเลือก Southeast Asia ถ้าใช้ในไทยน่ะครับ เพราะใกล้ที่สุด
ภาพจาก https://azure.microsoft.com/

2. Create Azure Virtual Machine with SQL Server 2017 Express Edition

2.1 Basic Menu

Availability Options

Azure มี Availability สำหรับ VM เพื่อทำให้ระบบ High Availability ครับ โดยเราสามารถเลือกได้ตาม Options นี้

  • Availability Sets: ได้ SLA 99.95% ครับ โดย VM ของเราจะถูกสำรองไว้ที่ตำแหน่งอื่นๆ แต่จะยังอยู่ใน data center เดียวกันกับ VM ของเรา
  • Availability Zones: ได้ SLA 99.99% ครับ โดย VM ของเราจะถูกสำรองไว้ที่ตำแหน่งอื่นๆ ภายนอก data center แต่จะอยู่ใน Region เดียวกันกับ VM ของเราครับ ผม
Image from https://mwesterink.wordpress.com/

Images

  • เลือก MSSQL Express 2017 on Windows Server 2019
  • รายละเอียดสำหรับ SQL Server Edition ทั้งหมด ดูได้ที่บทความข้างล่างน่ะครับ

Size

  • เลือกขนาดความแรงของ Servers ครับ ราคาต่อเดือนก็จะสูงขึ้นตามประสิทธิภาพของเครื่องที่แรงขึ้นครับ (เราสามารถปรับเพิ่มลดหลังจากที่สร้าง VM แล้วได้ครับ)

Inbound Ports

  • เลือกเปิด Port 3389 เพื่อใช้งาน Remote Desktop

2.2 Disks

  • เลือก Premium SSD เพื่อ SLA 99.99%

2.3 Network

  • ทุกครั้งที่มีการสร้าง VM จำเป็นทีจะต้องเลือก Virtual Network (VNET) ที่จะใช้งานกับ VM โดย VNET จะช่วยให้ VM เชื่อมต่อกับเครือข่ายอินเทอร์เน็ตได้, ทำ Traffic Filtering คล้ายกับการทำ Firewall Rule ครับ ด้วย Service อีกตัวของ Azure ที่ชื่อ Network Security Group (NSG)
  • ซึ่งในตัวอย่างนี้จะเลือกสร้างใหม่น่ะครับ แต่ถ้าใครมี Virtual Network อยู่แล้วก็เลือกที่มีอยู่ได้เลยครับ

ใครสนใจเรื่อง Azure Network เพิ่มเติม ผมแนะนำบทความข้างล่างนี้น่ะครับ

2.4 Management

  • ปรับแต่งการ Monitor ระบบและความปลอดภัยครับ
  • แนะนำให้ติดตั้ง Azure Security Center เพื่อช่วยป้องกันและแนะนำช่องโหว่ในระบบของเราครับ ราคาดูได้ที่นี้น่ะครับ

2.5 SQL Server Settings

  • ในขั้นตอนติดตั้ง SQL Server นั้น Azure จะกำหนดให้เราสร้าง Disk ขึ้นมาใหม่เพื่อใช้จัดเก็บ SQL Data โดยเฉพาะ

3. Configure Remote Desktop Connection

3.1. ตั้งค่า DNS name

  • จะทำให้เราเข้าถึง Server ได้โดยไม่ต้องใช้ IP Address

3.2. Connect Server ด้วย Remote Desktop

  • Download RDP file (ซึ่งจะเห็นว่าตอนนี้ตัว File จะชี้ไปที่ DNS name ของเครื่องแล้วครับ)
  • Connect to server ด้วย RDP file
  • เราจะพบว่าในเครื่องเราจะมี 2 Drives โดย Drive C สำหรับ Windows
    และ Drive F สำหรับเก็บ SQL Data ครับ

4. Restore Database Backup

  • เราสามารถ Ctrl+c ที่ Backup DB File ในเครื่องเรา และนำไป Ctrl+v ที่ Server ได้เลยครับ
  • หลังจากนั้นก็ทำการ Restore Backup ตามปรกติ ด้วย Management Studio Tool ครับ เริ่มด้วยการหา Database ในเครื่องที่ต้องการต่อ
  • หลังจากนั้นก็ Restore Database จาก Backup File

5. Configure Remote Connect Database Server from Local Machine

  • หลังจากที่ได้ติดตั้งทั้ง Database Server และ Restore Databases เรียบร้อยแล้ว ให้เราทดลองใช้ Management Studio ในเครื่องของเราต่อ Database Server ครับ
  • โดยใช้ DNS + Port ที่เราระบุไว้ในตอนที่ติดตั้งตอนแรกครับ

6. Configure Database Backup

  • สามารถทำตามบทความที่ผมเคยเขียนไว้ก่อนหน้านี้ได้เลยครับผม

7. Configure Virtual Machine Backup

  • ใช้ Recovery Services vaults ที่ได้จากข้อ 6. Configure Database Backup เพื่อเป็นที่เก็บ Virtual Machine Backup
  • สร้าง Backup Policy ใหม่เพื่อสั่งให้ Backup VM ทุกๆ 1 สัปดาห์ครับ
  • เลือก VM เพื่อทำการ Backup
  • ผลลัพธ์จากการ Backup ทั้ง Database ใน Virtual Machine และตัว Virtual Machine เองครับ

8. Explore SQL Virtual Machines

  • เป็น Service ที่มีเพื่อให้เราสามารถ Configure SQL ที่เราติดตั้งใน Virtual Machine ได้สะดวกขึ้นผ่าน Azure Portal แทนการ Remote Desktop เข้าไปที่เครื่อง VM ครับ
  • เมื่อเข้ามาแล้วจะเห็นข้อมูลเบื้องต้นของ Server ทั้ง SQL Edition, VM Size, Windows OS Version รวมถึง Report การใช้ SQL Data
  • ถ้า Disk เหลือไม่พอ เราสามารถเพิ่มได้ที่เมนู Configure ครับ
  • ถ้าเราอยากแก้ไขการเข้าถึง Database ก็ทำได้ที่เมนู Security ครับ

สรุป

  • บทความเป็นบันทึกที่แนะนำประเภทของ SQL ใน Azure โดยพิจารณาจากคุณสมบัติและราคาของ Service แต่ล่ะประเภทรวมไปถึงเหตุผลที่ตัดสินใจเลือก SQL Virtual Machines (IaaS) ครับผม
  • เมื่อเลือกบริการได้แล้วก็แนะนำวิธีการติดตั้ง Microsoft SQL Server 2017 Express และ Windows Server 2019 บน Azure Virtual Machine
  • ระหว่างทางจะมีเกร็ดเล็กเกร็ดน้อยอธิบายเพิ่มเติมเพื่อให้เราเข้าใจ Options ต่างๆมากขึ้นครับ
  • เมื่อสร้าง VM ได้แล้วเราก็จะทำการ Restore Database ของเราไปอยู่บน VM นั้นครับ
  • ทำ Backup VM, Backup DB เพื่อมั่นใจว่าเราสามารถกู้ข้อมูลได้ถ้าเกิดข้อผิดพลาดขึ้นครับ
  • สุดท้ายจะพาลองดู Feaure ใหม่ของ Azure ให้เราจัดการ SQL VM ได้สะดวกขึ้นผ่าน Azure Portal ครับ

ขอบคุณมากๆครับผม
นายป้องกัน

--

--

Ponggun
T. T. Software Solution

Development Manager, Web Developer with ASP.Net, ASP.net Core, Azure and Microsoft Technologies