มาทำ WEB SERVER แบบ หลาย ๆ โหนด กันเถอะ ตอนที่ 2 (ลงมือทำ)

จากตอนที่แล้ว เรา ว่ากันไล่มาเรื่อยว่า จะใช้อ่ะไรทำจะออกแบบยังงัย แบบใหน หลังจากที่เรา จัดการออกแบบไว้ ทีนี้ เรามาลงรายล่ะเอียดแบบ ลงลึกกัน ผมกำหนด ข้อมูลทางด้าน NETWORK ดังนี้ครับ

Load balance + DATABASES+NFS
IP PUBLIC อันนี้ ขึ้นอยู่กับ VPS ที่เราเช่า
IP LOCAL 172.30.0.197 (อันนี้เป็นวงภายในที่ให้ WEB NODE ติดต่อกันเอง หรือจะใช้ IP PUBLIC ก็ได้ เวลาเช่า VPS มันมาให้อยู่ล่ะ)

WEB NODE 1
IP LOCAL 172.30.0.196

WEB NODE 2
IP LOCAL 172.30.0.198

ลงมือ ติดตั้ง Load balance + DATABASES+NFS
ลืมแจ้งไป ผมจะใช้ ubuntu server 14.04 ทั้งหมด เลยเป็น OS น่ะครับแต่ Linux อื่นๆ ก็สามารถทำได้เหมื่อนกันครับ
เอาล่ะ config กันเลย อันนี้ ทุก server ก่อนทำก็อัพเดท ให้มันทันสมัยเสียก่อน

ปล ก่อนทำ สั่ง sudo -i กด enter แปลงร่างเป็น root เสีย แบบว่าผมขี้เกียจมาใช้ sudo นำหน้าคำสั่งบ่อย ๆ

sudo -i
apt-get update

เสร็จแล้วก็มาต่อ ด้วย

การลง mysql server
sudo apt-get install mysql-server -y
ขั้นตอนการติดตั้ง mysql ขอผ่านน่ะครับ เนื่องจาก หาอ่านวิธีติดตั้งได้ตามซุปเปอร์มาเก็ตได้ทั้วไป “ ฮ่ะ” ม่ายช่าย เดียวเค้าจะนำเนอ การติดตั้งแยก ให้น่ะจ๊ะ ถ้าเหมามาใส่ตรงนี้มันจะดูยืดยาวไป เดียวทำให้เสียเวลาแอดมินไปเหล่สาว ๆ
อ่ะหลังจากติดตั้งเสร็จแล้ว มาแก้ไข config กันเสียก่อน จำได้มั้ยครับ ว่าเราแยก เว็บออกมาเป็น สองเครื่อง ฉนัน แล้วเราต้องเปิดให้ mysql นี่รับการคอนเน็ค มาจาก ตัว webserver ทั้งสองเครื่องนี้ได้ด้วยน่ะ

แก้ไขไฟล์ /etc/mysql/my.cnf จะใช้ nano หรือ vi ก็แล้วแต่สะดวกครับ ส่วนตัวชอบ nano มากกว่า
หาบรรทัด 
skip-external-locking
bind-address = 127.0.0.1
มันจะอยู่ แถว ๆ ใต้ บรรทัด[mysqld] ครับให้แก้เป็น
#skip-external-locking
#bind-address = 127.0.0.1

ใส่ # เพื่อเปิดให้มันสามารถรับการ connection จาก ภายนอกได้ อันนี้ ถ้าเซ็ต iptables เป็นก็ แนะนำให้ปิดการเข้าถึง พอร์ต 3306 จากขา wan ได้ก็จะดีมากมันจะได้รับการเชื่อมต่อจาก วงแลนภายใน อย่างเดียวจะปลอดภัยมากยิ่งขึ้น

เซ็ตแล้ว ก็ ทำการ servcie ใหม่ซะ
/etc/init.d/mysql restart

พักส่วน mysql ตรงนี้ไว้ก่อน เดียวจะวกมากล่าวต่อทีหลัง

ต่อ ที่มาทำ NFS FILES SERVER

ทีนี้ ก็มาทำ Files Server ลง NFS SERVER ซะ เวลา deploy หรือพวกเว็บที่อัพโหลดไฟล์ จะได้ไม่มีผล กับ การมีหลาย ๆ โหนด ส่วนนี้ เป็นไปได้ แนะนำ ให้ใช้ SSD เพื่อความแมฟ น่ะจ๊ะ

วิธีทำ สรุปมาจาก https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-14-04

apt-get install nfs-kernel-server -y
ทีนี้มาคอนฟิก ว่าให้มันแชร์ พื้นที่ตรงใหนบ้าง ตรงนี้ ผมตั้งไว้ที่ /data/www 
sudo mkdir -p /data/www
สร้างเสร็จ ก็กำหนดสิทธ์ เสียหน่อยให้ คนที่เขียนอ่านได้เป็นเจ้าของ service web เท่านั้น บน ubuntu ชื่อว่า www-data 
chown www-data:www-data /data/www

เรียบร้อยก็มาต่อด้วยการตั้งค่าแชร์ โดยแก้ไขไฟล์ /etc/exports
เพิ่มค่าว่าจะอนุญาติ ไอพีใหนสามารถมาแมปได้บ้าง อันนี้ ก็แอด ไป เป็นวง ของ web node เลย

อธิบาย

  • rw: คือบอกว่า ให้แมปแล้วเขียนอ่านได้ด้วยน่ะเอ่อ.
  • sync:มันจะทำการ เช็ค ค่าก่อนจะเขียนทำ คือ มันจะช้ากว่า แบบ async แต่ว่า ค่า error จะน้อยลง
  • 172.30.0.0/24 วงที่ ปล่อยให้แมป ไปใช้ได้

เซฟค่าเสร็จแล้วก็รัน service ใหม่เลย

exportfs -a
/etc/init.d/nfs-kernel-server restart

เรียบร้อย

ทีนี้เรามาแก้ในส่วน host file ใน /etc/hosts เวลาติดต่อกันมันจะได้ ข้ามขั้นตอนการcheck dns ในการคอนเน็ค โดยใส่ข้อความ นี้ในไฟล์ /etc/hosts ทั้งสามเครื่อง

172.30.0.197 LL-DB
172.30.0.198 WEB1
172.30.0.196 WEB2

หลังจากแก้และเซฟทั้งสามเครื่องทดสอบ ping เป็นชื่อต้องปิงได้อย่างถูกต้อง

เอาล่ะปิงได้แล้วทียี้เราไป จัดการที่เครื่อง WEB1 และ WEB2 ก่อน ในนี้จะแสดงการทำที่เว็บ WEB1 เครื่องเดียวน่ะเพราะการทำเหมื่อนกันเด๊ะ ๆ

มาที่เครื่อง WEB ทำการอัพเดท แล้วก็จัดการลง NFS client ซะ อย่าลืม sudo -i ก่อนน่ะจ๊ะ

apt-get update -y
apt-get install nfs-common -y
ลองทดสอบ mount มาใช้เลย
ก่อน mount ให้สร้างที่เม้าก่อน 
mkdir /www
mount LL-DB:/data/www /www

หลังจากใช้คำสั่ง mount ถ้าเรียบร้อย สั่ง df -h จะเห็นว่ามีการ mount เรียกใช้พื้นที่ เครื่อง NFS Server เพิ่มเข้ามา

จบในการ mount จากส่วนกลางทีนี้ เวลาอัพเดทหรือ แก้ไข code ก็สามารถ กำหนดทำที่เครื่องหลักได้เลย ง่ายสะดวกสะบายแฮ่ ๆ

ต่อ ตอนที่ 3 คลิก

A single golf clap? Or a long standing ovation?

By clapping more or less, you can signal to us which stories really stand out.