[R-PI4] ติดตั้ง OS และระบบ Network ให้กับ Cluster — Part 2

RPi4 Sep 26, 2021

[R-Pi4] ติดตั้ง OS และระบบ Network ให้กับ Cluster — Part 2

🌄Weekend !

พบกันต่อเลยน่ะครับทุกท่าน ในคราวที่แล้วเราได้ทำการประกอบเจ้า Raspberry Pi Cluster ไปแล้ว หากใครยังไม่ได้ติดตามก็สามารถย้อนไปอ่านก่อนได้ครับ ที่นี่เลย สำหรับวันนี้เราจะลุยต่อกันที่การติดตั้งระบบปฏบัติการ หรือ Operating System (OS) ให้กับบอร์ด Raspberry Pi4 แต่ละตัวกันครับ และจะพาท่านทั้งหลายเข้าสู่โลกเครือข่ายกันสักนิดนึง เพื่อให้บอร์ด Raspberry Pi คุยหากันเจอใน Cluster และออก Internet ได้ครับ

🔍 Preparation — OS

  1. ก่อนอื่นเราต้องมีอุปกรณ์ต่าง ๆ ดังนี้ครับ
(ซ้าย) USB Card readers — (ขวา) MircoSD card ขนาด 32GB และ 16GB
  • MicroSD card ที่มีขนาดอย่างน้อย 16GB ขึ้นไป ส่วน Class และความเร็วก็ขออย่างต่ำสัก UHS-I U1 Class 10 (แนะนำ)
  • USB Card readers (เอาไว้เขียน/อ่าน MicroSD Card)

ส่วนผมก็ได้เตรียม MicroSD Card เอาไว้แล้วครับ โดยผมได้เตรียมไว้ 2 ขนาด คือ 32GB และ 16GB อย่างล่ะ 2 อัน

2. ต่อไปเราจำเป็นต้องมีไฟล์ของระบบปฏิบัติการ หรือ OS โดยผมได้เลือกเจ้า Ubuntu Server 20.04.3 LTS แบบ 64bit มาใช้งานครับ ที่ต้องเป็น 64bit ไม่ใช่ 32bit เพราะใน cluster ของผมมีบอร์ด Raspberry Pi4 ที่มี RAM หรือ memory ขนาด 8GB อยู่ด้วย ถ้าเราใช้ OS แบบ 32bit อาจจะใช้ได้ไม่เต็มประสิทธิภาพหรืออาจมองเห็น RAM แค่ 3.5GB

เพิ่มเติม 32 bit กับ 64 bit แตกต่างกันอย่างไร ? อันที่จริงมันก็แตกต่างกันอยู่หลายส่วนแต่สิ่งที่อาจเห็นได้ชัดคือการอ้างถึง Physical memory address หรือที่อยู่ในการเก็บของมูลใน RAM นั่นเอง ถ้าเป็น 32bit ~ 2³² ~ 4GB(3.5G) address ส่วนหากเป็น 64 bit ~ 2⁶⁴ ก็จะได้ประมาณ 16 Exabytes addressซึ่งมากโขเลยแหละครับ ทั้งนี้การเลือกใช้ OS ที่เป็น 64bit ได้ก็ต้องไปดูที่ส่วนสำคัญ เช่น CPU หรือ Processor ด้วยครับว่ารองรับการทำงาน หรือ ถูกออกแบบมากให้ทำงานแบบ 64bit หรือไม่ ส่วนเจ้าบอร์ด Raspberry Pi4 model B ทุกรุ่นเป็น Processor ที่รองรับ 64bit ครับ (จริงๆ Raspberry Pi3 model B+ ซึ่งก็เป็น Cortex-A53 (ARMv8) ซึ่งก็เป็น processor 64 bit เช่นกันแต่ด้วยบนบอร์ดได้ออกแบบและใส่ RAM มาเพียง 1 GB จึงไม่เกิดประโยชน์เท่าไหร่นักที่จะลง OS 64bit ลงในบอร์ด pi เก่าๆ ถึงแม้ว่าอาจลงได้แต่ก็อาจจะใช้งานไม่ได้ด้วยซ้ำไป )

ต่อไปเราก็ไปดาวน์โหลด image จาก Install Ubuntu on a Raspberry Pi | Ubuntu

Website ของ Ubuntu.com สำหรับดาวน์โหลด OS image
(ซ้าย) Download 64 bit — Ubuntu Server 20.04.3 LTS

จากนั้นให้ท่านเลือกดาวน์โหลด Ubuntu Server 20.04.3 LTS ที่เป็น 64bit ตรงปุ่ม

“ Download 64 bit ”

(ซ้าย) ไฟล์ Image ที่พร้อมใช้งาน — (ขวา) ไฟล์ที่ดาวน์โหลดสำเร็จที่ถูกบีบอัดมา

เมื่อเราทำการดาวน์โหลดมาเสร็จสิ้นเราจะได้ไฟล์แบบบีบอัดมา (.xz /.zip /.rar) ก็ให้ท่านทำการแตกไฟล์หรือ Extract ไฟล์ออกมา เราก็จะได้ไฟล์ที่เป็น .img สำหรับการนำไปใช้งานในขั้นตอนต่อไปครับ

3. ต่อไปทำการดาวน์โหลด โปรแกรม Raspberry Pi Imager จาก Raspberry Pi OS — Raspberry Pi ซึ่งโปรแกรมนี้จะมีไว้สำหรับการเขียนไฟล์ Image ลงไปใน MicroSD Card ที่ผมเลือกใช้โปรแกรมนี้เพราะเป็น Official จาก raspberrypi.org เลยและใช้ง่าย + สะดวกด้วย

Website ของ raspberrypi.org สำหรับดาวน์โหลดโปรแกรม Raspberry Pi Imager

จากนั้นให้ท่านเลือกดาวน์โหลดโปรแกรม Raspberry Pi Imager ตามแต่ละระบบปฏิบัตการของท่านได้เลยครับ ของผมที่ใช้จะเป็น Windows

— และเมื่อทำการติดตั้งโปรแกรมเรียบร้อยแล้ว ตัวโปรแกรมก็จะมีหน้าตาประมาณนี้ครับ 👇

หน้าตาโปรแกรม Raspberry Pi Imager

🔨 Burn image to MicroSD card

  1. เริ่มจากนำ MicroSD card ใส่ USB Card readers แล้วเสียบไป PC หรือ Notebook ของท่าน

2. จากนั้นเปิดโปรแกรม Raspberry Pi Imager แล้วเลือกดังนี้

  • Operating System > CHOOSE OS > เลื่อนลงมาด้านล่างสุดแล้วเลือก Use custom > จากนั้นให้ท่านเลือกไฟล์ Image ที่ทำการแตกไฟล์เอาไว้แล้ว > เมื่อเลือกเสร็จกดปุ่ม open
  • Storage > CHOOSE STORAGE > จะปรากฏ USB Card readers ของท่านขึ้นมาก็ให้ท่านเลือก
ทำการเลือกไฟล์ image ที่ได้ทำการดาวน์โหลดและแตกไฟล์เอาไว้แล้วในตอนแรก
USB Card readers ที่ปรากฏขึ้นมา

3. เมื่อทำการเลือกทั้ง OS และ Storage เสร็จสิ้นแล้วให้ท่านกดปุ่ม WRITE จะเป็นการ burn OS image ลง MicroSD card ซึ่งตัวโปรแกรมจะทำการสร้างไฟล์ Boot และไฟล์ config ต่างๆ รวมไปถึงการแบ่ง partition ตัว MicroSD card ของเราด้วย โดยในขั้นตอนนี้ให้ท่านรอสักครู่นึง — จนเสร็จสิ้น

4. เมื่อโปรแกรมสิ้นสุดการทำงานแล้วตัว MicroSD card ก็จะถูกแบ่ง partition ออกเป็น system-boot (boot) และ Unallocated หรือ Drive G และ Drive I (ตรงชื่อ Drive อันนี้แตกต่างกันตามแต่ละเครื่องน่ะครับไม่ต้องตกใจ)

Partition ของ MicroSD card ที่ถูกแบ่งโดยโปรแกรม

5. ก็จะสิ้นสุดขั้นตอนการติดตั้ง OS ลงใน MicroSD Card เท่านี้ก็จะสามารถนำเอา MicroSD Card อันนี้ไปใส่ที่บอร์ด Raspberry Pi แล้ว Boot ใช้งานได้เลย

🔍 Preparation —Networking

มาถึงส่วนที่เชื่อมต่อกับระบบเครือข่าย หรือ Networking กันครับ สำหรับส่วนนี้ผมจะถือว่าเป็นส่วนสำคัญเลย เพราะจะเชื่อมต่อตัวบอร์ด Raspberry Pi แต่ละตัวเข้าหากัน แชร์ทรัพยากรกัน รวมไปถึงการแชร์ Storage ตลอดจนออก Internet โดยผมมีอุปกรณ์คร่าวๆ ที่ผมจะใช้งานมีดังนี้ครับ

  • Mikrotik RouterBoard 2011 (RB2011UiAS) : โดยผมจะเอามาใช้เป็น Router ในการทำ Routing รวมถึงเป็น Gateway ในการออก Internet ใน Cluster นี้
  • Gigabit Switch 8 port (L2 Manage) : อันนี้เป็น Switch สำหรับกระจายสัญญาณผ่านสาย Lan ไปยังทุกๆ บอร์ดใน Cluster ครับ ส่วนที่ผมเลือกเป็น L2 หรือ Layer 2 switch คือ ผมจะเอาไว้ลองเล่นพวก Vlan ด้วย
  • สาย Lan

อันนี้จะเป็น Diagram ของ Network / Subnet ที่ผมจะนำมาใช้งาน

Network Diagram ที่ผมใช้งาน
เมื่อเอาไปต่อจริงๆ ก็จะได้หน้าตาประมาณนี้ สำหรับการต่อสาย Lan

🔨 Config IP Address

สำหรับการกำหนดที่อยู่เครือข่าย หรือ IP Address ให้กับบอร์ด Raspberry Pi นั้นสามารถทำได้อยู่ 3 วิธี คือ

  1. กำหนด IP Address ลงไปในไฟล์ network-config โดยไฟล์นี้จะอยู้ใน partition system-boot ใน MicroSD Card ที่เรา burn เรียบร้อยแล้ว
  2. ให้ Mikrotik แจก DHCP (Dynamic Host Configuration Protocol) แล้ว Mark Static ใน IP > DHCP Server > Leases (วิธีนี้สำหรับผู้ที่ใช้งาน Mikrotik หรือมีพื้นฐานมาบ้าง หรือ กรณีที่มี Router ที่แจก DHCP ให้อยู่แล้ว)
  3. เสียบจอ เมาส์ คีย์บอร์ด แล้วกำหนดโดยใช้ netplan ตามปกติ (ผมไม่แนะนำวิธีนี้น่ะครับ เพราะผมขี้เกียจต่อทีล่ะตัว 5555+🤣 )

วิธีที่ 1 กำหนด IP Address ลงไปในไฟล์ network-config

  1. เริ่มแรกก็ให้ท่านเสียบ MicroSD Card ที่ทำการ burn เรียบร้อยแล้ว ของบอร์ด Raspberry Pi ที่ต้องการ เข้ากับ PC หรือ Notebook
  2. จากนั้นให้เข้าไปที่ partition ที่ชื่อว่า system-boot
ภายใน partition system-boot

3. ขั้นตอนต่อไปให้ท่านทำการหาไฟล์ที่ชื่อว่า network-config แล้วให้ใช้โปรแกรมพวก Text editor เช่น notepad , notepad++ ในการเปิดไฟล์ จะได้หน้าตาแบบนี้

4. ทำการปิดการรับ DHCP และกำหนด Static IP Address / Subnet / Gateway และ DNS Server ลงไปตามตัวอย่างด้านล่างนี้ครับversion: 2
eth0:
addresses:
- 10.50.0.10/24
gateway4: 10.50.0.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
optional: true

5. ก็ทำแบบนี้กับ MicroSD Card ที่จะนำไปใส่ใน Raspberry Pi Cluster ของเราทุกตัว เพียงเเค่นี้ Raspberry Pi ก็จะมี IP Address แล้วครับ

ทดลอง ping ไปหา 10.50.0.10 หลังจากนำ MicroSD Card ไปใส่ Raspberry Pi

วิธีที่ 2 ให้ Mikrotik แจก DHCP ให้กับ Raspberry Pi ใน Cluster

ส่วนใครสงสัยว่า Mikrotik คืออะไร ทำอะไรได้บ้างก็ลองหาๆ ในเน็ตดูครับ หรือถ้าว่างผมก็อ่านเขียนแยกไว้ให้เป็น Series สำหรับ Mikrotik เลย เพราะผมบอกเลยว่ามีอะไรให้เล่นเยอะมากครับ

  1. ก่อนอื่นก็เข้าโปรแกรม Winbox แล้ว Login เข้าไปในตัว Mikrotik ของเราครับ

2. จากนั้นให้ท่านสร้าง Bridge ของ Lan โดยให้ไปที่เมนู Bridge(1) > ในแท็บ Bridge ในคลิก + (2) > จากนั้นในช่อง Name (3)ในใส่เป็นชื่อที่ต้องการ ผมใส่เป็น LAN > สุดท้ายกด OK (4)

3. จากนั้นเราจะเพิ่ม Interface ลงไปใน Bridge โดยเริ่มจากไปที่แท็บ Ports(1) > แล้วกดที่เครื่องหมาย + (2) > เสร็จแล้วให้เลือก Interface (3) ที่เราต้องการจะเพิ่มลงใน Bridge (ถ้าตาม Diagram ของผมคือ ether3) > ส่วน Bridge (4) ก็ทำการเลือก Bridge ที่เราต้องการ หรือที่เราสร้างในขั้นตอนที่ 2. ของผมชื่อว่า LAN > สุดท้ายก็กด OK (5)

4. ต่อไปเราจะไปกำหนด Subnet และ IP Address ให้กับ Bridge ของเรากันครับ โดยไปที่เมนู IP (1) > Addresses (2) > คลิกที่เครื่องหมาย + (3) > จากนั้นในช่อง Address : (4) ให้เราทำการกำหนดเป็น IP Address ของ Bridge นี้ผมกำหนดเป็น 10.50.0.1/24 > จากนั้นเลือก Interface (5) ที่ต้องการกำหนด IP Address ให้ ของคือ LAN > จากนั้นกด OK (6)

5. ต่อไปเราจะเริ่มสร้างตัว DHCP Server กันครับโดยเริ่มจากไปที่เมนู IP (1) > DHCP Server (2) > จากนั้นให้กด DHCP Setup (3) จากนั้นก็กำหนดค่าต่างๆ ดังนี้

  • DHCP Server Interface : ให้ท่านเลือก interface ที่ต้องการจะทำการแจก ip ในที่นี้ผมจะเเจกเข้าไปใน Bridge ที่ชื่อ LAN ที่มี interface ether3 ของเราอยู่ใน Bridge จากนั้นกด Next (5)
  • DHCP Address Space : ให้ท่านกำหนด Subnet ลงไปของผมจะเป็น 10.50.0.0/24
  • Gateway for DHCP Network : กำหนด IP Address ที่ต้องการให้เป็น Gateway ของ DHCP นี้ โดยผมจะเลือกใช้เป็น 10.50.0.1 (IP เบอร์แรกของ Subnet หรือ IP Address ของ Bridge ที่เรากำหนดไว้ในขั้นตอนที่ 4 นั่นเอง)
  • Addresses to Give Out : กำหนดช่วง IP Address ที่ต้องการจะให้ DHCP แจกให้
  • DNS Server : กำหนด DNS Server ที่ต้องการแจก ผมใช้ Public DNS ของ Google คือ 8.8.8.8 กัย 8.8.4.4
  • Lease Time : กำหนดเวลาหมดอายุของ IP Address ผมกำหนดเป็น 1d 00:00:00 หรือ 1 วัน

6. จากนั้นกด Next ครั้งสุดท้ายจะปรากฎข้อความว่า “ Setup has completed successfully” เป็นอันเสร็จสิ้นการสร้าง DHCP Server บน Mikrotik

7. วิธีตรวจสอบว่า DHCP Server ของเราทำงานและแจก IP Address ให้กับบอร์ด Raspberry Pi ของเราไหม สามารถตรวจสอบได้จากแท็บ Leases ก็จะปรากฏให้เราเห็นว่าแจก IP Address ใดไปบ้าง และเราก็ยังสามารถกำหนดให้เป็นการแจก IP เดิมให้กับอุปกรณ์เสมือนเป็น Static ได้โดยการเลือก IP Address ที่ต้องการ (1) > คลิกขวาแล้วเลือก Make Static (2)

8. DHCP Server ก็จะแจก IP Address ให้กับ Cluster ได้แล้ว

บทสรุป

ผมก็ได้ทำการติดตั้ง OS ลงใน MicroSD Card และกำหนด IP Address ในกับ Raspberry Pi ในวิธีต่างๆ ซึ่งตอนนี้ Raspberry Pi ใน Cluster ก็จะมี IP กันหมดแล้ว ส่วนท่านใดจะกำหนด IP Address ด้วยวิธีการใดก็แล้วแต่ความสะดวกเลยครับ

เรียบร้อยแล้วครับ สำหรับการติดตั้ง OS และตั้งค่า IP Address ให้กับ Cluster ส่วนบทความหน้าเราก็จะเริ่มทำการตั้งค่าต่างๆ เเละเริ่มลง Software ที่เกี่ยวข้องกันครับท่านใดสนใจก็สามารถกดติดตามผมเอาไว้ได้ครับ ถถถ

ปล. ผมอาจจะลงช้าบ้างน่ะครับแต่ไม่นานเกินรอแน่ๆ 🤣 ค่อยๆ ทำไปเดี๋ยวเราก็จะได้ใช้งานแน่นอนครับ

Tags