Lab Pacemaker & Corosync trong HA Web Services CentOS 7
- Giới thiệu Pacemaker & Corosync
- Chuẩn bị lab
- Cài đặt
3.2. Cài đặt và cấu hình Pacemaker + Corosync
3.3. Thêm Resource Virtual IP
4. HA Active/Passive Web Services Apache
1. Giới thiệu Pacemaker & Corosync
Pacemaker là một công cụ quản lý cụm tài nguyên. Nó dùng để giao tiếp và gắn kết các tài nguyên (máy chủ) với nhau. Trong bài, Corosync sẽ được sử dụng để thành cụm máy.
Ở mô hình Active -Passive, tất cả các dịch vụ sẽ chạy trên máy chính. Khi máy chính gặp sự cố, các máy phụ sẽ hoạt động thay các máy chính để đảm bảo dịch vụ không bị gián đoạn.
Trong bài, sẽ hướng dẫn cấu hình Mô hình A-P với cụm máy chủ Apache. Cụm máy chủ này sẽ nhận một VIP, khi máy chủ chính bị lỗi. VIP được kích hoạt và lắng nghe trên các máy chủ trong cụm. Người dùng sẽ truy cập vào Web thông qua VIP. VIP được quản lý bởi Pacemaker. APACHE và VIP luôn luôn được cấu hình trên cùng 1 host, Khi host này bị lỗi, chúng sẽ di trú sang host còn lại để đảm bảo dịch vụ luôn sẵn sàng.
2. Chuẩn bị lab
Mô hình thử nghiệm lab.
Mô hình lab sử 2 máy ảo Linux CentOS 7 Minimal 64bit (sử dụng một card mạng Bridge, subnet 192.168.1.0/24).
*node1
OS: CentOS 7 Minimal 64bit
Hostname: node1.svuit.vn
Ens33: 192.168.1.101/24
Gateway: 192.168.1.1
*node2
OS: CentOS 7 Minimal 64bit
Hostname: node2.svuit.vn
Ens33: 192.168.1.102/24
Gateway: 192.168.1.1
*Virtual IP address: Các phiên truy cập từ client đến địa chỉ IP này sẽ Pacemaker được điều hướng về một trong 2 node trên.
IP address: 192.168.1.123
Tiếp theo chúng ta sẽ khai báo các node trong file hosts vào từng máy, vi /etc/hosts.
192.168.1.101 node1.svuit.vn node1
192.168.1.102 node2.svuit.vn node2
3. Cài đặt
3.1. Cài đặt Apache (làm trên cả 2 node)
Cài đặt
yum -y install httpd
Cấu hình: tạo một file vi /etc/httpd/conf.d/status.conf theo dõi trạng thái của Apache
với nội dung dưới, sau đó lưu lại file:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
Lưu ý: Dịch vụ httpd trên Centos sau khi được cài đặt trên mỗi node cần đảm bảo đã stop và không khởi động cùng hệ thống, việc quản lí khởi tạo khởi chạy sẽ do Pacemaker đảm nhiệm, tránh trường hợp bị xung đột, nhập câu lệnh:
systemctl stop httpd
systemctl disable httpd
Kiểm tra trạng thái firewall.
firewall-cmd --state
Hiện tại firewall đang chạy, mình cần cấu hình mở Port http(80) và https(443) cho phép truy cập từ bên ngoài đến 2 Port trên.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
3.2. Cài đặt và cấu hình Pacemaker & Corosync
Cài đặt Pacemaker & Corosync: Thực hiện trên cả Hai node.
Mở firewall:
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --reload
Cài đặt các gói cài đặt cần thiết cho Pacemaker.
yum -y install pacemaker pcs
Khởi động pcs và cho chạy cùng hệ thống.
systemctl start pcsd
systemctl enable pcsd
Sau khi quá trình cài đặt thành công, hệ thống sẽ có thêm một người dùng mới có tên là hacluster. User này đã bị vô hiệu hóa chức năng đăng nhập từ xa, nhiệm vụ của user này để đồng bộ cấu hình và khởi động các dịch vụ giữa các node với nhau.
Trên 2 node, chúng ta thống nhất 1 password duy nhất cho user này, để cả 2 node có thể xác thực lẫn nhau.
passwd hacluster
Kiểm tra trạng thái pacemaker
systemctl status pcsd
Cấu hình Pacemaker: thực hiện trên Một node.
Xác thực giữa 2 node với nhau, sử dụng user hacluster và password đã thống nhất tạo trước đó.
pcs cluster auth node1 node2
Tiếp theo, chúng ta sẽ tạo và đồng bộ file cấu hình Corosync. Mình đặt tên cho cluster là WebCluster, các bạn có thể chọn tên tùy ý. node1 và node2 là hostname máy chủ trong cụm Cluster đã khai báo trước đó, nếu không có thể sử dụng IP Address thay thế.
pcs cluster setup --name WebCluster node1 node2
Khởi động Cluster
pcs cluster start --all
Cho phép Cluster khởi động cùng OS
pcs cluster enable --all
Kiểm tra trạng thái hoạt động của Pacemaker trên mỗi node.
pcs status
3.3. Thêm Resource Virtual IP & Apache
Thực hiện trên Một node.
Lưu ý:
- Disable cơ chế STONITH
pcs property set stonith-enabled=false
- Thiết lập policy cho cơ chế quorum (bỏ qua bước này nếu như cluster có nhiều hơn 2 node)
pcs property set no-quorum-policy=ignore
- Disable auto failback
pcs property set default-resource-stickiness="INFINITY"
- Kiểm tra lại các thiết lập trên
pcs property list
Cấu hình Virtual_IP (VIP) cho Cluster. Như đầu bài mình đã ghi VIP sẽ là 192.168.1.123.
Tên resource mình đặt là VIP_Cluster.
pcs resource create VIP_Cluster ocf:heartbeat:IPaddr2 ip=192.168.1.123 cidr_netmask=24 op monitor interval=20s
Kiểm tra trạng thái của các Resource hiện tại.
pcs status resources
4. HA Active/Passive Web Services Apache
Vẫn thực hiện trên Một node.
Thêm resource Apache, mình đặt tên là WebServer.
pcs resource create WebServer ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://127.0.0.1/server-status" op monitor interval=20s
Chú ý:
- Resource chính là các ứng dụng được cấu hình cluster.
- Tùy vào tài ngyên mà bạn muốn Pacemaker quản lý thì sẽ được add thêm vào trong Cluster.
- Khi add resource vào cluster thì việc start, stop, restart resource này sẽ do Pacemaker quản lý.
- Corosync có nhiệm vụ làm messenger để báo cho các node biết tính hình các resource đang như thế nào.
pcs status resources
Như hình trên chúng ta thấy VIP_Cluster ở trên một node và WebServer ở trên một node. Chúng ta sẽ cấu hình ràng buộc cho nó chỉ sử dụng tài nguyên trên cùng một máy chủ trong cụm Cluster.
pcs constraint colocation add WebServer VIP_Cluster INFINITY
Chờ một khoảng 30s, chúng ta kiểm tra lại trạng thái resource.
Thiết lập chế độ khởi động của các resource (khởi động VIP_Cluster rồi mới đến WebServer)
pcs constraint order VIP_Cluster then WebServer
Kiểm tra lại các điều kiện ràng buộc đã cấu hình.
pcs constraint
Thử nghiệm bài lab:
Mình sẽ thêm source code HTML trên mỗi node vi /var/www/html/index.html
Node1:
<!DOCTYPE html>
<html>
<head>
<title>WebSite01</title>
</head>
<body>
<h1>WebSite01</h1>
<p>Svuit01</p>
</body>
</html>
Node2:
<!DOCTYPE html>
<html>
<head>
<title>WebSite02</title>
</head>
<body>
<h1>WebSite02</h1>
<p>Svuit02</p>
</body>
</html>
Ta sẽ shutdown node1 (node đang active) và dùng lệnh pcs status trên node2. Các resource sẽ tự động chuyển sang hoạt động trên node2 (node passive được chuyển thành node active).
Hiện tại: node1 đang active, node2 đang passive
Sau đó: shutdown node1, node2 từ passive -> active
Vậy là mình đã hoàn thành Lab HA Active/Passive Apache với Pacemaker + Corosync. Tuy nhiên dịch vụ Apache được cài đặt riêng biệt trên 2 node khác nhau, khác cả về source code web, nên để source code web giống nhau tối ưu cho hệ thống website trên CentOS chúng ta cần thêm cơ chế động bộ dữ liệu nhằm đảm bảo source code web là giống nhau.
Bài viết liên quan
Bài viết mới