SIOS SANless clusters

SIOS SANless clusters High-availability Machine Learning monitoring

  • Home
  • Products
    • SIOS DataKeeper for Windows
    • SIOS Protection Suite for Linux
  • การทดสอบอาหารสัตว์
  • ข่าวสารและกิจกรรม
  • ทำให้เข้าใจง่ายเซิร์ฟเวอร์คลัสเตอร์
  • เรื่องราวความสำเร็จ
  • ติดต่อเรา
  • English
  • 中文 (中国)
  • 中文 (台灣)
  • 한국어
  • Bahasa Indonesia
  • ไทย

ทีละขั้นตอน: วิธีกำหนดค่าคลัสเตอร์ล้มเหลว Linux บนแพลตฟอร์ม Google Cloud (Google Compute Engine) โดยไม่มีที่เก็บข้อมูลที่ใช้ร่วมกัน #google #gce #sanless #cluster

Date: มกราคม 6, 2019

ทีละขั้นตอน: วิธีกำหนดค่าคลัสเตอร์ล้มเหลว Linux บนแพลตฟอร์ม Google Cloud (Google Compute Engine) โดยไม่มีที่เก็บข้อมูลที่ใช้ร่วมกัน #google #gce #sanless #cluster

ในขั้นตอนนี้ฉันจะแนะนำคุณในทุกขั้นตอนที่จำเป็นในการกำหนดค่าคลัสเตอร์ MySQL แบบ 2 โหนด (พร้อมเซิร์ฟเวอร์พยาน) ที่มีความพร้อมใช้งานสูงในแพลตฟอร์ม Google Cloud (Google Compute Engine หรือ GCE)  คำแนะนำประกอบด้วยภาพหน้าจอคำสั่งเชลล์และตัวอย่างโค้ดตามความเหมาะสม  ฉันคิดว่าคุณค่อนข้างคุ้นเคยกับแพลตฟอร์ม Google Cloud และมีบัญชีอยู่แล้ว  ถ้าไม่คุณสามารถสมัครทดลองใช้ฟรีวันนี้  ฉันจะสมมติว่าคุณมีทักษะการบริหารระบบพื้นฐานของ linux เช่นเดียวกับเข้าใจแนวคิดการทำคลัสเตอร์ failover พื้นฐานเช่น IP เสมือนโควรัม ฯลฯ

Disclaimer: เมฆเป็นเป้าหมายที่เคลื่อนไหวอย่างรวดเร็ว  ดังนั้นฟีเจอร์ / หน้าจอ / ปุ่มจะเปลี่ยนแปลงตลอดเวลาดังนั้นประสบการณ์ของคุณอาจแตกต่างจากที่คุณเห็นด้านล่างเล็กน้อย  ในขณะที่คู่มือนี้จะแสดงวิธีทำให้ฐานข้อมูล MySQL มีความพร้อมใช้งานสูงคุณสามารถปรับเปลี่ยนข้อมูลและกระบวนการเพื่อปกป้องแอปพลิเคชันหรือฐานข้อมูลอื่น ๆ เช่น SAP, PostgreSQL, Oracle, WebSphere MQ, ไฟล์เซิร์ฟเวอร์ NFS และอื่น ๆ นี่คือขั้นตอนระดับสูงในการสร้างฐานข้อมูล MySQL ที่มีอยู่ใน Google Compute Engine:

  1. สร้างโครงการ
  2. สร้างอินสแตนซ์ (เครื่องเสมือน)
  3. สร้างกลุ่มอินสแตนซ์
  4. สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าถึง VNC
  5. การกำหนดค่า Linux OS
  6. ติดตั้งและกำหนดค่า MySQL
  7. ติดตั้งและกำหนดค่าคลัสเตอร์
  8. สร้างเครื่องมือสร้างสมดุลภายใน
  9. สร้างกฎไฟร์วอลล์สำหรับตัวโหลดบาลานซ์ภายใน
  10. ทดสอบการเชื่อมต่อของคลัสเตอร์

ภาพรวม

บทความนี้จะอธิบายวิธีสร้างคลัสเตอร์ภายในภูมิภาค Google Cloud เดียว  โหนดคลัสเตอร์ (node1, node2 และเซิร์ฟเวอร์พยาน) ทั้งหมดจะอยู่ในพื้นที่“ us-central1” (10.128.0.0/20 เครือข่าย) แต่คุณสามารถเลือกภูมิภาคของคุณได้ การกำหนดค่าจะมีลักษณะดังนี้: จะใช้ที่อยู่ IP ต่อไปนี้:

  • node1: 10.128.0.2
  • node2: 10.128.0.3
  • พยาน: 10.128.0.4
  • ตัวโหลดบาลานซ์ภายใน: 10.128.0.99
  • พอร์ต MySQL: 3306

สร้างโครงการ

เมื่อลงชื่อเข้าใช้ครั้งแรกคุณจะเห็นหน้าแดชบอร์ดว่างเปล่าและจะถูกขอให้สร้างโครงการ  ทรัพยากร Google Compute Engine ทั้งหมดที่เราจะสร้างจะเป็นของโครงการ Google Cloud Platform นี้ ที่นี่เราจะเรียกโครงการ“ LinuxCluster” ที่สร้างขึ้นใหม่ของเรา:

สร้างอินสแตนซ์ (เครื่องเสมือน)

เราจะทำการจัดเตรียม 3 เครื่องเสมือนในคู่มือนี้  VMs สองรายการแรก (ฉันจะเรียกพวกเขาว่า "node1" และ "node2") จะทำหน้าที่เป็นโหนดคลัสเตอร์ที่มีความสามารถในการนำฐานข้อมูล MySQL และเป็นทรัพยากรที่เกี่ยวข้องทางออนไลน์  VM ที่ 3 จะทำหน้าที่เป็นเซิร์ฟเวอร์พยานของคลัสเตอร์สำหรับการป้องกันเพิ่มเติมจากสมองแยก เพื่อให้แน่ใจว่ามีความพร้อมใช้งานสูงสุด VMs ทั้ง 3 แห่งจะอยู่ในโซนต่างๆภายในภูมิภาค (ในตัวอย่างนี้: us-central1-a, us-central1-b, us-central1-c)

สร้าง“node1” อินสแตนซ์

สร้างอินสแตนซ์ VM แรกของคุณ (“ node1”)  หากนี่เป็นครั้งแรกที่คุณสร้างอินสแตนซ์หน้าจอของคุณจะมีลักษณะคล้ายกับภาพด้านล่าง คลิกปุ่ม“ สร้างอินสแตนซ์” ที่กึ่งกลางหน้าจอของคุณ: หากคุณมีอินสแตนซ์อื่นที่ทำงานอยู่ใน GCE แล้วหน้าจอของคุณจะดูแตกต่างออกไปเล็กน้อย  ยังคงคลิก "สร้างอินสแตนซ์" เพื่อดำเนินการต่อ: ตามค่าเริ่มต้น Debian linux จะถูกเลือกตามค่าเริ่มต้น  เรา * ไม่ต้องการสิ่งนี้เพราะเราจะใช้ CentOS 6.X ในคู่มือนี้ ตั้งชื่ออินสแตนซ์ (“ node1”) เลือกโซนแรก (a) ภายในภูมิภาคของเรา (us-central1) และตรวจสอบให้แน่ใจว่าได้คลิก“ เปลี่ยน” เพื่อเลือกอิมเมจสำหรับบูตที่เหมาะสม  คุณสามารถปรับขนาดอินสแตนซ์ตามความต้องการปริมาณงานของคุณ แต่สำหรับวัตถุประสงค์ของคู่มือนี้เราจะใช้ขนาดเริ่มต้นเพื่อลดค่าใช้จ่ายซึ่งเป็น VM ขนาดเล็กพอสมควร (1 vCPU และ RAM เพียง 3.75GB) ใน Boot disk pop บนหน้าจอเลือก CentOS 6 และที่ด้านล่างเราจะไปกับดิสก์สำหรับบูต SSD  10GB นั้นมากเกินพอสำหรับจุดประสงค์ของคู่มือนี้  คุณสามารถปรับขนาดระบบตาม: หลังจากคลิก“ เลือก” คุณจะถูกนำกลับไปที่หน้าจอสร้างอินสแตนซ์  ที่ด้านล่างคลิก“ การจัดการดิสก์เครือข่ายคีย์ SSH” เพราะเราจะเพิ่มดิสก์ที่สองใน VM ของเรา  ดิสก์ที่สองนี้จะถูกใช้เพื่อจัดเก็บฐานข้อมูลของเราและเป็นสิ่งที่จะถูกทำซ้ำ / ซิงค์ในภายหลังโดยซอฟต์แวร์การทำคลัสเตอร์   เลือกแท็บ“ ดิสก์” และคลิก“ เพิ่มรายการ” เพื่อเพิ่มดิสก์ตัวที่ 2 ในอินสแตนซ์นี้: คลิก“ สร้างดิสก์”: ตั้งชื่อดิสก์ใหม่เลือกประเภทที่ต้องการและเริ่มต้นด้วยดิสก์เปล่า  10 GB ควรเพียงพอสำหรับความต้องการของเราที่นี่ในการกำหนดค่าตัวอย่างนี้  หมายเหตุ: จำค่าที่คุณตั้งไว้ที่นี่  ทั้งโหนดคลัสเตอร์ (node1 และ node2) จำเป็นต้องเป็นขนาดเดียวกัน: ในที่สุดคลิกแท็บ“ ระบบเครือข่าย” และให้ IP ภายในลูกค้าของโหนด 1 คลิก "สร้าง" เพื่อเปิดตัวอินสแตนซ์ใหม่ของคุณ:

สร้าง“ node2”

ทำซ้ำขั้นตอนด้านบนสองครั้งเพื่อสร้างโหนดคลัสเตอร์ที่สองของคุณ (“ node2”)  สร้างอินสแตนซ์นี้เช่นเดียวกับที่คุณทำ node1 รวมถึงการเพิ่มดิสก์ที่สอง สำคัญ: ตรวจสอบให้แน่ใจว่ามันอยู่ในโซนอื่น (us-central1-b) และให้ IP ที่ไม่ซ้ำกัน (10.128.0.3)

สร้าง VM "พยาน"

สร้าง VM ที่สามของคุณ (“ พยาน”) และตรวจสอบให้แน่ใจว่าอยู่ในโซนที่แตกต่าง (us-central1-c) จากสองอินสแตนซ์แรก หมายเหตุ: อินสแตนซ์นี้ไม่จำเป็นต้องเพิ่มดิสก์เสริม อาจใช้เวลาสักครู่สำหรับอินสแตนซ์ VM 3 ของคุณในการจัดเตรียม  เมื่อเสร็จแล้วคุณจะเห็นรายชื่อ VMs ของคุณบนหน้าจอ VM Instances ภายใน Google Cloud Console ของคุณ  ตรวจสอบว่าคุณเปิดใช้ VM อย่างถูกต้องในโซนอื่น:  

สร้างกลุ่มอินสแตนซ์

ต่อไปในคู่มือนี้เราจะสร้าง Internal Load Balancer เพื่อกำหนดเส้นทางทราฟฟิกไปยังโหนดคลัสเตอร์ที่ใช้งานอยู่  การกำหนดค่าโหลดบาลานเซอร์ที่เป็นไปได้ทั้งหมดที่มีอยู่บนแพลตฟอร์ม Google Cloud ต้องการกลุ่มอินสแตนซ์เพื่อรับส่งข้อมูลที่ส่งจากโหลดบาลานซ์ กลุ่มอินสแตนซ์สองกลุ่มจะถูกสร้างขึ้นและแต่ละกลุ่มจะมีโหนดคลัสเตอร์หนึ่งโหนด

สร้างกลุ่มอินสแตนซ์ 1

ตั้งชื่อกลุ่มอินสแตนซ์แรกของคุณ (“ instance-group-1a”) เลือก“ Single-zone” และตรวจสอบให้แน่ใจว่าได้เลือกโซนที่ VM อินสแตนซ์แรกของคุณตั้งอยู่อย่างถูกต้อง  ที่นี่เราเลือก us-central-1a เนื่องจากเป็นจุดที่“ node1” ถูกปรับใช้  ด้านล่างเลือก“ เลือกอินสแตนซ์ที่มีอยู่” และเลือก“ node1” จากดรอปดาวน์ VM อินสแตนซ์:

สร้างกลุ่มอินสแตนซ์ 2

ทำซ้ำขั้นตอนก่อนหน้าอีกครั้งคราวนี้เลือกโซนที่โหนดที่สองของคุณตั้งอยู่  us-central-1b และ node2:

สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าถึง VNC

คุณสามารถดูกฎไฟร์วอลล์ที่มีอยู่ทั้งหมดของคุณได้โดยไปที่: ระบบเครือข่าย -> กฎไฟร์วอลล์โดยค่าเริ่มต้นเฉพาะพอร์ตที่เปิดใน“ ไฟร์วอลล์ Google” จากโลกภายนอกสู่ VMs ของคุณคือ ping, SSH (พอร์ต 22) และ RDP ( พอร์ต 3389) ต่อมาในคำแนะนำเราจะใช้ VNC เพื่อเข้าถึงเดสก์ท็อปของ "node1" และกำหนดค่าคลัสเตอร์โดยใช้ GUI  สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าถึง VNC  ในคู่มือนี้มีการใช้พอร์ต 5902  ปรับสิ่งนี้ตามการกำหนดค่า VNC ของคุณ  

การกำหนดค่า Linux OS

ต่อไปเราจะต้องกำหนดค่า Linux OS ของอินสแตนซ์ของเราและทำให้มือของเราสกปรกในบรรทัดคำสั่งซึ่งในฐานะผู้ดูแลระบบ Linux ที่คุณควรใช้ในตอนนี้ มีหลายวิธีในการเชื่อมต่อกับคอนโซลของ linux VM ของคุณ  คุณสามารถเริ่มต้นการเชื่อมต่อ SSH ได้โดยตรงจากเว็บอินเตอร์เฟส GCE หรือคุณสามารถติดตั้ง Google Cloud SDK ในเครื่องแล็ปท็อป / เวิร์กสเตชันของคุณ ในการใช้ SSH ด้วยเบราว์เซอร์ของคุณไปที่ Compute -> VM Instances และทางด้านขวาของ VM ที่คุณต้องการเชื่อมต่อภายใต้“ Connect” เลือก“ Open in window browser” หากคุณต้องการติดตั้งเครื่องมือบรรทัดคำสั่ง Google Cloud บนแล็ปท็อป / เวิร์กสเตชันของคุณโปรดดูเอกสารประกอบที่นี่: https://cloud.google.com/sdk/docs/quickstarts เมื่อเชื่อมต่อใช้คำสั่ง“ sudo” เพื่อ รับสิทธิ์รูท:

$ sudo su -

แก้ไข / etc / hosts

นอกจากว่าคุณมีการตั้งค่าเซิร์ฟเวอร์ DNS อยู่แล้วคุณจะต้องการสร้างรายการไฟล์โฮสต์บนเซิร์ฟเวอร์ทั้ง 3 แห่งเพื่อให้พวกเขาสามารถแก้ไขซึ่งกันและกันได้อย่างถูกต้องด้วยชื่อเพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์ / etc / hosts

10.128.0.2 node1
10.128.0.3 node2
10.128.0.4 พยาน
10.128.0.99 mysql-vip

ปิดการใช้งาน SELinux

แก้ไข / etc / sysconfig / linux และตั้งค่า“ SELINUX = ปิดใช้งาน”:

# vi / etc / sysconfig / selinux

# ไฟล์นี้ควบคุมสถานะของ SELinux บนระบบ
# SELINUX = สามารถใช้หนึ่งในสามค่าต่อไปนี้:
# enforcing - บังคับใช้นโยบายความปลอดภัยของ SELinux
# permissive - SELinux พิมพ์คำเตือนแทนที่จะบังคับใช้
# disabled - ไม่มีการโหลดนโยบาย SELinux
SELINUX = คนพิการ
# SELINUXTYPE = สามารถรับหนึ่งในสองค่าต่อไปนี้:
# เป้าหมาย - กระบวนการเป้าหมายได้รับการคุ้มครอง
# mls - การป้องกันความปลอดภัยหลายระดับ
SELINUXTYPE = การกำหนดเป้าหมาย

ติดตั้งแพ็กเกจ RPM ต่างๆ

ถัดไปติดตั้งแพ็กเกจ rpm จำนวนหนึ่งซึ่งจะต้องใช้ในภายหลังเป็นข้อกำหนดเบื้องต้นสำหรับซอฟต์แวร์การทำคลัสเตอร์ของเรา:

# yum ติดตั้งแพทช์ redhat-lsb

ติดตั้งและกำหนดค่า VNC (และแพ็คเกจที่เกี่ยวข้อง)

ในการเข้าถึง GUI ของเซิร์ฟเวอร์ linux ของเราในภายหลังเพื่อกำหนดค่าคลัสเตอร์ของเราให้ติดตั้งเซิร์ฟเวอร์ VNC บนโหนดคลัสเตอร์ของคุณ  ในการตั้งค่าของฉันฉันทำสิ่งนี้กับ "node1" เท่านั้น

# yum ติดตั้ง tigervnc-server xterm
# vncpasswd
# vi / etc / sysconfig / vncservers

      VNCSERVERS = "2: ราก"
      VNCSERVERARGS [2] = "- รูปทรงเรขาคณิต 1024x768"

# บริการ vncserver เริ่มต้น
# chkconfig vncserver เปิด

ทดสอบการเชื่อมต่อโดยการเปิดไคลเอนต์ VNC บนแล็ปท็อป / เดสก์ท็อปของคุณและเชื่อมต่อกับ Public IP ของโหนดคลัสเตอร์ของคุณ

รีบูตคลัสเตอร์โหนด

รีบูตเพื่อให้ SELinux ถูกปิดใช้งาน ระบบทั้งหมด 3 ระบบ (โหนด 1, โหนด 2, พยาน) ต้องถูกรีบูต

การแบ่งพาร์ติชันและฟอร์แมตดิสก์“ data”

ในระหว่างการสร้างอินสแตนซ์ VM จะมีการเพิ่มดิสก์พิเศษในแต่ละโหนดคลัสเตอร์เพื่อเก็บข้อมูลแอปพลิเคชันที่เราจะปกป้อง  ในกรณีนี้มันเป็นฐานข้อมูล MySQL การกำหนดค่าดิสก์ของ VMs ของเรามีดังนี้:

  • / dev / sda – ดิสก์ระบบปฏิบัติการ
  • / dev / sdb – ดิสก์ข้อมูล

ดิสก์ที่สองถูกเพิ่มระหว่างการสร้างอินสแตนซ์ / dev / sdb  คุณสามารถเรียกใช้คำสั่ง“ fdisk -l” เพื่อตรวจสอบ  คุณจะเห็นว่า / dev / sda (OS) มีพาร์ติชั่นดิสก์อยู่แล้วและกำลังใช้งานอยู่

# fdisk -l

ดิสก์ / dev / sda: 10.7 GB, 10737418240 ไบต์
255 หัว, 63 ส่วน / เส้นทาง, 1305 กระบอกสูบ
หน่วย = ไส้กุญแจ 16065 * 512 = 8225280 ไบต์
ขนาดเซกเตอร์ (ตรรกะ / กายภาพ): 512 ไบต์ / 4096 ไบต์
ขนาด I / O (ต่ำสุด / เหมาะสมที่สุด): 4096 ไบต์ / 4096 ไบต์
ตัวระบุดิสก์: 0x00035e98

 การบูตอุปกรณ์เริ่มต้น End Ids Id System
/ dev / sda1 * 1 1306 10484736 83 Linux

ดิสก์ / dev / sdb: 10.7 GB, 10737418240 ไบต์
64 หัว, 32 ส่วน / เส้นทาง, 10240 กระบอก
หน่วย = ภาชนะบรรจุ 2048 * 512 = 1048576 ไบต์
ขนาดเซกเตอร์ (ตรรกะ / กายภาพ): 512 ไบต์ / 4096 ไบต์
ขนาด I / O (ต่ำสุด / เหมาะสมที่สุด): 4096 ไบต์ / 4096 ไบต์
ตัวระบุดิสก์: 0x762b810b


ที่นี่เราจะสร้างพาร์ติชัน (/ dev / sdb1) จัดรูปแบบและเมานต์ที่ตำแหน่งเริ่มต้นสำหรับ MySQL ซึ่งเป็น / var / lib / mysql  ทำขั้นตอนต่อไปนี้บนทั้ง“ node1” และ“ node2”:

# fdisk / dev / sdb
คำสั่ง (m สำหรับความช่วยเหลือ): n
การกระทำคำสั่ง
e ขยาย
p พาร์ติชันหลัก (1-4)
พี
หมายเลขพาร์ติชัน (1-4): 1
กระบอกแรก (1-1305 ค่าเริ่มต้น 1): <enter>
ใช้ค่าเริ่มต้น 1
ไส้กุญแจทรงกระบอกกระบอกสูบหรือขนาด {K, M, G} (1-1305, ค่าเริ่มต้น 1305): <enter>
ใช้ค่าเริ่มต้น 1305
 
คำสั่ง (m สำหรับความช่วยเหลือ): w
มีการเปลี่ยนแปลงตารางพาร์ติชัน!
การเรียก ioctl () เพื่ออ่านตารางพาร์ติชันอีกครั้ง
กำลังซิงค์ดิสก์
[root @ node1 ~] #

# mkfs.ext4 / dev / sdb1
# mkdir / var / lib / mysql

บนโหนด 1 ให้เมาต์ระบบไฟล์:

# mount / dev / sdb1 / var / lib / mysql

ติดตั้งและกำหนดค่า MySQL

จากนั้นติดตั้งแพคเกจ MySQL เริ่มต้นฐานข้อมูลตัวอย่างและตั้งค่ารหัสผ่าน "root" สำหรับ MySQL

บน“ node1”:

# yum -y ติดตั้ง mysql mysql-server
# / usr / bin / mysql_install_db --datadir = "/ var / lib / mysql /" --user = mysql
# mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 - ข้อมูล = / var / lib / mysql --log &
#
# # หมายเหตุ: คำสั่งถัดไปนี้อนุญาตการเชื่อมต่อระยะไกลจากโฮสต์ใด ๆ  ไม่ใช่ความคิดที่ดีสำหรับการผลิต!
# echo "อัปเดตผู้ใช้ตั้งค่า Host = '%' โดยที่ Host = 'node1'; สิทธิ์ล้าง" | mysql mysql
#
# #Set รหัสผ่านรูทของ MySQL เป็น 'SIOS'
# echo "อัปเดตชุดผู้ใช้รหัสผ่าน = PASSWORD ('SIOS') โดยที่ User = 'root'; สิทธิ์ล้าง" | mysql mysql

สร้างไฟล์คอนฟิกูเรชัน MySQL เราจะวางสิ่งนี้ลงในดิสก์ข้อมูล (ซึ่งจะถูกจำลองแบบในภายหลัง – /var/lib/mysql/my.cnf)  ตัวอย่าง:

# vi /var/lib/mysql/my.cnf

[mysqld]
datadir = / var / lib / MySQL
ซ็อกเก็ต = / var / lib / MySQL / mysql.sock
pid = ไฟล์ / var / lib / MySQL / mysqld.pid
ผู้ใช้ = ราก
พอร์ต = 3306
# แนะนำให้ปิดการใช้งานลิงก์สัญลักษณ์เพื่อป้องกันความเสี่ยงด้านความปลอดภัยที่หลากหลาย
สัญลักษณ์การเชื่อมโยง = 0
 
[mysqld_safe]
เข้าสู่ระบบข้อผิดพลาด = / var / log / mysqld.log
pid = ไฟล์ / var / ทำงาน / mysqld / mysqld.pid
 
[ลูกค้า]
ผู้ใช้ = ราก
รหัสผ่าน = SIOS

ลบไฟล์การกำหนดค่า MySQL ดั้งเดิมซึ่งอยู่ใน / etc หากมีอยู่:

# rm /etc/my.cnf

บน“ node2”:

บน“ node2” คุณจะต้องติดตั้งแพ็คเกจ MySQL เท่านั้น  ขั้นตอนอื่น ๆ ไม่จำเป็น:

[root @ node2 ~] # yum -y ติดตั้ง mysql mysql-server

ติดตั้งและกำหนดค่าคลัสเตอร์

ณ จุดนี้เราพร้อมที่จะติดตั้งและกำหนดค่าคลัสเตอร์ของเรา  SIOS Protection Suite สำหรับ Linux (aka SPS-Linux) จะใช้ในคู่มือนี้เป็นเทคโนโลยีการทำคลัสเตอร์  มันมีทั้งฟีเจอร์การคลัสเตอร์ล้มเหลวที่มีความพร้อมใช้งานสูง (LifeKeeper) รวมถึงการจำลองข้อมูลระดับบล็อกแบบเรียลไทม์ (DataKeeper) ในโซลูชันเดียวที่รวมเข้าด้วยกัน  SPS-Linux ช่วยให้คุณสามารถปรับใช้คลัสเตอร์“ SANLess” หรือที่เรียกว่าคลัสเตอร์“ ไม่มีอะไรที่ใช้ร่วมกัน” ซึ่งหมายความว่าโหนดคลัสเตอร์ไม่มีที่เก็บข้อมูลใด ๆ ที่ใช้ร่วมกันเช่นเดียวกับ Azure VM

ติดตั้ง SIOS Protection Suite สำหรับ Linux

ทำขั้นตอนต่อไปนี้บน ALL 3 VMs (node1, node2, พยาน): ดาวน์โหลดไฟล์อิมเมจการติดตั้ง SPS-Linux (sps.img) และขอรับใบอนุญาตทดลองใช้งานหรือซื้อสิทธิ์ใช้งานถาวร  ติดต่อ SIOS เพื่อรับข้อมูลเพิ่มเติม คุณจะวนลูปติดตั้งและรันสคริปต์“ การตั้งค่า” ภายในเช่นเดียวกับรูท (หรือ“ sudo su -” เพื่อรับรูทเชลล์) ตัวอย่าง:

# mkdir / tmp / install
# mount -o loop sps.img / tmp / install
# cd / tmp / install
# ./ติดตั้ง

ระหว่างสคริปต์การติดตั้งคุณจะได้รับแจ้งให้ตอบคำถามจำนวนหนึ่ง  คุณจะกด Enter บนเกือบทุกหน้าจอเพื่อยอมรับค่าเริ่มต้น  สังเกตข้อยกเว้นต่อไปนี้:

  • บนหน้าจอชื่อ“ High Availability NFS” คุณอาจเลือก“ n” เนื่องจากเราจะไม่สร้างเซิร์ฟเวอร์ NFS ที่มีความพร้อมใช้งานสูง
  • ในตอนท้ายของสคริปต์การตั้งค่าคุณสามารถเลือกที่จะติดตั้งรหัสสัญญาอนุญาตรุ่นทดลองใช้ทันทีหรือใหม่กว่า เราจะติดตั้งรหัสลิขสิทธิ์ในภายหลังเพื่อให้คุณสามารถเลือก“ n” ได้อย่างปลอดภัยในจุดนี้
  • ในหน้าจอสุดท้ายของ“ การตั้งค่า” เลือก ARKs (ชุดกู้คืนแอพพลิเคชั่นเช่น "ตัวแทนตัวแทน") ที่คุณต้องการติดตั้งจากรายการที่แสดงบนหน้าจอ
    • ARK จำเป็นต้องใช้กับ“ node1” และ“ node2” เท่านั้น  คุณไม่จำเป็นต้องติดตั้งใน "พยาน"
    • นำทางรายการด้วยลูกศรขึ้น / ลงและกด SPACEBAR เพื่อเลือกรายการต่อไปนี้:
      • lkDR – DataKeeper สำหรับ Linux
      • lkSQL – ชุดการกู้คืน LifeKeeper MySQL RDBMS
    • สิ่งนี้จะส่งผลให้มีการติดตั้ง RPM เพิ่มเติมต่อไปนี้บน“ node1” และ“ node2”:
      • Steeleye-lkDR-9.0.2-6513.noarch.rpm
      • Steeleye-lkSQL-9.0.2-6513.noarch.rpm

ติดตั้งแพ็คเกจ Witness / Quorum

แพคเกจการสนับสนุน Quorum / Witness Server สำหรับ LifeKeeper (steeleye-lkQWK) รวมกับกระบวนการ failover ที่มีอยู่ของแกน LifeKeeper ช่วยให้การล้มเหลวของระบบเกิดขึ้นพร้อมความมั่นใจในสถานการณ์ที่เครือข่ายล้มเหลวทั้งหมด สิ่งนี้มีประสิทธิภาพหมายถึงการล้มเหลวสามารถทำได้ในขณะที่ลดความเสี่ยงของสถานการณ์ "สมองแตก" อย่างมาก ติดตั้ง Witness / Quorum rpm บนทั้ง 3 โหนด (โหนด 1, โหนด 2, พยาน):

# cd / tmp / install / quorum
# rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm

บนโหนดทั้ง 3 (node1, node2, พยาน), แก้ไข / etc / default / LifeKeeper, ตั้งค่า NOBCASTPING = 1 เฉพาะเซิร์ฟเวอร์ Witness (“ พยาน”), แก้ไข / etc / default / LifeKeeper, ตั้งค่า WITNESS_MODE = off / none

ติดตั้งรหัสสิทธิ์การใช้งาน

บนทั้ง 3 โหนดใช้คำสั่ง“ lkkeyins” เพื่อติดตั้งไฟล์ลิขสิทธิ์ที่คุณได้รับจาก SIOS:

# / opt / LifeKeeper / bin / lkkeyins <path_to_file> / <filename> .lic

เริ่ม LifeKeeper

บนทั้ง 3 โหนดใช้คำสั่ง“ lkstart” เพื่อเริ่มซอฟต์แวร์คลัสเตอร์:

# / opt / LifeKeeper / bin / lkstart

ตั้งค่าการอนุญาตผู้ใช้สำหรับ LifeKeeper GUI

บนทั้ง 3 โหนดให้แก้ไข / etc / group และเพิ่มผู้ใช้“ tony” (หรือชื่อผู้ใช้ใด ๆ ที่คุณเข้าสู่ระบบเป็น) ไปยังกลุ่ม“ lkadmin” เพื่อให้สามารถเข้าถึง LifeKeeper GUI  โดยค่าเริ่มต้นเฉพาะ“ รูท” เป็นสมาชิกของกลุ่มและเราไม่มีรหัสผ่านรูทใน:

# vi / etc / group

lkadmin: x: 502: ราก tony

เปิด LifeKeeper GUI

สร้างการเชื่อมต่อ VNC ไปยัง Public IP address ของ node1  จากการกำหนดค่า VNC และ Firewall Rule จากด้านบนคุณจะต้องเชื่อมต่อกับ <Public_IP>: 2 โดยใช้รหัสผ่าน VNC ที่คุณระบุไว้ก่อนหน้านี้  เมื่อเข้าสู่ระบบเปิดหน้าต่างเทอร์มินัลและเรียกใช้ LifeKeeper GUI โดยใช้คำสั่งต่อไปนี้:

# / opt / LifeKeeper / bin / lkGUIapp &

คุณจะได้รับแจ้งให้เชื่อมต่อกับโหนดคลัสเตอร์แรกของคุณ (“ node1”)  ป้อนรหัสผู้ใช้ linux และรหัสผ่านที่ระบุในระหว่างการสร้าง VLK-GUI-connect1M: ถัดไปเชื่อมต่อกับทั้ง "node2" และ "พยาน" โดยคลิกที่ปุ่ม "เชื่อมต่อกับเซิร์ฟเวอร์" เน้นในภาพหน้าจอต่อไปนี้: ตอนนLK-GUI-connect2ี้คุณควรเห็นเซิร์ฟเวอร์ทั้ง 3 แห่งใน GUI ไอคอนเครื่องหมายถูกสีเขียวแสดงว่าพวกเขาออนไลน์และมีสุขภาพดี: LK-GUI-connect3

สร้างเส้นทางการสื่อสาร

คลิกขวาที่“ node1” และเลือกสร้างเส้นทางการสืcomm path1่อสารเลือกทั้ง“ node2” และ“ พยาน” แล้วทำตามตัวช่วยสร้าง  สิ่งนี้จะสร้างเส้นทางการสื่อสารระหว่าง:

  • node1 & node2
  • โหนด 1 & พยาน

comm path2 ต้องสร้างเส้นทางการสื่อสารระหว่าง node2 และผู้ชม   คลิกขวาที่“ node2” และเลือกสร้างเส้นทางการสื่อสาร  ทำตามตัวช่วยสร้างและเลือก“ พยาน” เป็นเซิร์ฟเวอร์ระยcomm path3ะไกล: ณ จุดนี้มีการสร้างเส้นทางการสื่อสารต่อไปนี้:

  • node1 <—> node2
  • โหนด 1 <—> พยาน
  • โหนด 2 <—> พยาน

ไอคอนที่อยู่ด้านหน้าของเซิร์ฟเวอร์เปลี่ยนจาก "เครื่องหมายถูก" สีเขียวเป็น "สัญญาณอันตราย" สีเหลือง  นี่เป็นเพราะเรามีเพียงเส้นทางการสื่อสารเดียวระหว่างโหนด หาก VMs มี NIC หลายตัว (ข้อมูลเกี่ยวกับการสร้าง Azure VM ที่มี NIC หลายตัวสามารถพบได้ที่นี่ แต่จะไม่ครอบคลุมในบทความนี้) คุณจะสร้างเส้นทาง comm ที่ซ้ำซ้อนระหว่างแต่ละเซิร์ฟเวอร์ comm path4 ในการลบไอคอนคำเตือนให้ไปที่เมนูมุมมองและยกเลิกการเลือก“ คำเตือนความซ้ำซ้อนของเส้นทางเส้นทาง”: comm path5ผลลัพธ์: comm path6

ตรวจสอบเส้นทางการสื่อสาร

ใช้คำสั่ง“ lcdstatus” เพื่อดูสถานะของทรัพยากรคลัสเตอร์  รันคำสั่งต่อไปนี้เพื่อตรวจสอบว่าคุณได้สร้าง comm path อย่างถูกต้องบนแต่ละโหนดไปยังอีกสองเซิร์ฟเวอร์ที่เกี่ยวข้อง: # / opt / LifeKeeper / bin / lcdstatus -q -d node1 เครื่องจักรเครือข่ายที่อยู่ / อุปกรณ์สถานะ PRIO node2 TCP 10.128.0.2/ 10.128.0.3 ยังมีชีวิตอยู่ 1 พยาน TCP 10.128.0.2/10.128.0.4 ยังมีชีวิตอยู่ 1 # / opt / LifeKeeper / bin / lcdstatus -q -d node2 เครื่องจักรที่อยู่เครือข่าย / อุปกรณ์สถานะ PRIO โหนด 1 TCP 10.128.0.3/10.128.0.2 มีชีวิต 1 10.128.0.3/10.128.0.4 ALIVE 1 # / opt / LifeKeeper / bin / lcdstatus -q -d เป็นสักขีพยานในที่อยู่เครือข่ายของเครื่อง / อุปกรณ์สถานะ PRIO โหนด 1 TCP 10.128.0.4/10.128.0.2 มีชีวิต 1 โหนด 2 TCP 10.128.0.4/10.12.0.0 ยังมีชีวิตอยู่ 1

สร้างทรัพยากรคลัสเตอร์การจำลองแบบข้อมูล (เช่น กระจกเงา)

จากนั้นสร้างรีซอร์ส Data Replication เพื่อทำซ้ำพาร์ติชัน / var / lib / mysql จาก node1 (ต้นทาง) ถึง node2 (เป้าหมาย)  คลิกที่ไอคอน“ บวกสีเขียว” เพื่อสร้างทรัพยากรใหม่: การจำลองข้อมูล 1ทำตามตัวช่วยสร้างด้วยตัวเลือกเหล่านี้:

โปรดเลือกชุดการกู้คืน: การจำลองข้อมูล
ประเภท Switchback: อัจฉริยะ
เซิร์ฟเวอร์: node1
ประเภทลำดับชั้น: ทำซ้ำระบบไฟล์ที่ออก
จุดเมานต์ที่มีอยู่: / var / lib / mysql
แท็กทรัพยากรการจำลองแบบข้อมูล: datarep-mysql
แท็บทรัพยากรระบบไฟล์: / var / lib / mysql
ไฟล์ Bitmap: (ค่าเริ่มต้น)
เปิดใช้งานการจำลองแบบอะซิงโครนัส: ไม่

หลังจากสร้างทรัพยากรตัวช่วยสร้าง“ ขยาย” (เช่นกำหนดเซิร์ฟเวอร์สำรอง) จะปรากฏขึ้น  ใช้ตัวเลือกต่อไปนี้:

เซิร์ฟเวอร์เป้าหมาย: node2
ประเภท Switchback: อัจฉริยะ
ลำดับความสำคัญของเทมเพลต: 1
เป้าหมายลำดับความสำคัญ: 10
Target Disk: / dev / sdb1
แท็กทรัพยากรการจำลองแบบข้อมูล: datarep-mysql
ไฟล์ Bitmap: (ค่าเริ่มต้น)
เส้นทางการจำลองแบบ: 10.128.0.2/10.128.0.3
จุดเมานต์: / var / lib / mysql
แท็กรูต: / var / lib / mysql

คลัสเตอร์จะมีลักษณะเช่นนี้: การจำลองข้อมูล 2  

สร้างลำดับชั้นของทรัพยากร MySQL

ถัดไปสร้างทรัพยากรคลัสเตอร์ MySQL  ทรัพยากร MySQL มีหน้าที่รับผิดชอบในการหยุด / เริ่ม / ตรวจสอบฐานข้อมูล MySQL ของคุณ  วิธีสร้างคลิกไอคอน“ สีเขียวบวก” เพื่อสร้างทรัพยากรใหม่: ทำตามตัวช่วยสร้างเพื่อสร้างทรัพยากร IP ด้วยการเลือกเหล่านี้:

เลือกชุดการกู้คืน: ฐานข้อมูล MySQL
ประเภท Switchback: อัจฉริยะ
เซิร์ฟเวอร์: node1
ตำแหน่งของ my.cnf: / var / lib / mysql
ตำแหน่งของไฟล์ปฏิบัติการ MySQL: / usr / bin
แท็กฐานข้อมูล: mysql

ขยายทรัพยากร IP ด้วยการเลือกดังต่อไปนี้:

เซิร์ฟเวอร์เป้าหมาย: node2
ประเภท Switchback: อัจฉริยะ
ลำดับความสำคัญของเทมเพลต: 1
เป้าหมายลำดับความสำคัญ: 10

เป็นผลให้คลัสเตอร์ของคุณจะมีลักษณะดังนี้  โปรดสังเกตว่าทรัพยากรการจำลองแบบข้อมูลถูกย้ายโดยอัตโนมัติภายใต้ฐานข้อมูล (สร้างการขึ้นต่อกันโดยอัตโนมัติ) เพื่อให้แน่ใจว่าจะถูกนำมาออนไลน์ก่อนฐานข้อมูลเสมอ:  

สร้างเครื่องมือสร้างสมดุลภายใน

หากนี่เป็นคลัสเตอร์ทั่วไปในสถานที่โดยใช้เซิร์ฟเวอร์จริงหรือเซิร์ฟเวอร์เสมือนคุณจะต้องดำเนินการในขั้นตอนนี้  ลูกค้าและแอปพลิเคชันจะเชื่อมต่อกับ IP เสมือนของคลัสเตอร์ (10.128.0.99) เพื่อเข้าถึงโหนดที่ใช้งานอยู่  ใน Google Cloud สิ่งนี้จะไม่ทำงานหากไม่มีการกำหนดค่าเพิ่มเติม ในการเชื่อมต่อเข้ากับคลัสเตอร์ Google มีฟีเจอร์ที่คุณสามารถตั้งค่า Internal Load Balancer (ILB)  โดยพื้นฐานแล้วเมื่อคุณเชื่อมต่อกับที่อยู่ IP ของ ILB (ซึ่งเราจะตั้งค่าเป็น 10.128.0.99) คุณจะถูกกำหนดเส้นทางไปยังโหนดคลัสเตอร์ที่ใช้งานอยู่ในปัจจุบัน สร้าง TCP Load Balancer: นี่จะเป็น load balancer ภายในดังนั้นให้เลือก“ เฉพาะระหว่าง VMs ของฉัน”: ถัดไปตั้งชื่อ load balancer (“ internal-lb”) จากนั้นคลิก Backend configuration: ตรวจสอบให้แน่ใจว่าคุณเลือกเหมาะสม ภูมิภาค (“ us-central1”) และกำหนดค่าแบ็กเอนด์  คลิก "เพิ่มแบ็กเอนด์" และเพิ่มกลุ่มอินสแตนซ์ทั้งสอง (อินสแตนซ์กลุ่ม 1A และอินสแตนซ์กลุ่ม 1b): ตัวโหลดบาลานซ์ตัดสินใจว่าโหนดใดที่จะกำหนดเส้นทางทราฟฟิกไปตามการตรวจสุขภาพ  ในตัวอย่างนี้การตรวจสอบสุขภาพเพื่อดูว่า MySQL กำลังทำงานอยู่ (ตรวจสอบพอร์ตเริ่มต้น 3306) หรือไม่  เลือก“ สร้างการตรวจสอบสุขภาพ”: ตั้งชื่อการตรวจสุขภาพใหม่ (“ mysql-health-check”) และกำหนดค่าสำหรับพอร์ต TCP 3306: ถัดไปกำหนดค่า Frontend ของ load balancer  เลือก“ การกำหนดค่าส่วนหน้า” และภายใต้ที่อยู่ IP ให้กำหนด IP ภายในแบบคงที่ที่กำหนดเองที่ 10.128.0.99  พอร์ตควรเป็น 3306 ซึ่งเป็นพอร์ตเริ่มต้นสำหรับ MySQL: ในที่สุดให้ตรวจสอบและทำการสร้าง load balancer ให้เสร็จ  คลิก“ สร้าง”: ผลลัพธ์  คุณจะเห็นว่าตัวโหลดบาลานซ์นั้นออนไลน์อย่างไรก็ตามจะไม่แสดงกลุ่มอินสแตนซ์ที่ดีต่อสุขภาพ! (ตามที่ระบุโดย 0/0)  เราจะแก้ไขในส่วนถัดไป:

สร้างกฎไฟร์วอลล์สำหรับตัวโหลดบาลานซ์ภายใน

สำหรับเอกสารของ Google (ดูที่หัวข้อ“ กำหนดค่ากฎไฟร์วอลล์เพื่อให้สามารถทำโหลดบาลานซ์ภายใน”) ต้องสร้างกฎไฟร์วอลล์สองข้อ  วิธีแรกให้ทราฟฟิกไปที่ load balancer และจาก load balancer ถึงอินสแตนซ์ ครั้งที่สองอนุญาตให้ตรวจสอบสุขภาพจากการตรวจสุขภาพ สร้างกฎไฟร์วอลล์ใหม่: ตั้งชื่อกฎใหม่ (allow-internal-lb) และระบุ“ 10.128.0.0/20” เป็นช่วง IP ต้นทาง  โปรโตคอลและพอร์ตที่อนุญาตควรเป็น“ tcp: 3306“: หลังจากคลิก“ สร้าง” คุณจะกลับสู่หน้ากฎไฟร์วอลล์และสามารถดูกฎที่สร้างขึ้นใหม่ในรายการ  คลิก“ สร้างกฎไฟร์วอลล์” อีกครั้งเพื่อให้เราสามารถสร้างกฎที่ต้องการอันดับที่สอง: ตั้งชื่อให้กฎที่สอง (“ อนุญาตให้ตรวจสอบสุขภาพ”)  ต้องกำหนดช่วง IP ต้นทางที่แตกต่างกันสองช่วง:

  • 130.211.0.0/22
  • 35.191.0.0/16

หมายเหตุ: ควรตรวจสอบเอกสาร Google Cloud ทุกครั้งเพื่อให้แน่ใจว่าช่วง IP เหล่านี้ยังคงใช้ได้ ตอนนี้คุณควรเห็นทั้งกฎไฟร์วอลล์ที่สร้างขึ้นใหม่ในรายการ:

ทดสอบการเชื่อมต่อของคลัสเตอร์

ณ จุดนี้การกำหนดค่า Google Cloud และ Cluster ของเราทั้งหมดเสร็จสมบูรณ์แล้ว! รีซอร์สคลัสเตอร์กำลังแอ็คทีฟบน node1: คุณจะสังเกตเห็นว่า Internal Load Balancer กำลังแสดง node1 ซึ่งเป็นสมาชิกของกลุ่ม -a-1a เป็น“ แข็งแรง” และเป็นเช่นนั้นทราฟฟิกทราฟฟิกที่เข้ามาใน IP เสมือน (10.128.0.99 ) ถึง node1: SSH ไปยังเซิร์ฟเวอร์พยาน“ sudo su -” เพื่อเข้าถึงรูท   ติดตั้งไคลเอนต์ mysql หากต้องการ:

[root @itness ~] # yum -y ติดตั้ง mysql

ทดสอบการเชื่อมต่อ MySQL กับคลัสเตอร์:

[root @itness ~] # mysql --host = 10.128.0.99 mysql -u root -p

ดำเนินการแบบสอบถาม MySQL ต่อไปนี้เพื่อแสดงชื่อโฮสต์ของโหนดคลัสเตอร์ที่ใช้งาน:

mysql> select @@ ชื่อโฮสต์;
 ------------ 
| @@ ชื่อโฮสต์ |
 ------------ 
| โหนด 1 |
 ------------ 
1 แถวในชุด (0.00 วินาที)
MySQL>

ใช้ LifeKeeper GUI, failover จาก Node1 -> Node2″  คลิกขวาที่ทรัพยากร mysql ใต้ node2 และเลือก“ In Service …”: หลังจากล้มเหลวทรัพยากรจะถูกนำมาออนไลน์บน node2: ตอนนี้คุณจะเห็นว่า Internal Load Balancer กำลังแสดง instance-group-1b ซึ่งมี node2 ที่แข็งแรง .  ทราฟฟิกถูกจัดเส้นทางไปยังโหนด 2: หลังจาก failover เสร็จสิ้นให้รันเคียวรี MySQL อีกครั้ง  คุณจะสังเกตเห็นว่าไคลเอนต์ MySQL ตรวจพบว่าเซสชันนั้นหายไป (ระหว่างการทำงานล้มเหลว) และเชื่อมต่อใหม่โดยอัตโนมัติ: ดำเนินการแบบสอบถาม MySQL ต่อไปนี้เพื่อแสดงชื่อโฮสต์ของโหนดคลัสเตอร์ที่ใช้งานอยู่ซึ่งยืนยันว่าตอนนี้“ node2” เปิดใช้งานแล้ว:

mysql> select @@ ชื่อโฮสต์;
ข้อผิดพลาด 2006 (HY000): เซิร์ฟเวอร์ MySQL หายไป
ไม่มีการเชื่อมต่อ. กำลังพยายามเชื่อมต่อใหม่ ...
ID การเชื่อมต่อ: 48
ฐานข้อมูลปัจจุบัน: mysql
 ------------ 
| @@ ชื่อโฮสต์ |
 ------------ 
| โหนด 2 |
 ------------ 
1 แถวในชุด (0.56 วินาที)
MySQL>

 

Copyright © 2025 · Enterprise Pro Theme on Genesis Framework · WordPress · Log in