Linux Lab Pacemaker & Corosync trong HA Web Services CentOS 7

nessiggk

Moderator

Lab Pacemaker & Corosync trong HA Web Services CentOS 7




  1. Giới thiệu Pacemaker & Corosync

  2. Chuẩn bị lab

  3. Cài đặt
3.1. Cài đặt Apache

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.

 lab pacemaker & corosync in HA Service (1)


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

 lab pacemaker & corosync in HA Service (2)

 lab pacemaker & corosync in HA Service (3)


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
 lab pacemaker & corosync in HA Service (4)

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
 lab pacemaker & corosync in HA Service (5)


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
 lab pacemaker & corosync in HA Service (6)

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
 lab pacemaker & corosync in HA Service (7)

Khởi động Cluster

pcs cluster start --all
 lab pacemaker & corosync in HA Service (8)

Cho phép Cluster khởi động cùng OS

pcs cluster enable --all
 lab pacemaker & corosync in HA Service (9)

Kiểm tra trạng thái hoạt động của Pacemaker trên mỗi node.

pcs status
 lab pacemaker & corosync in HA Service (10)


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
 lab pacemaker & corosync in HA Service (11)

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.
Kiểm tra lại trạng thái của các resource hiện tại.

pcs status resources
 lab pacemaker & corosync in HA Service (12)

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.

 lab pacemaker & corosync in HA Service (13)

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
 lab pacemaker & corosync in HA Service (14)

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

 lab pacemaker & corosync in HA Service (15)

 lab pacemaker & corosync in HA Service (16)

Sau đó: shutdown node1, node2 từ passive -> active

 lab pacemaker & corosync in HA Service (17)

 lab pacemaker & corosync in HA Service (18)


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.
 
Top