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
  • ไทย

กำหนดค่าคลัสเตอร์ Failover Linux ใน Amazon EC2 โดยไม่มีที่เก็บข้อมูลที่ใช้ร่วมกัน

Date: ธันวาคม 20, 2018
ป้ายกำกับ:AWS, Linux failover clusters, MySQL

ทีละขั้นตอนวิธีการกำหนดค่าคลัสเตอร์ล้มเหลวลินุกซ์ใน Microsoft Azure IaaS ไม่มีที่เก็บข้อมูลที่ใช้ร่วมกันสีฟ้า sanless

ทีละขั้นตอน: วิธีการกำหนดค่าคลัสเตอร์ 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:

  1. สร้าง Virtual Private Cloud (VPC)
  2. สร้างเกตเวย์อินเทอร์เน็ต
  3. สร้าง Subnets (โซนที่มีอยู่)
  4. กำหนดค่าตารางเส้นทาง
  5. กำหนดค่ากลุ่มรักษาความปลอดภัย
  6. เปิดใช้อินสแตนซ์
  7. สร้าง Elastic IP
  8. สร้างรายการเส้นทางสำหรับ Virtual IP
  9. ปิดใช้งานการตรวจสอบแหล่งที่มา / ปลายทางสำหรับ ENI's
  10. ขอรับคีย์รหัสการเข้าถึงและรหัสลับการเข้าถึง
  11. การกำหนดค่าระบบปฏิบัติการ Linux
  12. ติดตั้ง EC2 API Tools
  13. ติดตั้งและกำหนดค่า MySQL
  14. ติดตั้งและกำหนดค่าคลัสเตอร์
  15. ทดสอบ Cluster Connectivity

ภาพรวม

บทความนี้จะอธิบายถึงวิธีการสร้างคลัสเตอร์ภายในภูมิภาค Amazon EC2 เดียว  โหนดคลัสเตอร์ (node1, node2 และเซิร์ฟเวอร์พยาน) จะอยู่โซนความพร้อมใช้งานที่แตกต่างกันสำหรับความพร้อมใช้งานสูงสุด  นี่ก็หมายความว่าโหนดจะอยู่ใน subnet ที่ต่างกัน การกำหนดค่าจะมีลักษณะดังนีAWS-ลินุกซ์ MySQL้: จะใช้ที่อยู่ 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” vpc1ใต้“ VPC ของคุณ” ตรวจสอบให้แน่ใจว่าคุณได้เลือกภูมิภาคที่เหมาะสมที่ด้านบนขวาของหน้าจอ  ในคู่มือนี้จะใช้พื้นที่ "US West (Oregon)" เนื่องจากเป็นพื้นที่ที่มีเขตการใช้งาน 3 แห่ง   สำหรับข้อมูลเพิ่มเติมเกี่ยวกับภูมิภาคและโซนว่างคลิกทvpc2ี่นี่ตั้งชื่อ VPC และระบุบล็อก IP ที่คุณต้องการใช้  10.0.0.0/16 จะถูกใช้ในคู่มือนี้vpc3: คุณควรเห็น VPC ที่สร้างขึ้นใหม่บนหน้าจอ“ Your VPCs”: vpc4  

สร้างเกตเวย์อินเทอร์เน็ต

จากนั้นสร้าง Internet Gateway  จำเป็นต้องใช้ถ้าคุณต้องการให้อินสแตนซ์ (VM) ของคุณสามารถสื่อสารกับอินเทอร์เน็ตได้ ที่เมนูด้านซ้ายเลือก Internet Gateways และคลิกปุ่ม Create Internet Gateway  ตั้งชื่อและสร้าง: ถัดไปอินเทอร์เน็ต gateway1แนบเกตเวย์อินเทอร์เน็ตกับ VPC ของคุณ:อินเทอร์เน็ต gateway2 เลือก VPC ของคุณและคลิกแนบ: อินเทอร์เน็ต gateway3

สร้าง 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 นำทางไปยังเครือข่ายย่อยแล้วสร้างซับsubnets1เน็ต: ตั้งชื่อซับเน็ตแรก (“ Subnet1)” เลือกโซนความพร้อมใช้งาน us-west-2a และกำหนดบล็อกเครือข่าย (10.0.0.0/24)subnets2: ทำซ้ำ สร้างโซนความพร้อมเครือข่ายย่อยที่สอง us-west-2b:subnets3 ทำซ้ำเพื่อสร้างเครือข่ายย่อยที่สามในโซนความพร้อมใช้งาน ussubnets4-west-2c: เมื่อเสร็จแล้วให้ตรวจสอบว่ามีการสร้างเครือข่ายย่อย 3 แห่งแต่ละแห่งด้วย CIDR ที่แตกต่างกัน โซนเท่าที่เห็นด้านล่าง: subnets5

กำหนดค่าตารางเส้นทาง

อัปเดตตารางเส้นทางของ VPC เพื่อให้การรับส่งข้อมูลไปยังโลกภายนอกถูกส่งไปยัง Internet Gateway ที่สร้างขึ้นในขั้นตอนก่อนหน้า  จากหน้าแดชบอร์ด VPC เลือกเส้นทางตาราง   ไปที่แท็บเส้นทางและโดยค่าเริ่มต้นจะมีเส้นทางเดียวเท่านั้นที่จะอนุญาตให้มีการรับส่งข้อมูลภายใน VPC เท่านั้น คลิกแก้ไข:เส้นทาง table1 เพิ่มเส้นทางอื่น: ปเส้นทาง table2ลายทางของเส้นทางใหม่จะเป็น“ 0.0.0.0/0” (อินเทอร์เน็ต) และสำหรับเป้าหมายให้เลือกเกตเวย์อินเทอร์เน็ตของคุณ  จากนั้นคลิกบันทเส้นทาง table3ึก: ถัดไปเชื่อมโยง 3 เครือข่ายย่อยกับตารางเส้นทาง   คลิกแท็บ“ เครือข่ายย่อย” และแก้ไข: ทำเเส้นทาง table4ครื่องหมายในช่องถัดจากเครือข่ายย่อยทั้ง 3เส้นทาง table5 และบันทึก: ตรวจสอบว่าเครือข่ายย่อยทั้ง 3 เกี่ยวข้องกับตเส้นทาง table6ารางเส้นทางหลัก: ต่อมาเราจะกลับมาและอัพเดตตารางเส้นทางอีกครั้ง การกำหนดเส้นทางที่จะอนุญาตให้ทราฟฟิกสื่อสารกับ IP เสมือนของคลัสเตอร์ แต่ต้องดำเนินการหลังจากสร้าง linux Instances (VMs) แล้ว

กำหนดค่ากลุ่มรักษาความปลอดภัย

แก้ไขกลุ่มความปลอดภัย (ไฟร์วอลล์เสมือน) เพื่ออนุญาตการรับส่งข้อมูล SSH และ VNC  ทั้งสองจะถูกใช้เพื่อกำหนดค่าอินสแตนซ์ linux รวมถึงการติดตั้ง / การกำหนดค่าซอฟต์แวร์คลัสเตอร์ ในเมนูด้านซ้ายเลือก "กลุ่มรักษาความปลอดภัย" แล้วคลิกแท็บ "กฎขาเข้า"  คลิกแก้ไข:การรักษาความปลอดภัยกลุ่มที่ 1 เพิ่มกฎสำหรับทั้ง SSH (พอร์ต 22) และ VNC  VNC โดยทั่วไปใช้พอร์ตใน 5900 ขึ้นอยู่กับวิธีที่คุณกำหนดค่าดังนั้นสำหรับวัตถุประสงค์ของคู่มือนี้เราจะเปิดช่วงพอร์ต 5900-5910  กำหนดค่าตามที่ตั้งค่า VNC ของคุณ: การรักษาความปลอดภัย group2  

เปิดใช้อินสแตนซ์

เราจะจัดเตรียม 3 อินสแตนซ์ (Virtual Machines) ในคู่มือนี้  สองเครื่องแรกของ VMs (เรียกว่า "node1" และ "node2") จะทำหน้าที่เป็นโหนดคลัสเตอร์ที่มีความสามารถในการนำฐานข้อมูล MySQL มาใช้และเป็นแหล่งข้อมูลออนไลน์ที่เกี่ยวข้อง  VM ที่ 3 จะทำหน้าที่เป็นเซิร์ฟเวอร์พยานของคลัสเตอร์สำหรับการป้องกันเพิ่มเติมจากสมองแยก เพื่อให้แน่ใจว่ามีความพร้อมใช้งานสูงสุดวีเอ็มวีทั้ง 3 ตัวจะถูกปรับใช้ในโซนความพร้อมใช้งานที่แตกต่างกันภายในภูมิภาคเดียว  ซึ่งหมายความว่าแต่ละอินสแตนซ์จะอยู่ในซับเน็ตที่แตกต่างกัน ไปที่แดชบอร์ด AWS หลักและเลือก EC2: เปิดตัว-instance1

สร้าง“node1”

สร้างอินสแตนซ์แรกของคุณ ("node1")  คลิกเรียกใช้อินสแตนซ์เปิดตัว-instance2: เลือกการแจกจ่าย linux ของคุณ  ซอฟต์แวร์คลัสเตอร์ที่ใช้ในภายหลังรองรับ RHEL, SLES, CentOS และ Oracle Linux  ในคู่มือนี้เราจะใช้ RHEL 7.X: ปรับขเปิดตัว-instance3นาดอินสแตนซ์ของคุณให้เหมาะสม  สำหรับวัตถุประสงค์ของคู่มือนี้และเพื่อลดค่าใช้จ่ายจะใช้ขนาด t2.micro เนื่องจากเป็นระดับฟรีที่มีสิทธิ์  ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดและราคาของอินสแตนซ์ เปิดตัว-instance4 ถัดไปกำหนดค่ารายละเอียดของอินสแตนซ์  สิ่งสำคัญ: ตรวจสอบให้แน่ใจว่าได้เปิดตัวอินสแตนซ์แรกนี้ (VM) ลงใน "Subnet1" และกำหนดที่อยู่ IP ที่ถูกต้องสำหรับเครือข่ายย่อย (10.0.0.0/24) – ต่ำกว่า 10.0.0.4 เนื่องจากเป็น IP ฟรีครั้งแรกในเครือข่ายย่อย  หมายเหตุ: .1 / .2 / .3 ในซับเน็ตที่กำหนดใด ๆ ใน AWS ถูกสงวนไว้และไม่สามารถใช้ได้ เปิดตัว-instance5 จากนั้นเพิ่มดิสก์พิเศษลงในโหนดคลัสเตอร์ (ซึ่งจะทำทั้ง "node1" และ "node2")  ดิสก์นี้จะเก็บฐานข้อมูล MySQL ของเราและต่อมาจะจำลองแบบระหว่างโหนด หมายเหตุ: คุณไม่จำเป็นต้องเพิ่มดิสก์พิเศษลงในโหนด "witness"  เฉพาะ "node1" และ "node2" เพิ่มวอลุ่มใหม่และป้อนขนาดที่ต้องกาเปิดตัว-instance6ร: กำหนดแท็กสำหรับอินสแตนซ์โหนดเปิดตัว-instance7 1: เชื่อมโยงอินสแตนซ์กับกลุ่มความปลอดภัยที่มีอยู่ดังนั้นกฎไฟร์วอลล์ที่สร้างขึ้นก่อนเปิดตัว-instance8หน้านี้จะเปิเปิดตัว-instance9ดใช้งาน: คลิกเรียกใช้: สำคัญ: ในสภาพแวดล้อม AWS ของคุณคุณจะต้องสร้างคู่คีย์ใหม่  ไฟล์คีย์ส่วนตัวจะต้องถูกเก็บไว้ในที่ปลอดภัยเนื่องจากจะต้องใช้เมื่อคุณ SSH เข้าสู่อินสแตนซ์ linux เปิดตัว-instance10

สร้าง "node2"

ทำซ้ำขั้นตอนข้างต้นเพื่อสร้างอินสแตนซ์ของ linux ที่สอง (node2)  กำหนดค่าให้ตรงกับ Node1  อย่างไรก็ตามโปรดตรวจสอบให้แน่ใจว่าคุณปรับใช้แอปพลิเคชันดังกล่าวลงใน "Subnet2" (เขตความพร้อมในการใช้งานของเราตะวันตก -2b)  ช่วง IP สำหรับ Subnet2 คือ 10.0.1.0/24 ดังนั้นจึงใช้ IP ของ 10.0.1.4 ที่นี่: ตรวจสเปิดตัว-instance11อบให้แน่ใจว่าได้เพิ่มดิสก์ที่สองลงใน Node2 เช่นกัน  ควรมีขนาดที่แน่นอนเท่ากับดิสก์ที่คุณเพิ่มลงใน Node1: ใหเปิดตัว-instance12้แท็กที่สองแก่อินสแตนซ์ที่สอง “Node2”: เปิดตัว-instance13

สร้าง "พยาน"

ทำซ้ำขั้นตอนข้างต้นเพื่อสร้างอินสแตนซ์ linux ที่สาม (พยาน)  กำหนดค่าให้เหมือนกับ Node1 และ Node2 ยกเว้นคุณไม่ต้องเพิ่มดิสก์อันดับที่ 2 เนื่องจากอินสแตนซ์นี้จะทำหน้าที่เป็นพยานให้กับคลัสเตอร์เท่านั้นและจะไม่นำ MySQL online มาใช้ ตรวจสอบให้แน่ใจว่าคุณได้ใช้งาน "Subnet3" (โซนความพร้อมในการใช้งานของเราตะวันตก -2c)  ช่วง IP สำหรับ Subnet2 คือ 10.0.2.0/24 ดังนั้นจึงใช้ IP ของ 10.0.2.4 ที่นเปิดตัว-instance14ี่: หมายเหตุ: การกำหนดค่าดิสก์เริ่มต้นนั้นใช้ได้สำหรับโหนดพยาน  ไม่จำเป็นต้องใช้ดิสก์ตัวที่สอเปิดตัว-instance15ง: ติดแท็กโหนดโหนดพยาน: เปิดตัว-instance16

อาจใช้เวลาสักครู่ในการจัดเตรียม 3 กรณีของคุณ  หลังจากเสร็จสิ้นคุณจะเห็นรายชื่อที่แสดงอยู่ในแผงควบคุม EC2: เปิดตัว-instance17

สร้าง Elastic IP

จากนั้นสร้าง Elastic IP ซึ่งเป็นที่อยู่ IP สาธารณะที่จะใช้ในการเชื่อมต่อกับอินสแตนซ์ของคุณจากโลกภายนอก  เลือก Elastic IPs ในเมนูด้านซ้ายจากนั้นคลิก“ จัดสรรที่อยู่ใหม่ยืดหยุ่น IP1”: เลือก IP แบบยืดหยุ่นที่สร้างขึ้นใหม่คลิกขวาและเลือก“ เชื่อมโยงที่ยืดหยุ่น IP2อยู่”: เชื่อมโยง IP ยืดหยุ่นนี้กยืดหยุ่น IP3ับ 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" ปิดการใช้งาน-แหล่งปลายทาง-CHECK1 เลือก "ปิดใช้งาน": ปิดการใช้งาน-แหล่งปลายทาง-check2

ขอรับคีย์รหัสการเข้าถึงและรหัสลับการเข้าถึง

ต่อมาในคู่มือซอฟต์แวร์คลัสเตอร์จะใช้ AWS Command Line Interface (CLI) เพื่อจัดการกับรายการตารางเส้นทางสำหรับ Virtual IP ของคลัสเตอร์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลไปยังโหนดคลัสเตอร์ที่ใช้งานอยู่  เพื่อให้สามารถใช้งานได้คุณจะต้องได้รับรหัสการเข้าถึงและรหัสลับการเข้าถึงเพื่อให้ AWS CLI สามารถตรวจสอบสิทธิ์ได้อย่างถูกต้อง ที่ด้านบนขวาของแดชบอร์ด EC2 คลิกที่ชื่อของคุณและใต้เลือก“ ข้อมูลรับรองความปลอดภัย” จากรายการแบบหล่นลง: ขยเข้าถึง key1ายส่วน“ คีย์การเข้าถึง (รหัสการเข้าถึงและรหัสการเข้าถึงข้อมูลลับ)” จากนั้นคลิก “ สร้างรหัสการเข้าถึงใหม่”  ดาวน์โหลดไฟล์คีย์และเก็บไฟล์ไว้ในที่ปลอดภัย เข้าถึง key2

การกำหนดค่าระบบปฏิบัติการ Linux

เชื่อมต่อกับอินสแตนซ์ลินุกซ์:

หากต้องการเชื่อมต่อกับอินสแตนซ์ linux ที่สร้างขึ้นใหม่ (ผ่าน SSH) ให้คลิกขวาที่อินสแตนซ์และเลือก "เชื่อมต่อ"  ซึ่งจะแสดงคำแนะนำสำหรับการเชื่อมต่อกับอินสแตนซ์  คุณจะต้องใช้ไฟล์กุญแจส่วนตัวที่คุณสร้าง / ดาวน์โหลดในขั้นตอนconnect1ก่อนหน้connect2า: ตัวอย่าง: ที่นี่เราจะปล่อยแดชบอร์ด 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 และรหัสผ่านที่ระบุในระหว่างการสร้าง 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.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 (เป้าหมาย)  คลิกที่ไอคอน“ บวกสีเขียว” เพื่อสร้างทรัพยากรใหม่: การจำลองข้อมูล 1ทำตามตัวช่วยสร้างด้วยตัวเลือกเหล่านี้:

โปรดเลือกชุดการกู้คืน: การจำลองข้อมูล
ประเภท 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

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

สร้าง IP เสมือน

ถัดไปสร้างทรัพยากรคลัสเตอร์ IP เสมือน  คลิกที่ไอคอน“ บวกสีเขียว” เพื่อสร้างทรัพยากรใหม่ip1 เสมือน: ทำตามตัวช่วยสร้างด้วยเพื่อสร้างทรัพยากร 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) และเลือกคุณสมบัติ: คุณจะAWS-ping-List1เห็นว่าเริ่มแรกไม่มีรายการ ping ถูกกำหนดค่าสำหรับซับเน็ต 10.1.0.0 ของเรา   คลิก“ แก้ไขรายการ PingAWS-ping-List2”: ป้อน“ 10.0.2.4” (ที่อยู่ IP ของเซิร์ฟเวอร์พยานของเรา) คลิก“ เพิ่มที่อยู่” และสุดท้ายคลิก“ AWS-ping-List3บันทึกรายการ”: คุณจะกลับสู่แผงคุณสมบัติ IP และสามารถยืนยันได้ว่า เพิ่ม 10.0.2.4 ไปยังรายการ ping  คลิกตกลงเพื่อปิดหน้าต่าง: AWS-ping-list4

สร้างลำดับชั้นของทรัพยากร 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

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

สร้างทรัพยากร 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 อย่างไร: AWS หลังจาก EC2-resource1

สร้างการพึ่งพาระหว่างทรัพยากร IP และทรัพยากรฐานข้อมูล MySQL

สร้างการพึ่งพาระหว่างทรัพยากร IP และทรัพยากรฐานข้อมูล MySQL เพื่อให้ล้มเหลวพร้อมกันเป็นกลุ่ม  คลิกขวาที่ทรัพยากร“ mysql” และเลือก“ สร้างการพึ่งพาสร้าง-dependency1”: บนหน้าจอต่อไปนี้เลือกทรัพยากร“ ip-10.1.0.10” เป็นการพึ่งพา  คลิกถัดไปและดำเนินการต่อผ่านตัวช่วยสร้สร้าง-dependency2าง: ณ จุดนี้การกำหนดค่าคลัสเตอร์ SPS-Linux เสร็จสมบูรณ์  ลำดับชั้นของทรัพยากรจะมีลักษณะดังนี้: สร้าง-dependency3

ทดสอบ Cluster Connectivity

ณ จุดนี้การกำหนดค่า Amazon EC2 และคลัสเตอร์ทั้งหมดของเราเสร็จสมบูรณ์แล้ว! รีซอร์สคลัสเตอร์กำลังแอ็คทีฟบน nodeสร้าง-dependency31: ทดสอบการเชื่อมต่อกับคลัสเตอร์จากเซิร์ฟเวอร์พยาน (หรืออินสแตนซ์ 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 …”: หลังจากAWS-failover1 failover เสร็จสิ้นให้รันการสืบค้น MySQL อีกครั้ง  คุณจะสังเกตเห็นว่าไคลเอนต์ MySQL ตรวจพบว่าเซสชันนั้นหายไป (ระหว่างการทำงานล้มเหลว) และเชื่อมต่อใหม่โดยอัตโนมัติ: ดำเนินการแบบสอบถาม MySQL ต่อไปนี้เพื่อแสดงชื่อโฮสต์ของโหนดคลัสเตอร์ที่ใช้งานอยู่ซึ่งยืนยันว่าตอนนี้“ node2” เปิดใช้งานแล้ว:

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

  ชอบคำแนะนำทีละขั้นตอนเหล่านี้เพื่อกำหนดค่าคลัสเตอร์ล้มเหลว Linux ใน Amazon EC2 ที่ไม่มีที่เก็บข้อมูลที่ใช้ร่วมกันอ่านเพิ่มเติมได้ที่นี่เผยแพร่ซ้ำโดยได้รับอนุญาตจาก Linuxclustering

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