Cài đặt apache cluster với heartbeat

Đã thử qua và chạy rất tốt, nên mình xin tổng hợp lại quá trình cài đặt:
Tham khảo tại đây http://www.quantrimang.com.vn/de-website-luon-online-voi-cluster-apache-high-availability-linux-33352

Hệ thống webserver với apache hoạt động tuy ổn định nhưng vẫn cần nâng cao độ sẵn sàng với các chức năng như cluster. Phần này trình bày cách cấu hình một hệ thống apache cluster với heartbeat, trong đó bao gồm 2 nodes, 1 chạy dưới chế độ master, node còn lại ở chế độ slaver.

Bước 1. Cài đặt httpd và heartbeat

#yum install –y httpd heartbeat*

Bước 2. Cấu hình heartbeat

#cp /usr/share/doc/heartbeat*/ha.cf /etc/ha.d/
#cp /usr/share/doc/heartbeat*/haresources /etc/ha.d/
#cp /usr/share/doc/heartbeat*/authkeys /etc/ha.d/

Trong file /etc/hosts, bổ sung thêm tên hostname và địa chỉ IP để hai nút có thể giao tiếp được với nhau:

172.17.2.235 cluster-centos1
172.17.2.236 cluster-centos2

apache cluster

Tiếp theo, chỉnh sửa file cấu hình /etc/ha.d/ha.cf bằng cách thêm vào cuối file những dòng sau để heartbeat có thể hoạt động:
logfile /var/log/ha-log # chỗ để log mọi thứ từ heartbeat
logfacility local0      # tiện ích sử dụng cho syslog hoặc logger
keepalive 2             # thời gian giữa các heartbeat
deadtime 30             # thời gian đến khi host được đưa ra ‘chết’
warntime 10            # thời gian trước khi cung cấp cảnh báo chậm trễ “late heartbeat”.
initdead 120            # thời gian chết đầu tiên (initdead)
udpport 694             # cổng udp cho truyền thông bcast hoặc ucast
bcast eth1              # giao diện quảng bá (broadcast)
ucast eth1 10.0.0.1   # cluster 2 nút, vì thế không cần dùng dạng đa quảng bá (multicast)
auto_failback on        # tự động gửi tài nguyên sai trở lại nút chính
node cluster-centos1  # tên của nút đầu tiên
node cluster-centos2  # tên của nút thứ hai

Đây là các tuỳ chọn cơ sở cần thiết để heartbeat hoạt động. File này phải được cấu hình giống hệt nhau trên cả hai nút, ngoại trừ phần “ucast” (nơi để địa chỉ IP của hàng để gửi các gói tới).

File tiếp theo là /etc/ha.d/haresources. Trong file này bạn cần định nghĩa tên nút chính, địa chỉ IP ảo (cluster IP) và tài nguyên dùng để bắt đầu. Ở trường hợp của chúng ta thì đó là Web server Apache.

Chỉ cần một dòng dữ liệu ở đây:

cluster-centos1 172.17.2.235 httpd

Hãy chắc chắn rằng file này giống nhau hoàn toàn trên cả hai nút. Chú ý tên tài nguyên là tên script khởi tạo đặt trong thư mục /etc/init.d. Nếu tên tài nguyên trong /etc/init.d không hoàn toàn giống nhau, heartbeat sẽ không thể tìm thấy khi cố gắng đọc nó và cả Apache lẫn hearbeat đều không thể khởi động được.

File liên quan đến heartbeat cuối cùng là /etc/ha.d/authkeys. File này cũng phải hoàn toàn giống nhau trên cả hai nút và chỉ được đọc hoặc ghi bởi người dùng root. Nếu quyền hạn bị thiết lập khác đi, heartbeat sẽ từ chối khởi động. Bạn cần phải cấu hình file như thế này:

auth 1
1 crc

và giới hạn quyền đọc hoặc ghi chỉ dành cho người dùng root:

chmod 600 /etc/ha.d/authkeys

3. Cấu hình httpd

Bây giờ là cấu hình Apache service. Chúng ta muốn Apache nghe địa chỉ IP ảo 172.17.2.237 và cần trỏ thư mục Apache gốc tới điểm cài đặt dữ liệu /data, nơi các file Web được lưu lại. Chú ý là nơi lưu trữ dành cho Apache có thể là một nơi cụ thể từ thư mục file hệ thống cục bộ tới mạng khu vực lưu trữ. Tất nhiên nếu dữ liệu trong cả hai nút không giống nhau thì sẽ chẳng có điểm nào trong cluster failover cả. Nếu bạn không có thiết bị lưu trữ mạng mở rộng (như Fibre Channel chẳng hạn), bạn có thể cài đặt bất kỳ file hệ thống nào như SMB, NFS, iSCSI, hoặc SAN là thư mục địa phương để dữ liệu có thể được truy cập trên từng nút khi các nút hoạt động. Điều này được thực hiện bằng cách chỉnh sửa các thông số đầu vào trong file /etc/httpd/conf/httpd.conf như sau (ít nhất là trên phân phối CentOS):
Listen 172.17.2.237:80
DocumentRoot “/data”

Bỏ chức năng bắt đầu tự động khởi động trong thời gian boot cho Apache service là khá quan trọng. Khi đó heartbeat sẽ bắt đầu và kết thúc dịch vụ khi cần thiết. Vô hiệu hoá chức năng bắt đầu với câu lệnh sau (trên hệ thống Red Hat):

chkconfig httpd remove

Phải đảm bảo cấu hình Apache giống nhau trên cả hai nút.

Kiểm tra

Bây giờ chúng ta sẽ kiểm tra thử chương trình làm việc với cấu hình vừa thiết lập, bắt đầu tạo cluster mới, khởi động dịch vụ hearbeat trên cả hai nút:

/etc/init.d/heartbeat start

Xem thư mục /var/log/ha-log trên cả hai nút. Nếu tất cả được cấu hình chính xác, bạn sẽ thấy thông tin trong các file log như sau:

Configuration validated. Starting heartbeat 1.2.3.cvs.20050927
heartbeat: version 1.2.3.cvs.20050927
Link node1.example.com:eth1 up.
Link node2.example.com:eth1 up.
Status update for node node2.example.com: status active
Local status now set to: ‘active’
remote resource transition completed.
Local Resource acquisition completed. (none)
node2.example.com wants to go standby [foreign]
acquire local HA resources (standby).
local HA resource acquisition completed (standby).
Standby resource acquisition done [foreign].
Initial resource acquisition complete (auto_failback)
remote resource transition completed.

Tiếp theo là kiểm tra failover, khởi động lại server master (server chính). Server slave (server phụ) là dịch vụ Apache. Nếu mọi thứ hoạt động tốt bạn sẽ thấy như sau:

Received shutdown notice from ‘node1.example.com’.
Resources being acquired from node1.example.com.
acquire local HA resources (standby).
local HA resource acquisition completed (standby).
Standby resource acquisition done [foreign].
Running /etc/ha.d/rc.d/status status
Taking over resource group 192.168.1.5
Acquiring resource group: node1.example.com 192.168.1.5 httpd
mach_down takeover complete for node node1.example.com.
node node1.example.com: is dead
Dead node node1.example.com gave up resources.
Link node1.example.com:eth1 dead.

Khi master online trở lại, thông số trên Apache service như sau:

Heartbeat restart on node node1.example.comheartbeat
Link node1.example.com:eth1 up.
node2.example.com wants to go standby [foreign]
standby: node1.example.com can take our foreign resources
give up foreign HA resources (standby).
Releasing resource group: node1.example.com 192.168.1.5 httpd
Local standby process completed [foreign].
remote resource transition completed.
Other node completed standby takeover of foreign resources.

Đó là tất cả các bước để xây dựng một Web server cluster mang tính sẵn sàng cao (active – stand by)

Bình luận