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:
- สร้างโครงการ
- สร้างอินสแตนซ์ (เครื่องเสมือน)
- สร้างกลุ่มอินสแตนซ์
- สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าถึง VNC
- การกำหนดค่า Linux OS
- ติดตั้งและกำหนดค่า MySQL
- ติดตั้งและกำหนดค่าคลัสเตอร์
- สร้างเครื่องมือสร้างสมดุลภายใน
- สร้างกฎไฟร์วอลล์สำหรับตัวโหลดบาลานซ์ภายใน
- ทดสอบการเชื่อมต่อของคลัสเตอร์
ภาพรวม
บทความนี้จะอธิบายวิธีสร้างคลัสเตอร์ภายในภูมิภาค 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 และรหัสผ่านที่ระบุในระหว่างการสร้าง VM: ถัดไปเชื่อมต่อกับทั้ง "node2" และ "พยาน" โดยคลิกที่ปุ่ม "เชื่อมต่อกับเซิร์ฟเวอร์" เน้นในภาพหน้าจอต่อไปนี้: ตอนนี้คุณควรเห็นเซิร์ฟเวอร์ทั้ง 3 แห่งใน GUI ไอคอนเครื่องหมายถูกสีเขียวแสดงว่าพวกเขาออนไลน์และมีสุขภาพดี:
สร้างเส้นทางการสื่อสาร
คลิกขวาที่“ node1” และเลือกสร้างเส้นทางการสื่อสารเลือกทั้ง“ node2” และ“ พยาน” แล้วทำตามตัวช่วยสร้าง สิ่งนี้จะสร้างเส้นทางการสื่อสารระหว่าง:
- node1 & node2
- โหนด 1 & พยาน
ต้องสร้างเส้นทางการสื่อสารระหว่าง node2 และผู้ชม คลิกขวาที่“ node2” และเลือกสร้างเส้นทางการสื่อสาร ทำตามตัวช่วยสร้างและเลือก“ พยาน” เป็นเซิร์ฟเวอร์ระยะไกล: ณ จุดนี้มีการสร้างเส้นทางการสื่อสารต่อไปนี้:
- node1 <—> node2
- โหนด 1 <—> พยาน
- โหนด 2 <—> พยาน
ไอคอนที่อยู่ด้านหน้าของเซิร์ฟเวอร์เปลี่ยนจาก "เครื่องหมายถูก" สีเขียวเป็น "สัญญาณอันตราย" สีเหลือง นี่เป็นเพราะเรามีเพียงเส้นทางการสื่อสารเดียวระหว่างโหนด หาก VMs มี NIC หลายตัว (ข้อมูลเกี่ยวกับการสร้าง Azure VM ที่มี NIC หลายตัวสามารถพบได้ที่นี่ แต่จะไม่ครอบคลุมในบทความนี้) คุณจะสร้างเส้นทาง comm ที่ซ้ำซ้อนระหว่างแต่ละเซิร์ฟเวอร์ ในการลบไอคอนคำเตือนให้ไปที่เมนูมุมมองและยกเลิกการเลือก“ คำเตือนความซ้ำซ้อนของเส้นทางเส้นทาง”: ผลลัพธ์:
ตรวจสอบเส้นทางการสื่อสาร
ใช้คำสั่ง“ 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 (เป้าหมาย) คลิกที่ไอคอน“ บวกสีเขียว” เพื่อสร้างทรัพยากรใหม่: ทำตามตัวช่วยสร้างด้วยตัวเลือกเหล่านี้:
โปรดเลือกชุดการกู้คืน: การจำลองข้อมูล ประเภท 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
สร้างลำดับชั้นของทรัพยากร 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>