ditsoft

เข้าสู่ระบบจัดการข้อมุล



จะทำ High Availability Cluster (Heartbeat) On CentOS

วันนี้มีหน้าที่ไปสัมภาษณ์พนักงานเงินรายได้ตำแหน่ง เจ้าหน้าที่วิเคราะห์นโยบายและแผน มีตอนหนึ่งที่มีโอกาสได้ถามจากผู้เข้าสัมภาษณ์ "คิดว่าระบบสารสนเทศที่เรามีปัญหามันอยู่ที่ใหน" คำตอบคือ ตอนลงทะเบียนเรียนเนื่องจากระบบล่มตอนมีการเข้าใช้งานมากๆ ก็เลยกลับมานั่งหาข้อมูลที่เคยทำไว้แล้วแต่ยังไม่ได้ Implement ใช้งานจริงๆ เพราะขาดส่วนประกอบหลายๆอย่าง แต่ก็ได้ทำ คู่มือติดตั้งไว้แล้ว และลองทำจริงๆไปบ้างแล้วโดยเราจะทำเป้นลักษณะการทำงานทดแทนซึ่งกันและกัน High Availability Cluster เริมเลย

ความต้องการของเราก็คือ เราจะให้มี server 2 เครื่องแล้วทำงานทดแทนกัน 

server01 IP Address 10.0.0.10 เป็น Primary

server02 IP Address 10.0.0.11 เป็น Secondary

ที่ server01 และ server02

#uname -n //เพื่อทดสอบว่า hostname แสดงถูกต้องหรือไม่

#yum install heartbeat //ติดตั้ง sofeware สำหรับมาทำหน้าที่ที่ต้องการ

heartbeat-2.08
heartbeat-pils-2.08
heartbeat-stonith-2.08

จากนั้นจะทำการ configuration สาม file ดังนี้

authkeys
ha.cf
haresources

สำรอง file ไว้ก่อนกันความเสียหายหรือ configuration ผิดพลาดจะได้นำมาทำใหม่ได้

cp /usr/share/doc/heartbeat-2.1.2/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.2/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.2/haresources /etc/ha.d/

แก้ไข file แรก

vim /etc/ha.d/authkeys 

เพิ่มบรรทัดดังนี้

auth 2
2 sha1 test-ha

จากนั้นกำหนด permission เพื่อให้ root สามารถใช้งานได้คนเดียว

chmod 600 /etc/ha.d/authkeys

แก้ไข file ต่อไป คือ ha.cf

vim /etc/ha.d/ha.cf

เพิ่มบรรทัดต่อไปนี้

logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node server01
node server02

ต่อไปทำการแก้ไข server02 

uname -n

vim /etc/ha.d/haresources

server01 10.0.0.1 httpd //เพิ่ม บรรทัด จากนั้นเราจะ copy directory จาก server01 มายัง server02

scp -r /etc/ha.d/ root@server02:/etc/

จากนั้นจะ start httpd

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default

vim /etc/httpd/conf/httpd.conf //เพิ่ม Listen 10.0.0.2:80

copy /etc/httpd/conf/httpd.conf ไปยัง server02

scp /etc/httpd/conf/httpd.conf root@server02:/etc/httpd/conf/

ต่อจากนั้นจะทดสอบ โดยสร้าง index.html ทั้งสอง server

// Server01

echo "server01 heartbeat test server" > /var/www/html/index.html

// Server02

echo "server02 heartbeat test server" > /var/www/html/index.html

จากนั้นทดสอบการทำงาน โดย start heartbeat ทั้งสอง server

/etc/init.d/heartbeat start

ลอง เปิด Browser เพื่อทดสอบทัง้สอง server เช่น http://10.0.0.1

และทดสอบ /etc/init.d/heartbeat stop 

กรณีนี้ ip address .10 และ .11 จะเป็น IP Address สำหรับให้เครื่อง  server ใช้ติกต่อกันผ่าน heartbeat