Date: ธันวาคม 20, 2018
ป้ายกำกับ:AWS, Linux failover clusters, MySQL
ทีละขั้นตอน: วิธีการกำหนดค่าคลัสเตอร์ Failover ใน Amazon EC2 โดยไม่ใช้ที่เก็บข้อมูลร่วมกัน #amazon #aws #sanless #cluster
ในขั้นตอนนี้ฉันจะแนะนำคุณในทุกขั้นตอนที่จำเป็นในการกำหนดค่าคลัสเตอร์ MySQL แบบ 2 โหนด (พร้อมเซิร์ฟเวอร์พยาน) ที่มีความยืดหยุ่นสูงใน Elastic Compute Cloud ของ Amazon (Amazon EC2) คู่มือนี้รวมทั้งภาพหน้าจอคำสั่งเชลล์และข้อมูลโค้ดตามความเหมาะสม ฉันคิดว่าคุณคุ้นเคยกับ Amazon EC2 และมีบัญชีอยู่แล้ว ถ้าไม่คุณสามารถสมัครวันนี้ ฉันจะสมมติว่าคุณมีทักษะในการบริหารระบบลินุกซ์ขั้นพื้นฐานและเข้าใจแนวคิด failover clustering พื้นฐานเช่น Virtual IPs เป็นต้น
ข้อจำกัดความรับผิดชอบ: เมฆกำลังเคลื่อนที่เป้าหมายอย่างรวดเร็ว ดังนั้นคุณลักษณะ / หน้าจอ / ปุ่มจึงต้องเปลี่ยนแปลงไปตามช่วงเวลาเพื่อให้ประสบการณ์ของคุณอาจแตกต่างจากที่คุณเห็นด้านล่างเล็กน้อย แม้ว่าคู่มือนี้จะแสดงวิธีการสร้างฐานข้อมูล MySQL ที่พร้อมให้บริการคุณสามารถปรับข้อมูลและกระบวนการนี้เพื่อปกป้องโปรแกรมหรือฐานข้อมูลอื่น ๆ เช่น SAP, Oracle, PostgreSQL, NFS file servers และอื่น ๆ ได้ นี่คือขั้นตอนระดับสูงเพื่อสร้างฐานข้อมูล MySQL ที่มีอยู่ใน Amazon EC2:
- สร้าง Virtual Private Cloud (VPC)
- สร้างเกตเวย์อินเทอร์เน็ต
- สร้าง Subnets (โซนที่มีอยู่)
- กำหนดค่าตารางเส้นทาง
- กำหนดค่ากลุ่มรักษาความปลอดภัย
- เปิดใช้อินสแตนซ์
- สร้าง Elastic IP
- สร้างรายการเส้นทางสำหรับ Virtual IP
- ปิดใช้งานการตรวจสอบแหล่งที่มา / ปลายทางสำหรับ ENI's
- ขอรับคีย์รหัสการเข้าถึงและรหัสลับการเข้าถึง
- การกำหนดค่าระบบปฏิบัติการ Linux
- ติดตั้ง EC2 API Tools
- ติดตั้งและกำหนดค่า MySQL
- ติดตั้งและกำหนดค่าคลัสเตอร์
- ทดสอบ Cluster Connectivity
ภาพรวม
บทความนี้จะอธิบายถึงวิธีการสร้างคลัสเตอร์ภายในภูมิภาค Amazon EC2 เดียว โหนดคลัสเตอร์ (node1, node2 และเซิร์ฟเวอร์พยาน) จะอยู่โซนความพร้อมใช้งานที่แตกต่างกันสำหรับความพร้อมใช้งานสูงสุด นี่ก็หมายความว่าโหนดจะอยู่ใน subnet ที่ต่างกัน การกำหนดค่าจะมีลักษณะดังนี้: จะใช้ที่อยู่ IP ต่อไปนี้:
- node1: 10.0.0.4
- node2: 10.0.1.4
- พยาน: 10.0.2.4
- เสมือน / "ลอย" IP: 10.1.0.10
สร้าง Virtual Private Cloud (VPC)
ก่อนอื่นให้สร้าง Virtual Private Cloud (aka VPC) VPC เป็นเครือข่ายที่แยกได้ภายใน Amazon Cloud ที่ทุ่มเทให้กับคุณ คุณสามารถควบคุมสิ่งต่างๆเช่นบล็อกที่อยู่ IP และเครือข่ายย่อยตารางเส้นทางกลุ่มรักษาความปลอดภัย (เช่นไฟร์วอลล์) และอื่น ๆ คุณจะได้เปิดตัวเครื่องเสมือน (VMs) Azure Iaas ของคุณลงใน Virtual Network ของคุณ จากหน้าแดชบอร์ด AWS หลักเลือก“ VPC” ใต้“ VPC ของคุณ” ตรวจสอบให้แน่ใจว่าคุณได้เลือกภูมิภาคที่เหมาะสมที่ด้านบนขวาของหน้าจอ ในคู่มือนี้จะใช้พื้นที่ "US West (Oregon)" เนื่องจากเป็นพื้นที่ที่มีเขตการใช้งาน 3 แห่ง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับภูมิภาคและโซนว่างคลิกที่นี่ตั้งชื่อ VPC และระบุบล็อก IP ที่คุณต้องการใช้ 10.0.0.0/16 จะถูกใช้ในคู่มือนี้: คุณควรเห็น VPC ที่สร้างขึ้นใหม่บนหน้าจอ“ Your VPCs”:
สร้างเกตเวย์อินเทอร์เน็ต
จากนั้นสร้าง Internet Gateway จำเป็นต้องใช้ถ้าคุณต้องการให้อินสแตนซ์ (VM) ของคุณสามารถสื่อสารกับอินเทอร์เน็ตได้ ที่เมนูด้านซ้ายเลือก Internet Gateways และคลิกปุ่ม Create Internet Gateway ตั้งชื่อและสร้าง: ถัดไปแนบเกตเวย์อินเทอร์เน็ตกับ VPC ของคุณ: เลือก VPC ของคุณและคลิกแนบ:
สร้าง Subnets (โซนที่มีอยู่)
ถัดไปสร้าง 3 เครือข่ายย่อย แต่ละเครือข่ายย่อยจะอยู่ในเขตจำหน่ายของตนเอง อินสแตนซ์ 3 ตัว (VMs: node1, node2, witness) จะถูกเปิดใช้งานในเครือข่ายย่อยที่แยกกัน (และโซนความพร้อมใช้งาน) เพื่อให้ความล้มเหลวของโซนความพร้อมใช้งานจะไม่เกิดขึ้นจากหลายโหนดของคลัสเตอร์ ภูมิภาคตะวันตกของสหรัฐฯ (Oregon) หรือ aka us-west-2 มีพื้นที่ให้บริการ 3 แห่ง (us-west-2a, us-west-2b, us-west-2c) สร้าง 3 เครือข่ายย่อยหนึ่งแห่งในแต่ละโซนที่มีให้บริการ 3 แห่ง ภายใต้แผงควบคุม VPC นำทางไปยังเครือข่ายย่อยแล้วสร้างซับเน็ต: ตั้งชื่อซับเน็ตแรก (“ Subnet1)” เลือกโซนความพร้อมใช้งาน us-west-2a และกำหนดบล็อกเครือข่าย (10.0.0.0/24): ทำซ้ำ สร้างโซนความพร้อมเครือข่ายย่อยที่สอง us-west-2b: ทำซ้ำเพื่อสร้างเครือข่ายย่อยที่สามในโซนความพร้อมใช้งาน us-west-2c: เมื่อเสร็จแล้วให้ตรวจสอบว่ามีการสร้างเครือข่ายย่อย 3 แห่งแต่ละแห่งด้วย CIDR ที่แตกต่างกัน โซนเท่าที่เห็นด้านล่าง:
กำหนดค่าตารางเส้นทาง
อัปเดตตารางเส้นทางของ VPC เพื่อให้การรับส่งข้อมูลไปยังโลกภายนอกถูกส่งไปยัง Internet Gateway ที่สร้างขึ้นในขั้นตอนก่อนหน้า จากหน้าแดชบอร์ด VPC เลือกเส้นทางตาราง ไปที่แท็บเส้นทางและโดยค่าเริ่มต้นจะมีเส้นทางเดียวเท่านั้นที่จะอนุญาตให้มีการรับส่งข้อมูลภายใน VPC เท่านั้น คลิกแก้ไข: เพิ่มเส้นทางอื่น: ปลายทางของเส้นทางใหม่จะเป็น“ 0.0.0.0/0” (อินเทอร์เน็ต) และสำหรับเป้าหมายให้เลือกเกตเวย์อินเทอร์เน็ตของคุณ จากนั้นคลิกบันทึก: ถัดไปเชื่อมโยง 3 เครือข่ายย่อยกับตารางเส้นทาง คลิกแท็บ“ เครือข่ายย่อย” และแก้ไข: ทำเครื่องหมายในช่องถัดจากเครือข่ายย่อยทั้ง 3 และบันทึก: ตรวจสอบว่าเครือข่ายย่อยทั้ง 3 เกี่ยวข้องกับตารางเส้นทางหลัก: ต่อมาเราจะกลับมาและอัพเดตตารางเส้นทางอีกครั้ง การกำหนดเส้นทางที่จะอนุญาตให้ทราฟฟิกสื่อสารกับ IP เสมือนของคลัสเตอร์ แต่ต้องดำเนินการหลังจากสร้าง linux Instances (VMs) แล้ว
กำหนดค่ากลุ่มรักษาความปลอดภัย
แก้ไขกลุ่มความปลอดภัย (ไฟร์วอลล์เสมือน) เพื่ออนุญาตการรับส่งข้อมูล SSH และ VNC ทั้งสองจะถูกใช้เพื่อกำหนดค่าอินสแตนซ์ linux รวมถึงการติดตั้ง / การกำหนดค่าซอฟต์แวร์คลัสเตอร์ ในเมนูด้านซ้ายเลือก "กลุ่มรักษาความปลอดภัย" แล้วคลิกแท็บ "กฎขาเข้า" คลิกแก้ไข: เพิ่มกฎสำหรับทั้ง SSH (พอร์ต 22) และ VNC VNC โดยทั่วไปใช้พอร์ตใน 5900 ขึ้นอยู่กับวิธีที่คุณกำหนดค่าดังนั้นสำหรับวัตถุประสงค์ของคู่มือนี้เราจะเปิดช่วงพอร์ต 5900-5910 กำหนดค่าตามที่ตั้งค่า VNC ของคุณ:
เปิดใช้อินสแตนซ์
เราจะจัดเตรียม 3 อินสแตนซ์ (Virtual Machines) ในคู่มือนี้ สองเครื่องแรกของ VMs (เรียกว่า "node1" และ "node2") จะทำหน้าที่เป็นโหนดคลัสเตอร์ที่มีความสามารถในการนำฐานข้อมูล MySQL มาใช้และเป็นแหล่งข้อมูลออนไลน์ที่เกี่ยวข้อง VM ที่ 3 จะทำหน้าที่เป็นเซิร์ฟเวอร์พยานของคลัสเตอร์สำหรับการป้องกันเพิ่มเติมจากสมองแยก เพื่อให้แน่ใจว่ามีความพร้อมใช้งานสูงสุดวีเอ็มวีทั้ง 3 ตัวจะถูกปรับใช้ในโซนความพร้อมใช้งานที่แตกต่างกันภายในภูมิภาคเดียว ซึ่งหมายความว่าแต่ละอินสแตนซ์จะอยู่ในซับเน็ตที่แตกต่างกัน ไปที่แดชบอร์ด AWS หลักและเลือก EC2:
สร้าง“node1”
สร้างอินสแตนซ์แรกของคุณ ("node1") คลิกเรียกใช้อินสแตนซ์: เลือกการแจกจ่าย linux ของคุณ ซอฟต์แวร์คลัสเตอร์ที่ใช้ในภายหลังรองรับ RHEL, SLES, CentOS และ Oracle Linux ในคู่มือนี้เราจะใช้ RHEL 7.X: ปรับขนาดอินสแตนซ์ของคุณให้เหมาะสม สำหรับวัตถุประสงค์ของคู่มือนี้และเพื่อลดค่าใช้จ่ายจะใช้ขนาด t2.micro เนื่องจากเป็นระดับฟรีที่มีสิทธิ์ ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดและราคาของอินสแตนซ์ ถัดไปกำหนดค่ารายละเอียดของอินสแตนซ์ สิ่งสำคัญ: ตรวจสอบให้แน่ใจว่าได้เปิดตัวอินสแตนซ์แรกนี้ (VM) ลงใน "Subnet1" และกำหนดที่อยู่ IP ที่ถูกต้องสำหรับเครือข่ายย่อย (10.0.0.0/24) – ต่ำกว่า 10.0.0.4 เนื่องจากเป็น IP ฟรีครั้งแรกในเครือข่ายย่อย หมายเหตุ: .1 / .2 / .3 ในซับเน็ตที่กำหนดใด ๆ ใน AWS ถูกสงวนไว้และไม่สามารถใช้ได้ จากนั้นเพิ่มดิสก์พิเศษลงในโหนดคลัสเตอร์ (ซึ่งจะทำทั้ง "node1" และ "node2") ดิสก์นี้จะเก็บฐานข้อมูล MySQL ของเราและต่อมาจะจำลองแบบระหว่างโหนด หมายเหตุ: คุณไม่จำเป็นต้องเพิ่มดิสก์พิเศษลงในโหนด "witness" เฉพาะ "node1" และ "node2" เพิ่มวอลุ่มใหม่และป้อนขนาดที่ต้องการ: กำหนดแท็กสำหรับอินสแตนซ์โหนด 1: เชื่อมโยงอินสแตนซ์กับกลุ่มความปลอดภัยที่มีอยู่ดังนั้นกฎไฟร์วอลล์ที่สร้างขึ้นก่อนหน้านี้จะเปิดใช้งาน: คลิกเรียกใช้: สำคัญ: ในสภาพแวดล้อม AWS ของคุณคุณจะต้องสร้างคู่คีย์ใหม่ ไฟล์คีย์ส่วนตัวจะต้องถูกเก็บไว้ในที่ปลอดภัยเนื่องจากจะต้องใช้เมื่อคุณ SSH เข้าสู่อินสแตนซ์ linux
สร้าง "node2"
ทำซ้ำขั้นตอนข้างต้นเพื่อสร้างอินสแตนซ์ของ linux ที่สอง (node2) กำหนดค่าให้ตรงกับ Node1 อย่างไรก็ตามโปรดตรวจสอบให้แน่ใจว่าคุณปรับใช้แอปพลิเคชันดังกล่าวลงใน "Subnet2" (เขตความพร้อมในการใช้งานของเราตะวันตก -2b) ช่วง IP สำหรับ Subnet2 คือ 10.0.1.0/24 ดังนั้นจึงใช้ IP ของ 10.0.1.4 ที่นี่: ตรวจสอบให้แน่ใจว่าได้เพิ่มดิสก์ที่สองลงใน Node2 เช่นกัน ควรมีขนาดที่แน่นอนเท่ากับดิสก์ที่คุณเพิ่มลงใน Node1: ให้แท็กที่สองแก่อินสแตนซ์ที่สอง “Node2”:
สร้าง "พยาน"
ทำซ้ำขั้นตอนข้างต้นเพื่อสร้างอินสแตนซ์ linux ที่สาม (พยาน) กำหนดค่าให้เหมือนกับ Node1 และ Node2 ยกเว้นคุณไม่ต้องเพิ่มดิสก์อันดับที่ 2 เนื่องจากอินสแตนซ์นี้จะทำหน้าที่เป็นพยานให้กับคลัสเตอร์เท่านั้นและจะไม่นำ MySQL online มาใช้ ตรวจสอบให้แน่ใจว่าคุณได้ใช้งาน "Subnet3" (โซนความพร้อมในการใช้งานของเราตะวันตก -2c) ช่วง IP สำหรับ Subnet2 คือ 10.0.2.0/24 ดังนั้นจึงใช้ IP ของ 10.0.2.4 ที่นี่: หมายเหตุ: การกำหนดค่าดิสก์เริ่มต้นนั้นใช้ได้สำหรับโหนดพยาน ไม่จำเป็นต้องใช้ดิสก์ตัวที่สอง: ติดแท็กโหนดโหนดพยาน:
อาจใช้เวลาสักครู่ในการจัดเตรียม 3 กรณีของคุณ หลังจากเสร็จสิ้นคุณจะเห็นรายชื่อที่แสดงอยู่ในแผงควบคุม EC2:
สร้าง Elastic IP
จากนั้นสร้าง Elastic IP ซึ่งเป็นที่อยู่ IP สาธารณะที่จะใช้ในการเชื่อมต่อกับอินสแตนซ์ของคุณจากโลกภายนอก เลือก Elastic IPs ในเมนูด้านซ้ายจากนั้นคลิก“ จัดสรรที่อยู่ใหม่”: เลือก IP แบบยืดหยุ่นที่สร้างขึ้นใหม่คลิกขวาและเลือก“ เชื่อมโยงที่อยู่”: เชื่อมโยง IP ยืดหยุ่นนี้กับ Node1: ทำซ้ำสิ่งนี้สำหรับอีกสองอิน คุณต้องการให้พวกเขามีอินเทอร์เน็ตหรือสามารถใช้ SSH / VNC โดยตรง
สร้างรายการเส้นทางสำหรับ Virtual IP
ณ จุดนี้ทั้ง 3 อินสแตนซ์ถูกสร้างขึ้นและตารางเส้นทางจะต้องได้รับการปรับปรุงอีกครั้งเพื่อให้ IP เสมือนของคลัสเตอร์ทำงานได้ ในการกำหนดค่าคลัสเตอร์แบบหลายซับเน็ตนี้ Virtual IP ต้องอาศัยอยู่นอกช่วงของ CIDR ที่จัดสรรให้กับ VPC ของคุณ กำหนดเส้นทางใหม่ที่จะนำการเข้าชมไปยัง Virtual IP (10.1.0.10) ของคลัสเตอร์ไปยังโหนดโหนดหลัก (Node1) จากแดชบอร์ด VPC เลือกตารางเส้นทางคลิกแก้ไข เพิ่มเส้นทางสำหรับ "10.1.0.10/32" กับปลายทางของ Node1:
ปิดใช้งานการตรวจสอบแหล่งที่มา / ปลายทางสำหรับ ENI's
ถัดไปปิดการใช้งานการตรวจสอบแหล่งที่มา / ปลายทางสำหรับ Elastic Network Interfaces (ENI) ของโหนดคลัสเตอร์ของคุณ นี่เป็นสิ่งจำเป็นเพื่อให้อินสแตนซ์สามารถรับแพ็กเก็ตเครือข่ายสำหรับที่อยู่ IP เสมือนของคลัสเตอร์ได้ ทำเช่นนี้สำหรับ ENI ทั้งหมด เลือก "Network Interfaces" (การเชื่อมต่อเครือข่าย) คลิกขวาที่ ENI และเลือก "Change Source / Dest Check" เลือก "ปิดใช้งาน":
ขอรับคีย์รหัสการเข้าถึงและรหัสลับการเข้าถึง
ต่อมาในคู่มือซอฟต์แวร์คลัสเตอร์จะใช้ AWS Command Line Interface (CLI) เพื่อจัดการกับรายการตารางเส้นทางสำหรับ Virtual IP ของคลัสเตอร์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลไปยังโหนดคลัสเตอร์ที่ใช้งานอยู่ เพื่อให้สามารถใช้งานได้คุณจะต้องได้รับรหัสการเข้าถึงและรหัสลับการเข้าถึงเพื่อให้ AWS CLI สามารถตรวจสอบสิทธิ์ได้อย่างถูกต้อง ที่ด้านบนขวาของแดชบอร์ด EC2 คลิกที่ชื่อของคุณและใต้เลือก“ ข้อมูลรับรองความปลอดภัย” จากรายการแบบหล่นลง: ขยายส่วน“ คีย์การเข้าถึง (รหัสการเข้าถึงและรหัสการเข้าถึงข้อมูลลับ)” จากนั้นคลิก “ สร้างรหัสการเข้าถึงใหม่” ดาวน์โหลดไฟล์คีย์และเก็บไฟล์ไว้ในที่ปลอดภัย
การกำหนดค่าระบบปฏิบัติการ Linux
เชื่อมต่อกับอินสแตนซ์ลินุกซ์:
หากต้องการเชื่อมต่อกับอินสแตนซ์ linux ที่สร้างขึ้นใหม่ (ผ่าน SSH) ให้คลิกขวาที่อินสแตนซ์และเลือก "เชื่อมต่อ" ซึ่งจะแสดงคำแนะนำสำหรับการเชื่อมต่อกับอินสแตนซ์ คุณจะต้องใช้ไฟล์กุญแจส่วนตัวที่คุณสร้าง / ดาวน์โหลดในขั้นตอนก่อนหน้า: ตัวอย่าง: ที่นี่เราจะปล่อยแดชบอร์ด EC2 ไว้สักครู่แล้วปล่อยให้มือสกปรกในบรรทัดคำสั่งซึ่งในฐานะผู้ดูแลระบบ Linux คุณควรใช้ ถึงตอนนี้ คุณไม่ได้รับรหัสผ่าน root ไปยัง Linux VM ของคุณใน AWS (หรือบัญชี "ec2-user" เริ่มต้น) ดังนั้นเมื่อคุณเชื่อมต่อแล้วให้ใช้คำสั่ง "sudo" เพื่อรับสิทธิ์ root:
$ sudo su -
แก้ไข / etc / hosts
ถ้าคุณไม่มีการตั้งค่าเซิร์ฟเวอร์ DNS คุณจะต้องสร้างรายการไฟล์โฮสต์บนเซิร์ฟเวอร์ทั้ง 3 เครื่องเพื่อให้สามารถแก้ไขกันได้ดีโดยใช้ชื่อเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ / etc / hosts ของคุณ:
10.0.0.4 node1 10.0.1.4 node2 10.0.2.4 พยาน 10.1.0.10 mysql-vip
ปิดใช้งาน SELinux
แก้ไข / etc / sysconfig / linux และตั้งค่า "SELINUX = disabled":
# vi / etc / sysconfig / selinux # แฟ้มนี้ควบคุมสถานะ SELinux ในระบบ # SELINUX = สามารถใช้หนึ่งในสามค่าต่อไปนี้: # enforcing - ใช้นโยบายความปลอดภัยของ SELinux # permissive - SELinux พิมพ์คำเตือนแทนการบังคับใช้ # disabled - ไม่มีนโยบาย SELinux ถูกโหลด SELINUX = คนพิการ # SELINUXTYPE = สามารถใช้หนึ่งในสองค่านี้: เป้าหมาย # - กระบวนการกำหนดเป้าหมายได้รับการป้องกัน, # mls - การป้องกันความปลอดภัยแบบหลายระดับ SELINUXTYPE = การกำหนดเป้าหมาย
ตั้งชื่อโฮสต์
โดยค่าเริ่มต้นแลปท็อปเหล่านี้จะมีชื่อโฮสต์ที่อิงตามที่อยู่ IP ของเซิร์ฟเวอร์เช่น "ip-10-0-0-4.us-west-2.compute.internal" คุณอาจสังเกตเห็นว่าถ้าคุณพยายามที่จะ (เช่นการแก้ไข / etc / sysconfig / network, etc) หลังจากรีบูตเครื่องแต่ละตัวจะย้อนกลับไปสู่ต้นฉบับ! ฉันพบหัวข้อที่ยอดเยี่ยมในฟอรัมการสนทนาของ AWS ที่อธิบายถึงวิธีทำให้ชื่อโฮสต์คงที่โดยปกติหลังจากรีบูต รายละเอียดที่นี่: https://forums.aws.amazon.com/message.jspa?messageID=560446 แสดงความคิดเห็นออกโมดูลที่ตั้งชื่อโฮสต์ในไฟล์ "/etc/cloud/cloud.cfg" โมดูลต่อไปนี้สามารถแสดงความคิดเห็นโดยใช้ #
# - set_hostname # - update_hostname
จากนั้นให้เปลี่ยนชื่อโฮสต์ของคุณใน / etc / hostname
โหนดรีสตาร์ทคลัสเตอร์
รีบูตทั้ง 3 กรณีเพื่อให้ SELinux ถูกปิดใช้งานและการเปลี่ยนชื่อโฮสต์จะมีผล
ติดตั้งและกำหนดค่า VNC (และแพคเกจที่เกี่ยวข้อง)
เพื่อเข้าถึง GUI ของเซิร์ฟเวอร์ลินุกซ์ของเราและเพื่อติดตั้งและกำหนดค่าคลัสเตอร์ของเราติดตั้งเซิร์ฟเวอร์ VNC รวมทั้งแพ็กเกจที่จำเป็นอื่น ๆ (ซอฟต์แวร์คลัสเตอร์ต้องการ redhat-lsb และ patch rpms)
# yum groupinstall "ระบบหน้าต่าง X" # yum groupinstall "เซิร์ฟเวอร์ที่มี GUI" # yum install tigervnc-server xterm wget เปิดเครื่องรูด redhat-lsb
# vncpasswd
สำหรับ RHEL 7.x / CentOS7.x: URL ต่อไปนี้เป็นแนวทางที่ดีในการเรียกใช้เซิร์ฟเวอร์ VNC บน RHEL 7 / CentOS 7: https://www.digitalocean.com/community/tutorials/how-to-install-and -configure-vnc-remote-access-for-the-gnome-desktop-on-centos-7 หมายเหตุ: การกำหนดค่าตัวอย่างนี้รัน VNC บนจอแสดงผล 2 (: 2, aka พอร์ต 5902) และเป็น root (ไม่ปลอดภัย) ปรับตาม!
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service # vi /etc/systemd/system/vncserver@:2.service [บริการ] type = ฟอร์ก # ทำความสะอาดไฟล์ที่มีอยู่ใน /tmp/.X11-unix environment ExecStartPre = / bin / sh -c '/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || :' ExecStart = / sbin / runuser -l root -c "/ usr / bin / vncserver% i -geometry 1024x768" PIDFile = / ราก / .vnc / H%% i.pid ExecStop = / bin / sh -c '/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || :' # dactl ระบบโหลดซ้ำ # systemctl enable vncserver @: 2.service # vncserver: 2-geometry 1024x768
สำหรับระบบ RHEL / CentOS 6.x:
# vi / etc / sysconfig / vncservers VNCSERVERS = "2: ราก" VNCSERVERARGS [2] = "- รูปทรงเรขาคณิต 1024x768" # vncserver เริ่มบริการ # chkconfig vncserver บน
เปิดไคลเอ็นต์ VNC และเชื่อมต่อกับ <ElasticIP: 2> ถ้าคุณไม่สามารถรับได้ก็มีแนวโน้มที่ไฟร์วอลล์ linux ของคุณอยู่ในทาง เปิดพอร์ต VNC ที่เราใช้อยู่ที่นี่ (พอร์ต 5902) หรือตอนนี้ปิดการใช้งานไฟร์วอลล์ (ไม่แนะนำสำหรับสิ่งแวดล้อมในการผลิต):
# systemctl หยุด firewalld # systemctl ปิดการใช้งาน firewalld
พาร์ทิชันและฟอร์แมตดิสก์ "ข้อมูล"
เมื่อเปิดใช้งานอินสแตนซ์ linux และเพิ่มดิสก์เพิ่มลงในโหนดแต่ละโหนดเพื่อเก็บข้อมูลแอ็พพลิเคชันที่เราจะปกป้อง ในกรณีนี้เป็นฐานข้อมูล MySQL ดิสก์ที่สองควรปรากฏเป็น / dev / xvdb คุณสามารถเรียกใช้คำสั่ง“ fdisk -l” เพื่อตรวจสอบ คุณจะเห็นว่า / dev / xvda (OS) กำลังใช้งานอยู่
# fdisk -l
ดิสก์ / dev / xvda: 10.7 GB, 10737418240 ไบต์, เซ็กเตอร์ 20971520 หน่วย = เซกเตอร์ของ 1 * 512 = 512 ไบต์ขนาดเซกเตอร์ (ตรรกะ / กายภาพ): 512 ไบต์ / 512 ไบต์ขนาด I / O (ต่ำสุด / ดีที่สุด): 512 ไบต์ / 512 ไบต์ชนิดของป้ายชื่อดิสก์: gpt # เริ่มขนาดสิ้นสุดประเภทชื่อ 1 2048 4095 1M BIOS สำหรับการบูตส่วนที่ 2 4096 20971486 10G Microsoft ดิสก์พื้นฐาน / dev / xvdb: 2147 MB, 2147483648 ไบต์, ภาค 4194304 หน่วย = ภาคของ 1 * 512 = 512 ไบต์ ขนาดเซกเตอร์ (ตรรกะ / กายภาพ): 512 ไบต์ / 512 ไบต์ขนาด I / O (ต่ำสุด / เหมาะสมที่สุด): 512 ไบต์ / 512 ไบต์ที่นี่ฉันจะสร้างพาร์ติชัน (/ dev / xvdb1) จัดรูปแบบและติดตั้งที่ค่าเริ่มต้น ตำแหน่งสำหรับ MySQL ซึ่งเป็น / var / lib / mysql ทำขั้นตอนต่อไปนี้บนทั้ง“ node1” และ“ node2”:
# fdisk / dev / xvdb ยินดีต้อนรับสู่ fdisk (util-linux 2.23.2) การเปลี่ยนแปลงจะยังคงอยู่ในหน่วยความจำเท่านั้นจนกว่าคุณจะตัดสินใจเขียน ระวังก่อนใช้คำสั่ง write อุปกรณ์ไม่มีตารางพาร์ติชันที่รู้จัก สร้าง DOS disklabel ใหม่พร้อมตัวระบุดิสก์ 0x8c16903a คำสั่ง (m สำหรับความช่วยเหลือ): n ประเภทพาร์ติชัน: p หลัก (0 หลัก, 0 ขยาย, 4 ฟรี) e ขยาย เลือก (ค่าเริ่มต้น p): p หมายเลขพาร์ติชัน (1-4 ค่าเริ่มต้น 1): 1 ภาคแรก (2048-4194303 เริ่มต้น 2048): <enter> ใช้ค่าเริ่มต้น 2048 ภาคสุดท้ายภาคหรือขนาด {K, M, G} (2048-4194303, ค่าเริ่มต้น 4194303): <enter> ใช้ค่าเริ่มต้น 4194303 พาร์ติชัน 1 ของชนิด Linux และขนาด 2 GiB ถูกตั้งค่า คำสั่ง (m สำหรับความช่วยเหลือ): w มีการเปลี่ยนแปลงตารางพาร์ติชัน! การเรียก ioctl () เพื่ออ่านตารางพาร์ติชันอีกครั้ง กำลังซิงค์ดิสก์
# mkfs.ext4 / dev / xvdb1 # mkdir / var / lib / mysql บนโหนด 1 ติดตั้งระบบไฟล์:
# mount / dev / xvdb1 / var / lib / mysql
ติดตั้ง EC2 API Tools
เครื่องมือ EC2 API (EC2 CLI) จะต้องติดตั้งบนแต่ละโหนดคลัสเตอร์เพื่อให้ซอฟต์แวร์คลัสเตอร์สามารถจัดการ Route Tables ในภายหลังทำให้สามารถเชื่อมต่อกับ IP เสมือนได้ URL ต่อไปนี้เป็นแนวทางที่ดีในการตั้งค่า: http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/set-up-ec2-cli-linux.html นี่คือขั้นตอนสำคัญ: ดาวน์โหลด เปิดเครื่องรูดและย้ายเครื่องมือ CLI ไปยังตำแหน่งมาตรฐาน (/ opt / aws):
# wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip # unzip ec2-api-tools.zip # mv ec2-api-tools-1.7.5.1 / / opt / aws / # export EC2_HOME = "/ opt / aws"
หาก java ยังไม่ได้ติดตั้ง (เรียกใช้“ java ใดที่ต้องตรวจสอบ”) ให้ติดตั้ง:
# yum ติดตั้ง java-1.8.0-openjdk
ตัวอย่าง (ขึ้นอยู่กับการกำหนดค่าเริ่มต้นของระบบ RHEL 7.2 ปรับตาม)
# export JAVA_HOME = "/ usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64 / jre /"
คุณจะต้องมีรหัสการเข้าถึง AWS และรหัสลับ AWS ของคุณ เก็บค่าเหล่านี้ไว้เป็นประโยชน์เพราะจำเป็นในภายหลังในระหว่างการตั้งค่าคลัสเตอร์ด้วย! อ้างถึง URL ต่อไปนี้สำหรับข้อมูลเพิ่มเติม: https://console.aws.amazon.com/iam/home?#security_credential
# export AWS_ACCESS_KEY = your-aws-access-key-id # export AWS_SECRET_KEY = your-aws-secret-key
ทดสอบฟังก์ชันการทำงานของยูทิลิตี้ CLI:
# / opt / aws / bin / ec2-description-region ภูมิภาค eu-west-1 ec2.eu-west-1.amazonaws.com ภูมิภาค ap-southeast-1 ec2.ap-southeast-1.amazonaws.com ภูมิภาค ap-southeast-2 ec2.ap-southeast-2.amazonaws.com ภูมิภาค eu-central-1 ec2.eu-central-1.amazonaws.com ภูมิภาค ap-northeast-2 ec2.ap-northeast-2.amazonaws.com ภูมิภาค ap-northeast-1 ec2.ap-northeast-1.amazonaws.com ภูมิภาค us-east-1 ec2.us-east-1.amazonaws.com ภูมิภาค sa-east-1 ec2.sa-east-1.amazonaws.com ภูมิภาค us-west-1 ec2.us-west-1.amazonaws.com ภูมิภาค us-west-2 ec2.us-west-2.amazonaws.com
ติดตั้งและกำหนดค่า MySQL
จากนั้นติดตั้งแพคเกจ MySQL เริ่มต้นฐานข้อมูลตัวอย่างและตั้งค่ารหัสผ่าน "root" สำหรับ MySQL ใน RHEL7.X แพ็คเกจ MySQL ถูกแทนที่ด้วยแพ็คเกจ MariaDB
บน“ node1”:
# yum ติดตั้ง mariadb mariadb-server # mount / dev / xvdb1 / var / lib / mysql # / 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 / ทำงาน / MariaDB / mariadb.pid ผู้ใช้ = ราก พอร์ต = 3306 # แนะนำให้ปิดการใช้งานลิงก์สัญลักษณ์เพื่อป้องกันความเสี่ยงด้านความปลอดภัยที่หลากหลาย สัญลักษณ์การเชื่อมโยง = 0 [mysqld_safe] เข้าสู่ระบบข้อผิดพลาด = / var / log / MariaDB / mariadb.log pid = ไฟล์ / var / ทำงาน / MariaDB / mariadb.pid [ลูกค้า] ผู้ใช้ = ราก รหัสผ่าน = SIOS
ย้ายไฟล์การกำหนดค่า MySQL ต้นฉบับไว้ถ้ามีอยู่:
# mv /etc/my.cnf /etc/my.cnf.orig
บน“ node2”:
บน“ node2” คุณจะต้องติดตั้งแพ็คเกจ MariaDB / MySQL เท่านั้น ขั้นตอนอื่น ๆ ไม่จำเป็น:
[root @ node2 ~] # yum ติดตั้ง mariadb mariadb-server
ติดตั้งและกำหนดค่าคลัสเตอร์
ณ จุดนี้เราพร้อมที่จะติดตั้งและกำหนดค่าคลัสเตอร์ของเรา SIOS Protection Suite สำหรับ Linux (aka SPS-Linux) จะใช้ในคู่มือนี้เป็นเทคโนโลยีการทำคลัสเตอร์ มันมีทั้งฟีเจอร์การคลัสเตอร์ล้มเหลวที่มีความพร้อมใช้งานสูง (LifeKeeper) รวมถึงการจำลองข้อมูลระดับบล็อกแบบเรียลไทม์ (DataKeeper) ในโซลูชันเดียวที่รวมเข้าด้วยกัน SPS-Linux ช่วยให้คุณสามารถปรับใช้คลัสเตอร์“ SANLess” หรือที่เรียกว่าคลัสเตอร์“ ไม่มีอะไรที่ใช้ร่วมกัน” ซึ่งหมายความว่าโหนดของคลัสเตอร์ไม่มีที่เก็บข้อมูลใด ๆ ที่แชร์เช่นกรณีของ EC2 Instances
ติดตั้ง 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
ติดตั้งแพ็คเกจการกู้คืน EC2
SPS-Linux มีคุณสมบัติเฉพาะที่ช่วยให้ทรัพยากรสามารถเข้าแทนที่ระหว่างโหนดในโซนความพร้อมใช้งานที่แตกต่างกันและภูมิภาค ที่นี่ชุดการกู้คืน EC2 (ตัวแทนเอเจนต์คลัสเตอร์) ใช้เพื่อจัดการรูทเทเบิ้ลเพื่อให้การเชื่อมต่อกับ IP เสมือนถูกส่งไปยังโหนดคลัสเตอร์ที่ใช้งาน ติดตั้ง EC2 รอบต่อนาที (node1, node2):
# cd / tmp / install / amazon # rpm -Uvh steeleye-lkECC-9.0.2-6513.noarch.rpm
ติดตั้งรหัสสิทธิ์การใช้งาน
บนทั้ง 3 โหนดใช้คำสั่ง“ lkkeyins” เพื่อติดตั้งไฟล์ลิขสิทธิ์ที่คุณได้รับจาก SIOS:
# / opt / LifeKeeper / bin / lkkeyins <path_to_file> / <filename> .lic
เริ่ม LifeKeeper
บนทั้ง 3 โหนดใช้คำสั่ง“ lkstart” เพื่อเริ่มซอฟต์แวร์คลัสเตอร์:
# / opt / LifeKeeper / bin / lkstart
ตั้งค่าการอนุญาตผู้ใช้สำหรับ LifeKeeper GUI
ในทั้ง 3 โหนดให้สร้างบัญชีผู้ใช้ linux ใหม่ (เช่น“ tony” ในตัวอย่างนี้) แก้ไข / etc / group และเพิ่มผู้ใช้“ tony” ให้กับกลุ่ม“ lkadmin” เพื่อให้สิทธิ์การเข้าถึง LifeKeeper GUI โดยค่าเริ่มต้นเฉพาะ "รูท" เป็นสมาชิกของกลุ่มและเราไม่มีรหัสผ่านรูทที่นี่:
# useradd tony # passwd tony # vi / etc / group lkadmin: x 1001: ราก tony
เปิด LifeKeeper GUI
สร้างการเชื่อมต่อ VNC ไปยังที่อยู่ IP แบบยืดหยุ่น (Public IP) ของ node1 ตามการกำหนดค่า VNC จากด้านบนคุณจะเชื่อมต่อกับ <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.0.0.4/ 10.0.1.4 ยังมีชีวิตอยู่ 1 พยาน TCP 10.0.0.4/10.0.2.4 ยังมีชีวิตอยู่ 1 # / opt / LifeKeeper / bin / lcdstatus –q -d node2 ที่อยู่เครือข่ายเครื่องจักร / อุปกรณ์สถานะ PRIO PRIO โหนด 1 TCP 10.0.1.4/10.0.0.4 มีชีวิต 1 พยาน TCP 10.0.1.4/10.0.2.4 ALIVE 1 # / opt / LifeKeeper / bin / lcdstatus -q -d ร่วมเป็นสักขีพยานที่อยู่เครือข่ายของเครื่อง / อุปกรณ์สถานะ PRIO โหนด 1 TCP 10.0.2.4/10.0.0.4 มีชีวิต 1 node2 TCP 10.0.2.4/10.0.1.4 ยังมีชีวิตอยู่ 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 / xvdb1 แท็กทรัพยากรการจำลองแบบข้อมูล: datarep-mysql ไฟล์ Bitmap: (ค่าเริ่มต้น) เส้นทางการจำลองแบบ: 10.0.0.4/10.0.1.4 จุดเมานต์: / var / lib / mysql แท็กรูต: / var / lib / mysql
สร้าง IP เสมือน
ถัดไปสร้างทรัพยากรคลัสเตอร์ IP เสมือน คลิกที่ไอคอน“ บวกสีเขียว” เพื่อสร้างทรัพยากรใหม่: ทำตามตัวช่วยสร้างด้วยเพื่อสร้างทรัพยากร IP ด้วยการเลือกเหล่านี้:
เลือกชุดการกู้คืน: IP ประเภท Switchback: อัจฉริยะ ทรัพยากร IP: 10.1.0.10 Netmask: 255.255.255.0 อินเตอร์เฟสเครือข่าย: eth0 IP Resource Tag: ip-10.1.0.10
ขยายทรัพยากร IP ด้วยการเลือกเหล่านี้:
ประเภท Switchback: อัจฉริยะ ลำดับความสำคัญของเทมเพลต: 1 เป้าหมายลำดับความสำคัญ: 10 ทรัพยากร IP: 10.1.0.10 Netmask: 255.255.255.0 อินเตอร์เฟสเครือข่าย: eth0 IP Resource Tag: ip-10.1.0.10
คลัสเตอร์จะมีลักษณะเช่นนี้โดยสร้างทั้งทรัพยากร Mirror และ IP:
กำหนดค่ารายการ Ping สำหรับทรัพยากร IP
โดยค่าเริ่มต้น SPS-Linux จะตรวจสอบสถานะของทรัพยากร IP ด้วยการดำเนินการ ping ออกอากาศ ในสภาพแวดล้อมเสมือนจริงและระบบคลาวด์หลายแห่งการส่งสัญญาณออกอากาศไม่ทำงาน ในขั้นตอนก่อนหน้าเราตั้งค่า“ NOBCASTPING = 1” ใน / etc / default / LifeKeeper เพื่อปิดการตรวจสอบการออกอากาศ ping เราจะกำหนดรายการ ping แทน นี่คือรายการที่อยู่ IP ที่จะทำการ ping ในระหว่างการตรวจสอบสถานะ IP สำหรับทรัพยากร IP นี้ ในคู่มือนี้เราจะเพิ่มเซิร์ฟเวอร์พยาน (10.0.2.4) ในรายการ ping ของเรา คลิกขวาที่ทรัพยากร IP (ip-10.1.0.10) และเลือกคุณสมบัติ: คุณจะเห็นว่าเริ่มแรกไม่มีรายการ ping ถูกกำหนดค่าสำหรับซับเน็ต 10.1.0.0 ของเรา คลิก“ แก้ไขรายการ Ping”: ป้อน“ 10.0.2.4” (ที่อยู่ IP ของเซิร์ฟเวอร์พยานของเรา) คลิก“ เพิ่มที่อยู่” และสุดท้ายคลิก“ บันทึกรายการ”: คุณจะกลับสู่แผงคุณสมบัติ IP และสามารถยืนยันได้ว่า เพิ่ม 10.0.2.4 ไปยังรายการ ping คลิกตกลงเพื่อปิดหน้าต่าง:
สร้างลำดับชั้นของทรัพยากร MySQL
ถัดไปสร้างทรัพยากรคลัสเตอร์ MySQL ทรัพยากร MySQL มีหน้าที่รับผิดชอบในการหยุด / เริ่ม / ตรวจสอบฐานข้อมูล MySQL ของคุณ ก่อนที่จะสร้างทรัพยากร MySQL ตรวจสอบให้แน่ใจว่าฐานข้อมูลกำลังทำงานอยู่ เรียกใช้“ ps -ef | grep sql” เพื่อตรวจสอบ ถ้ามันทำงานได้ยอดเยี่ยม – ไม่มีอะไรทำ ถ้าไม่เริ่มต้นให้สำรองฐานข้อมูล:
# mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 - ข้อมูล = / var / lib / mysql --log &
วิธีสร้างคลิกไอคอน“ สีเขียวบวก” เพื่อสร้างทรัพยากรใหม่: ทำตามตัวช่วยสร้างเพื่อสร้างทรัพยากร IP ด้วยการเลือกเหล่านี้:
เลือกชุดการกู้คืน: ฐานข้อมูล MySQL ประเภท Switchback: อัจฉริยะ เซิร์ฟเวอร์: node1 ตำแหน่งของ my.cnf: / var / lib / mysql ตำแหน่งของไฟล์ปฏิบัติการ MySQL: / usr / bin แท็กฐานข้อมูล: mysql
ขยายทรัพยากร IP ด้วยการเลือกดังต่อไปนี้:
เซิร์ฟเวอร์เป้าหมาย: node2 ประเภท Switchback: อัจฉริยะ ลำดับความสำคัญของเทมเพลต: 1 เป้าหมายลำดับความสำคัญ: 10
เป็นผลให้คลัสเตอร์ของคุณจะมีลักษณะดังนี้ โปรดสังเกตว่าทรัพยากรการจำลองแบบข้อมูลถูกย้ายโดยอัตโนมัติภายใต้ฐานข้อมูล (สร้างการขึ้นต่อกันโดยอัตโนมัติ) เพื่อให้แน่ใจว่าจะถูกนำมาออนไลน์ก่อนฐานข้อมูลเสมอ:
สร้างทรัพยากร EC2 เพื่อจัดการตารางเส้นทางเมื่อเกิดความล้มเหลว
SPS-Linux มีคุณสมบัติเฉพาะที่ช่วยให้ทรัพยากรสามารถเข้าแทนที่ระหว่างโหนดในโซนความพร้อมใช้งานที่แตกต่างกันและภูมิภาค ที่นี่ชุดการกู้คืน EC2 (ตัวแทนเอเจนต์คลัสเตอร์) ใช้เพื่อจัดการรูทเทเบิ้ลเพื่อให้การเชื่อมต่อกับ IP เสมือนถูกส่งไปยังโหนดคลัสเตอร์ที่ใช้งาน ในการสร้างคลิกไอคอน“ สีเขียวบวก” เพื่อสร้างทรัพยากรใหม่: ทำตามตัวช่วยสร้างเพื่อสร้างทรัพยากร EC2 ด้วยการเลือกเหล่านี้:
เลือกชุดการกู้คืน: Amazon EC2 ประเภท Switchback: อัจฉริยะ เซิร์ฟเวอร์: node1 หน้าแรกของ EC2: / opt / aws URL EC2: ec2.us-west-2.amazonaws.com รหัสการเข้าถึง AWS: (ป้อนรหัสการเข้าถึงที่ได้รับก่อนหน้านี้) AWS Secret Key: (ป้อนรหัสลับที่ได้รับก่อนหน้านี้) ประเภททรัพยากร EC2: RouteTable (คลัสเตอร์แบ็กเอนด์) ทรัพยากร IP: ip-10.1.0.10 แท็กทรัพยากร EC2: ec2-10.1.0.10
ขยายทรัพยากร IP ด้วยการเลือกดังต่อไปนี้:
เซิร์ฟเวอร์เป้าหมาย: node2 ประเภท Switchback: อัจฉริยะ ลำดับความสำคัญของเทมเพลต: 1 เป้าหมายลำดับความสำคัญ: 10 แท็กทรัพยากร EC2: ec2-10.1.0.10
คลัสเตอร์จะมีลักษณะเช่นนี้ สังเกตว่าทรัพยากร EC2 อยู่ใต้ทรัพยากร IP อย่างไร:
สร้างการพึ่งพาระหว่างทรัพยากร IP และทรัพยากรฐานข้อมูล MySQL
สร้างการพึ่งพาระหว่างทรัพยากร IP และทรัพยากรฐานข้อมูล MySQL เพื่อให้ล้มเหลวพร้อมกันเป็นกลุ่ม คลิกขวาที่ทรัพยากร“ mysql” และเลือก“ สร้างการพึ่งพา”: บนหน้าจอต่อไปนี้เลือกทรัพยากร“ ip-10.1.0.10” เป็นการพึ่งพา คลิกถัดไปและดำเนินการต่อผ่านตัวช่วยสร้าง: ณ จุดนี้การกำหนดค่าคลัสเตอร์ SPS-Linux เสร็จสมบูรณ์ ลำดับชั้นของทรัพยากรจะมีลักษณะดังนี้:
ทดสอบ Cluster Connectivity
ณ จุดนี้การกำหนดค่า Amazon EC2 และคลัสเตอร์ทั้งหมดของเราเสร็จสมบูรณ์แล้ว! รีซอร์สคลัสเตอร์กำลังแอ็คทีฟบน node1: ทดสอบการเชื่อมต่อกับคลัสเตอร์จากเซิร์ฟเวอร์พยาน (หรืออินสแตนซ์ linux อื่นหากคุณมีหนึ่ง) SSH ลงในเซิร์ฟเวอร์พยาน "sudo su -" เพื่อเข้าถึงรูท ติดตั้งไคลเอนต์ mysql หากต้องการ:
[root @itness ~] # yum -y ติดตั้ง mysql
ทดสอบการเชื่อมต่อ MySQL กับคลัสเตอร์:
[root @itness ~] # mysql --host = 10.1.0.10 mysql -u root -p
ดำเนินการแบบสอบถาม MySQL ต่อไปนี้เพื่อแสดงชื่อโฮสต์ของโหนดคลัสเตอร์ที่ใช้งาน:
MariaDB [mysql]> เลือก @@ ชื่อโฮสต์; ------------ | @@ ชื่อโฮสต์ | ------------ | โหนด 1 | ------------ 1 แถวในชุด (0.00 วินาที) MariaDB [mysql]>
ใช้ LifeKeeper GUI, failover จาก Node1 -> Node2″ คลิกขวาที่ทรัพยากร mysql ใต้ node2 และเลือก“ In Service …”: หลังจาก failover เสร็จสิ้นให้รันการสืบค้น MySQL อีกครั้ง คุณจะสังเกตเห็นว่าไคลเอนต์ MySQL ตรวจพบว่าเซสชันนั้นหายไป (ระหว่างการทำงานล้มเหลว) และเชื่อมต่อใหม่โดยอัตโนมัติ: ดำเนินการแบบสอบถาม MySQL ต่อไปนี้เพื่อแสดงชื่อโฮสต์ของโหนดคลัสเตอร์ที่ใช้งานอยู่ซึ่งยืนยันว่าตอนนี้“ node2” เปิดใช้งานแล้ว:
MariaDB [mysql]> เลือก @@ ชื่อโฮสต์; ข้อผิดพลาด 2006 (HY000): เซิร์ฟเวอร์ MySQL หายไป ไม่มีการเชื่อมต่อ. กำลังพยายามเชื่อมต่อใหม่ ... ID การเชื่อมต่อ: 12 ฐานข้อมูลปัจจุบัน: mysql ------------ | @@ ชื่อโฮสต์ | ------------ | โหนด 2 | ------------ 1 แถวในชุด (0.53 วินาที) MariaDB [mysql]>
ชอบคำแนะนำทีละขั้นตอนเหล่านี้เพื่อกำหนดค่าคลัสเตอร์ล้มเหลว Linux ใน Amazon EC2 ที่ไม่มีที่เก็บข้อมูลที่ใช้ร่วมกันอ่านเพิ่มเติมได้ที่นี่เผยแพร่ซ้ำโดยได้รับอนุญาตจาก Linuxclustering