หน้าเว็บ

แสดงบทความที่มีป้ายกำกับ high availability แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ high availability แสดงบทความทั้งหมด

วันอังคารที่ 20 ตุลาคม พ.ศ. 2552

Introduction to Ultra Monkey

Ultra Monkey: High Availability and Load Balancing Solution for Linux

[Monkey]


Overview

Cluster Network Services
Ultra Monkey is a project to create load balanced and highly available network services. For example a cluster of web servers that appear as a single web server to end-users. The service may be for end-users across the world connected via the internet, or for enterprise users connected via an intranet.


Diagram: Sample Ultra Network

1. An end-user sends a packet to the virtual service
2. Ultra Monkey selects a server and forwards the packet
3. The server replies
4. Ultra Monkey forwards this reply back to the end-user

Flexible
Ultra Monkey makes use of the Linux operating system to provide a flexible solution that can be tailored to a wide range of needs. From small clusters of only two nodes to large systems serving thousands of connections per second.


Open Source Working with Your Network

Use Any Operating System
While the Ultra Monkey software itself runs on Linux, it is able to provide clustering for virtually any network services running on an operating system that can communicate using TCP or UDP. This means almost any operating system, including Windows™, Solaris™ and of course Linux itself.

Supports a Wide Range of Protocols
Ultra Monkey supports a wide range of protocols, with native health checks for: Web, Mail, FTP, News, LDAP and DNS. Other protocols can be suported using a non-native health check or by adding a custom health check.

Open Source
Ultra Monkey is open source. It makes use of software from various open source projects including The Linux Virtual Server and Heartbeat. Members of the Ultra Monkey project actively contribute to the open source projects whose software is used. Horms, the Ultra Monkey project lead, is one of the core members of the development teams for both Heartbeat and The Linux Virtual Server.


Easy to Install and Maintain

Download, Install, Configure, Project Complete!

Supported Distribitions
Ultra Monkey provides binary packages for a selected list of distributions. Source packages are also available. At this time the following distributions are supported:

  • Debian Woody (Stable 3.0)
  • Debian Sid (Unstable/Testing)
  • Fedora Core 1
  • Red Hat Enterprise Linux 3.0
  • Red Hat 9
  • Red Hat 8.0
  • Red Hat 7.3

Updates
The Ultra Monkey team tracks software packages and releases updates for security or other critical bugs. This includes the kernel as Ultra Monkey provides a kernel patched with The Linux Virtual Server and other related patches. Announcements of these updates packages are available in the News Archive.

Documentation
Ultra Monkey also provides concise documentation in English and Japanese to allow system administrators to easily install and configure an Ultra Monkey cluster. The documentation is available online at www.ultramonkey.org and ultramonkey.jp. Ultra Monkey does not however place restrictions on the way that the underlying software and Linux itself is used, allowing users to customise the system to their needs.


Key Features

Download

The current release is Ultra Monkey 3 which has been built and tested on Debian Sarge and Red Hat Enterprise Linux 3.0. It includes comprehensive documentation on the software included, the technologies used and how to configure a highly available and/or load balanced network. more....

The previous release, 2.0.1, is also available, though new deployments are incouraged to use Ultra Monkey 3. more....

Miscellaneous

The history lists all releases of Ultra Monkey.

More Information

For more information please see the Ultra Monkey web site.


Thanks : ultramonkey.org/

วันพฤหัสบดีที่ 20 สิงหาคม พ.ศ. 2552

Linux Cluster style

Linux Cluster style

1. High Availability or Fail-Over Cluster

2. Load balancing Cluster


1. High Availibility (HA) or Fail-Over Cluster

เป็นการทำงานในส่วนของการทำ fail over คือ เมื่อ server ตัวหลักเกิด down ขึ้นมา ตัวรองจะขึ้นมาทำงานแทน ถ้าดูจากรูปก็คือตัว linux director สมมติ server ซ้ายตัวกลางคือ server A ,server ทางขวาตัวกลางคือ server B และ real server( server ข้างล่าง) คือ server ที่ให้บริการในส่วนของ service ต่างๆที่ไม่ต้องการ downtime จากนั้นก็ config ค่าการทำงานใน server A และ B ให้ทั้งสองทำงานแบบ HA คือให้ server A เป็นตัวหลัก server B เป็นตัวรอง ซึ่ง server ทั้งสองตัวจะมีไอพีกลางหนึ่งไอพี เพื่อใช้เป็นตัวกลางระหว่าง server A และ server B



จากรูปเป็นการให้บริการในส่วนของ web server โดยมี virtual ip (ไอพีกลาง) 192.168.1.1/24 คือไอพีที่ server A ซึ่งเป็น server ตัวหลักเป็นใช้งานอยู่ และเปิดการใช้งานในส่วนของ service web server

ส่วน server B ซึ่งเป็น server รองก็ค่อยทำการตรวจสอบว่า server A down หรือไม่ ถ้าserver A down ก็จะทำการ take resource เป็น server หลักและใช้ไอพี 192.168.1.1/24 แทนและเปิดบริการในส่วน service web server ด้วย

ต่อมาถ้า server A up ขึ้นมา สามารถเซ็ตว่าให้ up ขึ้นมาเป็น server หลักหรือไม่ หรือว่าให้รอจนกว่า server B จะ down ลงไปแล้วจึงขึ้นเป็น server หลัก

การนำมาใช้งานเช่นทำ MySQL Server แบบ Fail-Over (เนื่องจาก MySQL ไม่สนับสนุนการใช้งานแบบ SAN/NAS ถ้าต้องการใช้งานแบบ Cluster เต็มรูปแบบ แนะนำ MySQL Cluster ครับ)

Software: RedHat Cluster Suite, Linux High Availability


2. Load balancing Cluster

เป็นการทำงานแบบช่วยกันทำและยังไม่ขึ้นกับ platform ของ server ด้วยเพราะว่าเราจะใช้ linux cluster เป็นตัวจัดการ



server หลักจะมี 4 ไอพี คือ

  • ไอพีของ interface 2 ip
  • ไอพี virtual 2 ip


หลักการ (เหมือน fail over) คือ จะมี server หลัก สมมติเป็น server A นะ จะมีไอพี 192.168.1.1 ,192.168.1.2 ,10.1.1.2 ,10.1.1.1 และจะเปิด port ที่ real server ให้บริการ เพื่อที่จะ forward ไปให้ real server ( ซึ่งอาจมี server ที่ให้บริการ service เดียวกันอยู่มากกว่าหนึ่งตัว ตัวอย่างเช่น มี web server อยู่สองตัวและมีคนเข้ามาใช้งานประมาณ 10 connection server A ก็จะ forword ไปให้ real server ที่ให้บริการ web server ให้มี connection อย่างละ 5 connection/server ( ขึ้นอยู่กับการตั้งค่าด้วย ) ) ส่วน server B ก็จะคอยตรวจสอบว่า server A down หรือไม่ ถ้า down ก็จะ take มาเป็น server หลักแทน

การนำมาใช้งาน เช่่น ทำ Web Server ที่มีการใช้งานสูง (เครื่องเดียวไม่เพียงพอต่อการใช้งาน)

Software: RedHat Cluster Suite, Linux Virtual Server

Thanks : Ezylinux

วันพุธที่ 19 สิงหาคม พ.ศ. 2552

LVS หรือ Linux Virtual Sever อีกทางเลือกหนึ่ง

คงมีหลายท่านที่กำลังมองหา Solution ในการใช้งาน Clustering เพื่อเพิ่มความคงอยู่ได้(high availability ) ของระบบ และการทำ Load Balancing เพื่อกระจายสมดุลภาระงานแก่ระบบ

ก่อนอื่นต้องขอขอบคุณ google และ คุณวิบูลย์ วราสิทธิชัย เจ้าหน้าที่ประจำศูนย์คอมฯ มหาวิทยาลัยสงขลานครินทร์ ที่ได้ให้การสนับสนุนข้อมูลและความรู้ต่าง ๆ

มาเข้าเรื่องกันเลย วันนี้ขอนำเสนอ LVS หรือ Linux Virtual Sever เป็นโครงการที่ทำการศึกษาการสร้างระบบบริการเสมือน (Virtual Server System) ให้สามารถทำงานทางด้านการกระจายภาระและมีความคงทนสูงสำหรับใช้ในเทคโนโลยี คลัสเตอริ่ง (Clustering Technology) เพื่อให้เป็นเครื่องบริการที่ใช้ระบบปฏิบัติการลินุกซ์

โครงการ LVS พัฒนาซอฟต์แวร์เพื่อ
• กระจายสมดุลภาระระดับไอพี (IP Load Balancing Software, IPVS)
• การกระจายภาระตามระดับของแอพลิเคชัน (Application-Level Load Balancing Software, KTCPVS)
• การจัดการคลัสเตอร์

ในที่นี้จะขอกล่างถึง IPVS ซึ่งมีคุณสมบัติกระจายสมดุลภาระระดับไอพี ซึ่งมีหลักการทำงานดังรูป






เมื่อ มองระบบคลัสเตอร์นี้ทั้งระบบ จะเสมือนว่าไคลเอนต์ได้ทำการติดต่อกับเซิร์ฟเวอร์เพียงเครื่องเดียว จึงเรียกระบบนี้ว่า “เซิร์ฟเวอร์เสมือน" (Virtual Server)

โดยมีคุณลักษณะดังนี้
  • ทำงานเป็นเลเยอร์ 4 สวิตชิ่ง (Layer 4 Switching) ที่รองรับโปรโตคอล ทีซีพี (TCP) และยูดีพี (UDP)
  • สามารถกระจายภาระไปยังเรียลเซิร์ฟเวอร์ที่ใช้ระบบปฏิบัติการที่แตกต่างกันได้
  • จะ มีเซิร์ฟเวอร์หนึ่งเครื่องทำหน้าที่รับการร้องขอบริการที่เข้ามาทางหมายเลข ไอพีเสมือน (Virtual IP) จากนั้นจะทำการกระจายสมดุลภาระไปยังเซิร์ฟเวอร์ที่ให้บริการ
  • เรียกเซิร์ฟเวอร์ที่ใช้ในการกระจายภาระนี้ว่า "ไดเรกเตอร์เซิร์ฟเวอร์"(Director Server) หรือลินุกซ์ไดเรกเตอร์ (Linux Director)
  • เรียกเซิร์ฟเวอร์ที่ให้บริการนี้ว่า "เรียลเซิร์ฟเวอร์" (Real Server)

มีรูปแบบการเชื่อมต่ออยู่สามแบบ คือ

1. IPVS via Network Address Translation (IPVS/NAT)



  • ลินุกซ์ไดเรกเตอร์และเรียลเซิร์ฟเวอร์ต่างๆ ที่อยู่ภายในระบบคลัสเตอร์จะทำการเชื่อมต่อกันโดยสวิตช์ (Switch) หรือฮับ (Hub)
  • ใช้เทคนิคเปลี่ยนหมายเลขไอพีและหมายเลขพอร์ตเป็นของเซิร์ฟเวอร์ที่ได้เลือกไว้
  • เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังลินุกซ์ไดเรกเตอร์

2. IPVS via Direct Routing (IPVS/DR)



  • ใช้เทคนิคเปลี่ยนฮาร์ดแวร์แอดเดรส(MAC Address) ในเดตาเฟรม (DataFrame) ให้เป็นของเซิร์ฟเวอร์ในคลัสเตอร์ที่ได้เลือกไว้
  • เพิ่มลูปแบ็คอินเทอร์เฟส lo:0 มีหมายเลขไอพีเสมือนที่เซิร์ฟเวอร์ทุกเครื่องในคลัสเตอร์
  • เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังไคลเอนต์โดยตรง

3. IPVS via IP Tunneling (IPVS/TUN)




  • ใช้เทคนิคที่ทำการห่อหุ้มไอพีเดตาแกรม(IP Datagram Encapsulate) ภายในไอพีเดตาแกรมอีกทีหนึ่ง
  • เพิ่มอินเตอร์เฟสแบบ Tunnel คือ tunl0 มีหมายเลขไอพีเสมือนที่เซิร์ฟเวอร์ทุกเครื่องในคลัสเตอร์
  • เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังไคลเอนต์โดยตรง

ส่วนรูปแบบของ Scheduling Algorithms มีดังต่อไปนี้
  1. Round - Robin (rr)
  2. Least - Connection (lc)
  3. Weighted Least - Connection (wlc)
  4. Destination Hashing (dh)
  5. Source Hashing (sh)
  6. และอื่นๆ

รู้สึกว่าหากลงไปลึกคงจมแน่ๆ ( เมา ) วันนี้ขอพักไว้แค่นี้ก่อน ยังมีการทำงานของ Heartbeat อีกส่วนหนึ่ง
สำหรับข้อมูลในการ ติดตั้งใช้งาน ลองศึกษาจาก เอกสาร นี้
และลองมาดูการประยุกต์ใช้งานของคุณ pphetra : ทำความรู้จัก LVS

วันศุกร์ที่ 24 กรกฎาคม พ.ศ. 2552

Linux high availability

Linux high availability


ความ หมายของคำว่า High Availability คือศักยภาพของ ระบบบริการระบบหนึ่งที่สามารถให้บริการได้อย่างต่อเนื่อง มีประสิทธิภาพรองรับการขอเข้าใช้บริการได้ตลอดเวลา หรือที่เรียกกันว่า 24 x 7 ซึ่งก็คือสามารถให้บริการได้ตลอด 24 ชั่วโมงทั้ง 7 วันต่อ 1 สัปดาห์ โดยไม่มีช่วงเวลาที่เรียกว่า downtime หรือมีน้อยที่สุดจนผู้ขอใช้บริการไม่รู้สึกช่วงเวลาที่ไม่ต่อเนื่องนั้น

ถ้าถามถึงประโยชน์ของ High Availability นั้นแน่นอนว่าคงพอจะนึกกันออก แต่ขอสรุปให้ฟังว่ามีดังต่อไปนี้
• ป้องกันความเสียหายและความสูญเสียที่องค์กรจะต้อง เผชิญทางด้านตัวเงิน หากระบบที่ไม่สามารถหยุดทำงานได้ เกิดปัญหาจนไม่สามารถให้บริการได้ ความเสียหายดังกล่าวสามารถคำนวนโดยใช้ค่าที่เรียกว่า Cost of Downtime ซึ่งเกิดจากการประเมินและรวบรวมตัวเลขของความเสียหายที่อาจจะเกิดขึ้น ในกรณีที่เครื่องคอมพิว เตอร์หยุดทำงาน เช่น การสูญเสียรายได้ ค่าใช้จ่ายคงที่ หรือค่าใช้จ่ายแปรผันที่เกิดขึ้นในช่วงเวลาที่เครื่องไม่สามารถทำงานได้ ค่าแรง ค่าจ้างพนักงาน ค่าปรับต่างๆ ที่ต้องจ่ายให้แก่คู่ค้า
• ป้องกันและแก้ไขความสูญเสียทางด้านอื่น ๆ ไม่ว่าจะเป็น โอกาสของธุรกิจ ความสามารถในการแข่งขันกับคู่แข่ง และที่สำคัญก็คือ ข้อมูลที่สำคัญ ๆ ขององค์กร ไม่ว่าจะเป็นข้อมูลทางด้านการเงิน หรือข้อมูลทางด้านการตลาด ตลอดจนข้อมูลของลูกค้าที่ใช้กันอยู่ตลอดเวลาที่อาจจะสูญเสียไปด้วย
และเพื่อให้สามารถเข้าใจเรื่องของ Linux high availability มากขึ้น นี่คือภาพแสดงโครงสร้างของกลุ่ม server ที่รองรับการทำงานของ Linux high availability
Note

Cost of Downtime นี้เมื่อ ลองรวบรวมตัวเลขจริงๆ แล้ว อาจจะพบว่ามีมูลค่าสูงมาก และสามารถนำมาเป็นจุดตัดสินใจในการจัดสรรงบประมาณ เพื่อใช้ในการป้องกันความเสียหายที่อาจจะเกิดขึ้นได้ ทั้งนี้เพื่อให้ระบบมีเสถียรภาพในการทำงานให้ได้มากที่สุด จึงเป็นที่มาของบทความในวันนี้ของเรา Linux high availability ซึ่งเป็นส่วนหนึ่งในความสามารถของ Linux clustering concept

จากภาพจะเห็นว่ามี ip address เสมือน (virtual ip address) ซึ่งเป็น ip address ที่ เครื่องไคลเอนต์เข้าใจว่าเป็นผู้ให้บริการ แต่แท้จริงแล้วมีเครื่อง server ที่คอยให้บริการอยู่ 2 เครื่องด้วยกัน คือ

เครื่อง heartbeat1 ที่มี ip เท่ากับ 10.0.13.201 และ

เครื่อง heartbeat2 ที่มี ip เท่ากับ 10.0.13.202

ทั้ง 2 เครื่องจะสลับกันให้บริการผ่าน virtual ip address ซึ่งในที่นี้ก็คือ 10.0.13.200 โดยจะมีเครื่องหนึ่งที่ถูกระบุให้ทำหน้าที่เป็นเครื่องหลักในบทความนี้ขอใช้ เครื่อง heartbeat1 เป็นเครื่องหลัก และเครื่องที่ทำหน้าที่สำรองขอใช้เครื่อง heartbeat2 ในการอธิบายต่อไป

Prerequisite

ก่อนอื่นจะต้องทำการดาวน์โหลดโปรแกรมที่ช่วยในการทำ Linux high availability ซึ่งก็คือโปรแกรม Heartbeat ซึ่งปัจจุบันได้พัฒนาไปถึงเวอร์ชั่น 1.0.3 ซึ่งถูกอัพเดทครั้งสุดท้ายเมื่อวันที่ 26/06/2003 ได้ที่ web site http://www.linux-ha.org/download/

การเชื่อมต่อ

ส่วนเชื่อมต่อหรือ Interface ที่ใช้ในการทำ heartbeat สามารถเลือกได้ 2 แบบคือ ผ่าน serial line หรือผ่าน UTP cable ดังรูป

รูปที่ 1 การเชื่อมต่อ heartbeat interface ผ่าน serial line

รูปที่ 2 การเชื่อมต่อ heartbeat interface ผ่าน UTP Cable (แยก interface ของ ethernet )
หลังจากสามารถเลือกรูปแบบของการเชื่อมต่อในส่วน heartbeat ได้แล้ว ก็ต้องมีวิธีการตรวจสอบการเชื่อมต่อดังกล่าว เพื่อไม่ให้เกิดปัญหาทางด้านเทคนิคในการติดตั้งและใช้งานระบบโดย

ส่วนของการเชื่อมต่อเป็นดังรูปที่ 1 คือเชื่อมต่อผ่าน serial line สามารถทดสอบโดยการ ส่ง message ผ่าน serial line ระหว่างเครื่อง เช่น ที่เครื่อง heartbeat1 พิมพ์

#cat < /dev/ttyS0

ที่เครื่อง heartbeat2 พิมพ์

#echo test message > /dev/ttyS0
ควรจะปรากฎข้อความ test message ที่หน้าจอของเครื่อง heartbeat1
ส่วนของการเชื่อมต่อเป็นดังรูปที่ 2 คือเชื่อมผ่าน UTP cable ซึ่งแยก interface ของ ethernet ตามความเหมาะสมทางด้านความปลอดภัยและ traffic ของเน็ตเวิร์ค สามารถทดสอบโดยการ ping ip address ของเครื่อง server อื่น ๆ ในกลุ่ม เช่น ที่เครื่อง heartbeat1 ใช้คำสั่ง
#ping heartbeat2
และที่เครื่อง heartbeat2 ใช้คำสั่ง #ping heartbeat1 ควรจะมีแพ็กเกจตอบกลับ เป็นต้น
หลักการทำงาน
ที่เครื่อง server แต่ละตัวจะทำการตรวจสอบกันแบบไขว้ (cross checking) เพื่อตรวจสอบว่าเครื่องอื่น ๆ ในกลุ่มยังทำงานอยู่หรือไม่
ต้องขอให้ทำความเข้าใจกันก่อนว่าการตรวจสอบการให้บริการบนเครื่องหลักของโปรแกรม Heartbeat นั้นมีอยู่ 2 ส่วนด้วยกันคือ
1. ผ่าน LAN Interface เพื่อตรวจสอบการเชื่อมต่อของ network แต่ตัวเครื่องหลักเองอาจจะยังไม่มีปัญหาก็ได้
2. ผ่าน Heartbeat Interface (ที่กล่าวในส่วนของ “การเชื่อมต่อ”)เพื่อตรวจสอบว่าเครื่องหลัก (main) ยังทำงานปกติอยู่หรือไม่
Note

เราสามารถเลือก configuration ให้โปรแกรม Heartbeat ดังกล่าวตรวจสอบการเชื่อมต่อในทั้ง 2 ส่วน หรือเลือกตรวจสอบเพียงอย่างใดอย่างหนึ่งก็ได้ เช่น High Availability ของคุณให้บริการเป็น web server การตรวจสอบเพียงแค่ส่วนของ LAN Interface ว่ามีปัญหาในการให้บริการหรือไม่ ก็ถือว่าเพียงพอต่อการที่เครื่องสำรองจะเข้าใจว่าเครื่องหลักตายและทำการ take over virtual ip เพื่อให้บริการแทนนั้น อาจ configure ให้ทำการตรวจสอบเพียง Interface เดียว โดย set ไว้ในไฟล์ /etc/ha.d/ha.cf (ระบุให้ใช้ interface Heartbeat เป็นอันเดียวกับ interface LAN โดยการเพิ่ม comment หน้าพารามิเตอร์ serial นั่นเอง ) ดังรูป

โดยหลักการทำงานจะขออธิบายในกรณีที่โปรแกรม Heartbeat ของคุณตรวจสอบการเชื่อมต่อในทั้ง 2 ส่วนโดยเริ่มจาก เครื่องที่หน้าที่เป็นเครื่องสำรอง (backup) จะทำการส่ง packet ผ่าน LAN Interface และ Heartbeat Interface เพื่อตรวจสอบว่าเครื่องหลัก (main) ยังทำงานปกติอยู่หรือไม่
ถ้าพบว่าที่ LAN Interface และ Heartbeat Interface ไม่มี packet ตอบกลับมาทั้งคู่ ก็จะทำการ take over Virtual IP Address เพื่อทำงานแทนเครื่องหลักทันที
กล่าวคือ กรณีนี้การ Take over IP Address จะทำงานสมบูรณ์ได้ก็ต่อเมื่อ
1. LAN IP Address คุย (syn-ack connection)กันไม่ได้
2. Heartbeat Interface คุยกันไม่ได้
Installation
การติดตั้งโปรแกรม Heartbeat ดังกล่าว ต้องทำการติดตั้งทั้งเครื่องหลักและเครื่องสำรองในกลุ่ม (cluster) ที่ต้องการทำ High Avaibility ร่วมกัน วิธีการติดตั้งเป็นไปตามขั้นตอนต่าง ๆ ดังต่อไปนี้
1.login โดย root หรือเทียบเท่าและติดตั้งโดยใช้คำสั่ง
#rpm-Uvh heartbeat-x.x.x-x.i386.rpm
หรือในกรณีที่ source ของโปรแกรมเป็นไฟล์ .tar.gz ให้ทำการแตกsourceโดยใช้คำสั่ง
#tar xzvpf heartbeat-x.x.x.tar.gz
เปลี่ยนพาธไปยังพาธsourceของโปรแกรมที่ tar ออกมา ทำการคอมไพล์ และติดตั้ง (install) ตามลำดับ
#cd heartbeat-x.x.x
#./ConfigureMe configure
#make
#make install
2. แก้ไขไฟล์ /etc/hosts เพื่อใส่ชื่อสมาชิกทุกตัวในกลุ่ม (cluster) ที่ต้องการทำให้มีความสามารถในการ High Availability โดยใช้คำสั่ง
#vi /etc/hosts
ตัวอย่างไฟล์ได้แก่

10.0.13.201 heartbeat1

10.0.13.202 heartbeat2

3. เปลี่ยนพาธไปยัง /etc/ha.d ด้วยคำสั่ง

#cd /etc/ha.d
ทำการค้นหาไฟล์ที่เกี่ยวข้องกับโปรแกรม Heartbeat ด้วย คำสั่ง
#rpm-q heartbeat -d

ซึ่งการค้นหาไฟล์ดังกล่าวเป็นความสามารถของคำสั่ง rpm ที่ ช่วยในการ list ไฟล์และไดเรกทอรี่ทั้งหมดที่ถูกติดตั้งเข้าสู่ระบบขณะทำการinstallโปรแกรม rpm ใด ๆ ซึ่งในที่นี้คือโปรแกรม heartbeat

4. ทำการ copy ไฟล์ /usr/share/doc/packages/heartbeat/authkey มายังพาธปัจจุบันซึ่งก็คือ /etc/ha.d ด้วยคำสั่ง
#cp /usr/share/doc/packages/heartbeat/authkey .

5. เปลี่ยนแปลง permission หรือสิทธิในการเข้าใช้ไฟล์ให้ ผู้ใช้ที่เป็น root เท่านั้น ที่สามารถอ่าน (read) และเขียน (write) ได้ด้วยคำสั่ง

#chmod 600 authkey

6. ทำการแก้ไขไฟล์ authkey ด้วยคำสั่ง #vi authkey และนำ comment หน้าบรรทัด auth 1 ออก ไฟล์ /etc/ha.d/authkey จะมีตัวอย่างดังต่อไปนี้

auth 1
1 crc
Note

ไฟล์ authkey เป็นไฟล์ที่ใช้สำหรับการระบุวิธีการตรวจสอบสิทธิ (authentication) ซึ่งในเรื่องของการทำ High Availability นี้มีชนิดของการตรวจสอบสิทธิหรือเข้ารหัสอยู่ 3 ชนิดคือ crc , md5 และ sha1 โดย

• หากคุณมั่นใจว่าระบบ heartbeat ของคุณทำงานร่วมกันในสภาพแวดล้อมที่ปลอดภัยจากการโจมตี ก็ควรใช้ crc เนื่องจากใช้ทรัพยากรของเครื่องน้อยที่สุด
• หากคุณไม่มั่นใจในเรื่องของความปลอดภัย แต่ยังคงห่วงเรื่องทรัพยากรของเครื่องอยู่ เราขอแนะนำให้ใช้ md5
• แต่หากคุณต้องการความปลอดภัยสูงสุดจากการบุกรุกและไม่ห่วงเรื่องทรัพยากรก็สามารถใช้ sha1 ได้
โดยรูปแบบของไฟล์ authkey คือ
auth
[]
ภายใต้เงื่อนไขคือ ทั้ง 2 บรรทัดจะต้องตรงกัน
7. ทำการ copy ไฟล์ /usr/share/doc/packages/heartbeat/ha.cf มายังพาธปัจจุบัน ด้วยคำสั่ง
#cp /usr/share/doc/packages/heartbeat/ha.cf .
8. นำ comment หน้าพารามิเตอร์ที่ต้องการออก เพิ่มและแก้ไขบรรทัดดังต่อไปนี้
node [hostname1]

node [hostname2]

nice_failback on

ตัวอย่างไฟล์ /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 4
deadtime 10
initdead 30
udpport 694
udp eth0
mcast eth0 225.0.0.1 694 1 1
node heartbeat1
node heartbeat2
nice_failback on
9. ทำการ copy ไฟล์ /usr/share/doc/packages/heartbeat/haresources มายังพาธปัจจุบัน ด้วยคำสั่ง
#cp /usr/share/doc/packages/heartbeat/haresources .

10. แก้ไขไฟล์ haresources ด้วยการเพิ่มบรรทัด [hostname] [virtual ip address] [service] โดย hostname คือชื่อของโฮสต์ที่ต้องการให้เป็นตัวหลักในการให้บริการ

service คือบริการที่ถูกระบุไว้ใต้พาธ /etc/rc.d/init.d หรือพาธ /etc/ha.d/resource.d
การ start โปรแกรม Heartbeat
Note
ให้ทำการแก้ไขไฟล์ haresources ให้เหมือนกันสำหรับทุกเครื่องที่อยู่ในกลุ่ม (cluster)
ตัวอย่างไฟล์ /etc/ha.d/haresources
heartbeat 110.0.13.200 httpd

โดยปกติหากติดตั้งโปรแกรม Heartbeat จากแพ็กเกจ rpm นั้นโปรแกรมจะถูกติดตั้งไปในพาธ /etc/rc.d/init.d และลิงค์ไปยังพาธของ run level ต่าง ๆ เพื่อใช้ในการstart/stop โปรแกรมขณะเปิดหรือปิดเครื่อง ภายใต้การทำงานของ system V startup คือภายใต้เงื่อนไขของ run level ต่าง ๆ นั่นเอง แต่หากเป็นการติดตั้งโปรแกรมโดยคอมไพล์ด้วยตนเองผ่านไฟล์ heartbeat-x.x.x.tar.gz แล้วหล่ะก็ คุณควรทำการสร้างลิงค์ไฟล์ จาก /etc/rc.d/init.d/heartbeat ไปยัง run level ต่าง ๆ เพื่อให้การทำงานของโปรแกรม Heartbeat เป็นไปอย่างอัตโนมัติดังนี้

1. เพื่อให้ service heartbeat ถูกฆ่า (stop) ขณะ halt ระบบให้ใช้คำสั่ง
#cd /etc/rc.d/rc0.d
#ln -s ../init.d/heartbeat K05heartbeat

2. เพื่อให้ service heartbeat ถูกstart ขณะเปิดเครื่องให้ใช้ คำสั่ง
#cd /etc/rc.d/rc3.d
#ln -s ../init.d/heartbeat S75heartbeat
3. เพื่อให้ service heartbeat ถูกstart ขณะ startx(graphic mode)ให้ใช้คำสั่ง
#cd /etc/rc.d/rc5.d
#ln -s ../init.d/heartbeat S75heartbeat
4. เพื่อให้ service heartbeat ถูกฆ่า (stop) ขณะ reboot ระบบให้ใช้คำสั่ง
#cd /etc/rc.d/rc6.d
#ln -s ../init.d/heartbeat K05heartbeat
การทดสอบ
หลังจากติดตั้งและทำความเข้าใจหลักการทำงานของ Linux high availability กันแล้วก็มาถึงขั้นของการทดสอบโดยการ down ระบบที่เป็นเครื่องหลัก (main server) จะปรากฏว่าเครื่องสำรอง (backup server) ในกลุ่มเดียวกันจะขึ้นมาทำงาน โดย take over Virtual IP Address และทำงานรองรับบริการต่าง ๆ ที่เครื่องหลักให้บริการอยู่ได้ตามปกติ โดยผู้ขอใช้บริการเครื่อง server ดังกล่าวจะไม่รู้สึกว่ามีการเปลี่ยนแปลงเครื่องที่ใช้ในการให้บริการเกิด ขึ้น
ข้อมูลล็อกของโปรแกรม Heartbeat (logging)
ในขณะที่ Linux high availability (heartbeat) ของคุณถูก start และให้บริการนั้นคุณสามารถเข้าไปดู log ของการทำงานได้ที่ไฟล์ /var/log/ha-log หรือไฟล์ตามค่าพารามิเตอร์ logfile (ที่คุณกำหนดไว้ในไฟล์ /etc/ha.d/ha.cf)ของเครื่องสำรองที่ให้บริการซึ่งในที่นี้คือ เครื่อง heartbeat2 ขณะทำการ take over virtual ip (10.0.13.200) เมื่อเครื่องหลัก (heartbeat1) มีปัญหา ณ เวลา 08:48 จนกระทั่งหยุดการทำงานของ heartbeat2 เพื่อให้ heartbeat1 กลับมาทำงานเป็นเครื่องหลักอีกครั้งในเวลา 18:51 ซึ่งควรมีข้อมูลดังต่อไปนี้
heartbeat: 2003/06/23_08:47:26 info: **************************
heartbeat: 2003/06/23_08:47:27 info: Configuration validated. Starting heartbeat 0.4.9.2
heartbeat: 2003/06/23_08:47:27 info: nice_failback is in effect.
heartbeat: 2003/06/23_08:47:27 info: heartbeat: version 0.4.9.2
heartbeat: 2003/06/23_08:47:32 info: Heartbeat generation: 12
heartbeat: 2003/06/23_08:47:33 info: Creating FIFO /var/run/heartbeat-fifo.
heartbeat: 2003/06/23_08:47:33 notice: UDP heartbeat started on port 694 interface eth0
heartbeat: 2003/06/23_08:47:33 notice: UDP multicast heartbeat started for group 225.0.0.1 port 694 interface eth0 (ttl=1 loop=1)
heartbeat: 2003/06/23_08:47:33 info: Local status now set to: ‘up’
heartbeat: 2003/06/23_08:47:35 info: Heartbeat restart on node heartbeat2
heartbeat: 2003/06/23_08:47:35 info: Link heartbeat2:eth0 up.
heartbeat: 2003/06/23_08:47:36 info: Running /etc/ha.d/rc.d/ifstat ifstat
heartbeat: 2003/06/23_08:48:06 WARN: node heartbeat1: is dead
heartbeat: 2003/06/23_08:48:06 info: Local status now set to: ‘active’
heartbeat: 2003/06/23_08:48:06 info: Node heartbeat2: status up
heartbeat: 2003/06/23_08:48:06 info: Node heartbeat2: status active
heartbeat: 2003/06/23_08:48:06 info: Running /etc/ha.d/rc.d/status status
heartbeat: 2003/06/23_08:48:06 info: Running /etc/ha.d/rc.d/status status
heartbeat: 2003/06/23_08:48:06 info: Running /etc/ha.d/rc.d/status status
heartbeat: 2003/06/23_08:48:06 info: No local resources [/usr/lib/heartbeat/ResourceManager listkeys heartbeat2]
heartbeat: 2003/06/23_08:48:06 info: Resource acquisition completed.
heartbeat: 2003/06/23_08:48:07 info: Taking over resource group 10.0.13.200
heartbeat: 2003/06/23_08:48:07 info: Acquiring resource group: heartbeat1 10.0.13.200
heartbeat: 2003/06/23_08:48:07 info: Running /etc/ha.d/resource.d/IPaddr 10.0.13.200 start
heartbeat: 2003/06/23_08:48:08 info: ifconfig eth0:0 10.0.13.200 netmask 255.255.0.0 broadcast 160.1.255.255
heartbeat: 2003/06/23_08:48:08 info: Sending Gratuitous Arp for 10.0.13.200 on eth0:0 [eth0]
heartbeat: 2003/06/23_08:48:08 info: /usr/lib/heartbeat/mach_down: nice_failback: acquiring foreign resources
heartbeat: 2003/06/23_08:48:08 info: mach_down takeover complete.
heartbeat: 2003/06/23_08:48:08 info: mach_down takeover complete.
heartbeat: 2003/06/23_08:48:18 info: Resource acquisition completed. (none)
heartbeat: 2003/06/23_08:48:18 info: local resource transition completed.
heartbeat: 2003/06/23_08:49:07 info: Heartbeat restart on node heartbeat1
heartbeat: 2003/06/23_08:49:07 info: Link heartbeat1:eth0 up.
heartbeat: 2003/06/23_08:49:07 WARN: Late heartbeat: Node heartbeat1: interval 92380 ms
heartbeat: 2003/06/23_08:49:07 info: Node heartbeat1: status up
heartbeat: 2003/06/23_08:49:07 info: Running /etc/ha.d/rc.d/ifstat ifstat
heartbeat: 2003/06/23_08:49:07 info: Running /etc/ha.d/rc.d/status status
heartbeat: 2003/06/23_08:49:10 info: Node heartbeat1: status active
heartbeat: 2003/06/23_08:49:10 info: remote resource transition completed.
heartbeat: 2003/06/23_08:49:10 info: Running /etc/ha.d/rc.d/status status
heartbeat: 2003/06/23_11:49:59 WARN: Late heartbeat: Node heartbeat1: interval 8000 ms
heartbeat: 2003/06/23_12:05:34 WARN: Late heartbeat: Node heartbeat1: interval 8000 ms
heartbeat: 2003/06/23_13:33:03 info: 1 lost packet(s) for [heartbeat1] [4262:4264]
heartbeat: 2003/06/23_13:33:03 WARN: Late heartbeat: Node heartbeat1: interval 8040 ms
heartbeat: 2003/06/23_13:33:04 info: No pkts missing from heartbeat1!
heartbeat: 2003/06/23_18:51:18 info: Heartbeat shutdown in progress. (507)
heartbeat: 2003/06/23_18:51:18 info: Giving up all HA resources.
heartbeat: 2003/06/23_18:51:46 info: Releasing resource group: heartbeat1 10.0.13.200
heartbeat: 2003/06/23_18:51:55 info: Running /etc/ha.d/resource.d/IPaddr 10.0.13.200 stop
heartbeat: 2003/06/23_18:52:04 info: IP Address 10.0.13.200 released
heartbeat: 2003/06/23_18:52:04 info: All HA resources relinquished.
heartbeat: 2003/06/23_18:52:05 info: Heartbeat shutdown complete.
ข้อควรระวัง
การทดสอบโดยทำการดึง สาย LAN หรือ Heartbeat ตัวใดตัวหนึ่งออก จะทำให้ server แต่ละตัวต่างคิดว่า server อีกตัวหนึ่ง down และพยายาม take over IP ทำให้หลังจากเสียบ (plug) สาย LAN หรือ Heartbeat กลับเข้าไปแล้ว จะเกิดปัญหา เนื่องจาก server ทั้งคู่พยายาม take over IP เดียวกัน และเกิดการทำงานขัดแย้ง (conflict) กัน เพราะฉะนั้นควรทำการทดสอบโดยการ shutdown และ restart ระบบ จะดีกว่า การดึงสาย LAN แล้วเสียบกลับเข้าไปใหม่

Thanks : www.opensource.co.th