Thứ ba, 08/09/2015 | 00:00 GMT+7

Cách thiết lập một cụm thụ động chủ động Apache bằng máy tạo nhịp tim trên CentOS 7

Tính khả dụng cao là một chủ đề quan trọng hiện nay vì việc ngừng cung cấp dịch vụ có thể rất tốn kém. Cần thận trọng khi thực hiện các biện pháp giúp trang web hoặc ứng dụng web của bạn tiếp tục chạy trong trường hợp ngừng hoạt động. Với ngăn xếp Máy tạo nhịp tim, bạn có thể cấu hình một cụm có tính khả dụng cao.

Pacemaker là một trình quản lý tài nguyên cụm . Nó quản lý tất cả các dịch vụ cụm ( tài nguyên ) và sử dụng khả năng nhắn tin và thành viên của công cụ cụm cơ bản . Ta sẽ sử dụng Corosync làm công cụ cụm của ta . Các tài nguyên có một tác nhân tài nguyên , là một chương trình bên ngoài tóm tắt dịch vụ.

Trong một cụm chủ động-thụ động, tất cả các dịch vụ đều chạy trên một hệ thống chính. Nếu hệ thống chính bị lỗi, tất cả các dịch vụ sẽ được chuyển sang hệ thống dự phòng. Một cụm chủ động-bị động giúp bạn có thể thực hiện công việc bảo trì mà không bị gián đoạn.

Trong hướng dẫn này, bạn sẽ học cách xây dựng một cụm chủ động-thụ động Apache có tính khả dụng cao. Cụm web sẽ được giải quyết bằng địa chỉ IP ảo của nó và sẽ tự động bị lỗi nếu một nút bị lỗi.

User của bạn sẽ truy cập ứng dụng web của bạn bằng địa chỉ IP ảo do Pacemaker quản lý. Dịch vụ Apache và IP ảo luôn nằm trên cùng một server . Khi server này bị lỗi, chúng sẽ được chuyển sang server thứ hai và user của bạn sẽ không nhận thấy sự cố ngừng hoạt động.

Yêu cầu

Trước khi bắt đầu với hướng dẫn này, bạn cần những thứ sau:

  • Hai CentOS 7 Server, sẽ là các node cụm. Ta sẽ gọi chúng là webnode01 (địa chỉ IP: your_first_server_ip ) và webnode02 (địa chỉ IP: your_second_server_ip ).

  • Một user trên cả hai server có quyền root. Bạn có thể cài đặt điều này theo hướng dẫn Cài đặt Server Ban đầu với CentOS 7 này .

Bạn sẽ phải chạy một số lệnh trên cả hai server và một số lệnh chỉ trên một server .

Bước 1 - Cấu hình độ phân giải tên

Đầu tiên, ta cần đảm bảo cả hai server đều có thể phân giải tên server của hai nút cụm. Để thực hiện điều đó, ta sẽ thêm các mục nhập vào file /etc/hosts . Làm theo bước này trên cả webnode01 và webnode02.

Mở /etc/hosts bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/hosts

Thêm các mục sau vào cuối file .

/ etc / hosts
your_first_server_ip webnode01.example.com webnode01 your_second_server_ip webnode02.example.com webnode02 

Lưu và đóng file .

Bước 2 - Cài đặt Apache

Trong phần này, ta sẽ cài đặt web server Apache. Bạn phải hoàn thành bước này trên cả hai server .

Đầu tiên, cài đặt Apache.

  • sudo yum install httpd

Tác nhân tài nguyên Apache sử dụng trang trạng thái server Apache để kiểm tra tình trạng của dịch vụ Apache. Bạn phải kích hoạt trang trạng thái bằng cách tạo file /etc/httpd/conf.d/status.conf .

  • sudo nano /etc/httpd/conf.d/status.conf

Dán chỉ thị sau vào file này. Các chỉ thị này cho phép truy cập vào trang trạng thái từ localhost nhưng không cho phép từ bất kỳ server nào khác.

/etc/httpd/conf.d/status.conf
<Location /server-status>    SetHandler server-status    Order Deny,Allow    Deny from all    Allow from 127.0.0.1 </Location> 

Lưu và đóng file .

Bước 3 - Cài đặt Máy tạo nhịp tim

Bây giờ ta sẽ cài đặt ngăn xếp Máy tạo nhịp tim. Bạn phải hoàn thành bước này trên cả hai server .

Cài đặt ngăn xếp Máy tạo nhịp tim và vỏ cụm máy tính. Ta sẽ sử dụng cái sau để cấu hình cụm.

  • sudo yum install pacemaker pcs

Bây giờ ta phải khởi động trình chiếc, được sử dụng để đồng bộ hóa cấu hình Corosync trên các node .

  • sudo systemctl start pcsd.service

Để daemon bắt đầu sau mỗi lần khởi động lại, ta cũng sẽ kích hoạt dịch vụ.

  • sudo systemctl enable pcsd.service

Sau khi bạn đã cài đặt các gói này, sẽ có một user mới trên hệ thống của bạn được gọi là hacluster . Sau khi cài đặt, đăng nhập từ xa bị tắt cho user này. Đối với các việc như đồng bộ hóa cấu hình hoặc khởi động dịch vụ trên các node khác, ta phải đặt cùng một password cho user này.

  • sudo passwd hacluster

Bước 4 - Cấu hình máy tạo nhịp tim

Tiếp theo, ta sẽ cho phép lưu lượng theo cụm trong FirewallD để cho phép các server của ta giao tiếp.

Đầu tiên, hãy kiểm tra xem FirewallD có đang chạy hay không.

  • sudo firewall-cmd --state

Nếu nó không chạy, hãy khởi động nó.

  • sudo systemctl start firewalld.service

Bạn cần thực hiện việc này trên cả hai server . Khi nó đang chạy, hãy thêm dịch vụ high-availability vào FirewallD.

  • sudo firewall-cmd --permanent --add-service=high-availability

Sau thay đổi này, bạn cần reload FirewallD.

  • sudo firewall-cmd --reload

Nếu bạn muốn tìm hiểu thêm về FirewallD, bạn có thể đọc hướng dẫn này về cách cấu hình FirewallD trên CentOS 7 .

Bây giờ hai server của ta có thể nói chuyện với nhau, ta có thể cài đặt xác thực giữa hai nút bằng cách chạy lệnh này trên một server (trong trường hợp của ta là webnode01 ).

  • sudo pcs cluster auth webnode01 webnode02
  • Username: hacluster

Bạn sẽ thấy kết quả sau:

Đầu ra
webnode01: Authorized webnode02: Authorized 

Tiếp theo, ta sẽ tạo và đồng bộ hóa cấu hình Corosync trên cùng một server . Ở đây, ta sẽ đặt tên cho cụm webcluster , nhưng bạn có thể gọi nó theo ý mình.

  • sudo pcs cluster setup --name webcluster webnode01 webnode02

Bạn sẽ thấy kết quả sau:

Đầu ra
Shutting down pacemaker/corosync services... Redirecting to /bin/systemctl stop  pacemaker.service Redirecting to /bin/systemctl stop  corosync.service Killing any remaining services... Removing all cluster configuration files... webnode01: Succeeded webnode02: Succeeded 

Cấu hình corosync hiện đã được tạo và phân phối trên tất cả các node . Cấu hình được lưu trữ trong file /etc/corosync/corosync.conf .

Bước 5 - Khởi động cụm

Cụm có thể được bắt đầu bằng cách chạy lệnh sau trên webnode01.

  • sudo pcs cluster start --all

Để đảm bảo Pacemaker và corosync bắt đầu khi server khởi động , ta phải bật các dịch vụ trên cả hai server .

  • sudo systemctl enable corosync.service
  • sudo systemctl enable pacemaker.service

Bây giờ ta có thể kiểm tra trạng thái của cụm bằng cách chạy lệnh sau trên một trong hai server .

  • sudo pcs status

Kiểm tra xem cả hai server đều được đánh dấu là trực tuyến trong kết quả .

Đầu ra
. . .  Online: [ webnode01 webnode02 ]  Full list of resources:   PCSD Status:   webnode01: Online   webnode02: Online  Daemon Status:   corosync: active/enabled   pacemaker: active/enabled   pcsd: active/enabled 

Lưu ý: Sau lần cài đặt đầu tiên, có thể mất một khoảng thời gian trước khi các node được đánh dấu là trực tuyến.

Bước 6 - Vô hiệu hóa STONITH và bỏ qua túc số

STONITH là gì?

Bạn sẽ thấy cảnh báo trong kết quả của pcs status rằng không có thiết bị STONITH nào được cấu hình và STONITH không bị tắt:

Cảnh báo
. . . WARNING: no stonith devices and stonith-enabled is not false . . . 

Điều này nghĩa là gì và tại sao bạn nên quan tâm?

Khi người quản lý tài nguyên cụm không thể xác định trạng thái của một nút hoặc của tài nguyên trên một nút, hàng rào được sử dụng để đưa cụm về trạng thái đã biết .

Hàng rào mức tài nguyên đảm bảo chủ yếu rằng không có dữ liệu bị hỏng trong trường hợp ngừng hoạt động bằng cách cấu hình tài nguyên. Ví dụ: bạn có thể sử dụng hàng rào mức tài nguyên với DRBD (Thiết bị khối được sao chép phân tán) để đánh dấu đĩa trên một nút là lỗi thời khi liên kết giao tiếp bị hỏng.

Hàng rào mức nút đảm bảo một nút không chạy bất kỳ tài nguyên nào. Điều này được thực hiện bằng cách đặt lại nút và việc triển khai Máy tạo nhịp tim của nó được gọi là STONITH (viết tắt của “bắn vào đầu nút khác”). Máy tạo nhịp tim hỗ trợ rất nhiều thiết bị hàng rào, ví dụ như bộ cấp điện liên tục hoặc thẻ giao diện quản lý cho server .

Vì cấu hình hàng rào cấp độ nút phụ thuộc nhiều vào môi trường của bạn, ta sẽ vô hiệu hóa nó trong hướng dẫn này.

  • sudo pcs property set stonith-enabled=false

Lưu ý: Nếu bạn định sử dụng Máy tạo nhịp tim trong môi trường production , bạn nên lập kế hoạch triển khai STONITH tùy thuộc vào môi trường của bạn và luôn bật.

Quorum là gì?

Một cụm có túc số khi hơn một nửa số nút trực tuyến. Hành vi mặc định của Pacemaker là dừng tất cả tài nguyên nếu cụm không có túc số. Tuy nhiên, điều này không có ý nghĩa trong một cụm hai nút; cụm sẽ mất túc số nếu một nút bị lỗi.

Đối với hướng dẫn này, ta sẽ yêu cầu Pacemaker bỏ qua túc số bằng cách đặt no-quorum-policy :

  • sudo pcs property set no-quorum-policy=ignore

Bước 7 - Cấu hình địa chỉ IP ảo

Từ bây giờ, ta sẽ tương tác với cụm thông qua shell pcs , vì vậy tất cả các lệnh chỉ cần được thực thi trên một server ; nó không quan trọng cái nào.

Cụm máy tạo nhịp tim hiện đang hoạt động và ta có thể thêm tài nguyên đầu tiên vào đó, đó là địa chỉ IP ảo. Để thực hiện việc này, ta sẽ cấu hình tác nhân tài nguyên ocf:heartbeat:IPaddr2 , nhưng trước tiên, hãy trình bày một số thuật ngữ.

Mỗi tên tác nhân tài nguyên có ba hoặc hai trường được phân tách bằng dấu hai chấm:

  • Trường đầu tiên là lớp tài nguyên, là tiêu chuẩn mà tác nhân tài nguyên tuân theo. Nó cũng cho Pacemaker biết nơi tìm kịch bản. Tác nhân tài nguyên IPaddr2 tuân theo tiêu chuẩn OCF (Open Cluster Framework).

  • Trường thứ hai phụ thuộc vào tiêu chuẩn. Tài nguyên OCF sử dụng trường thứ hai cho không gian tên OCF.

  • Trường thứ ba là tên của tác nhân tài nguyên.

Tài nguyên có thể có các thuộc tính meta và thuộc tính cá thể . Thuộc tính meta không phụ thuộc vào loại tài nguyên; thuộc tính instance là tài nguyên cụ thể. Thuộc tính thể hiện bắt buộc duy nhất của tác nhân tài nguyên này là ip (địa chỉ IP ảo), nhưng để rõ ràng, ta cũng sẽ đặt cidr_netmask (mặt cidr_netmask con trong ký hiệu CIDR).

Các hoạt động tài nguyên là các hành động mà cụm có thể thực hiện trên một tài nguyên (ví dụ: bắt đầu, dừng, giám sát). Chúng được chỉ ra bởi từ khóa op . Ta sẽ thêm hoạt động của monitor với khoảng thời gian 20 giây để cụm kiểm tra 20 giây một lần nếu tài nguyên vẫn khỏe mạnh. Điều gì được coi là lành mạnh phụ thuộc vào tác nhân tài nguyên.

Đầu tiên, ta sẽ tạo tài nguyên địa chỉ IP ảo. Ở đây, ta sẽ sử dụng 127.0.0.2 làm IP ảo và Cluster_VIP cho tên của tài nguyên.

  • sudo pcs resource create Cluster_VIP ocf:heartbeat:IPaddr2 ip=127.0.0.2 cidr_netmask=24 op monitor interval=20s

Tiếp theo, kiểm tra trạng thái của tài nguyên.

  • sudo pcs status

Tìm dòng sau trong kết quả :

Đầu ra
... Full list of resources:   Cluster_VIP    (ocf::heartbeat:IPaddr2):   Started webnode01 ... 

Địa chỉ IP ảo đang hoạt động trên web server node01.

Bước 8 - Thêm tài nguyên Apache

Bây giờ ta có thể thêm tài nguyên thứ hai vào cụm, đó sẽ là dịch vụ Apache. Tác nhân tài nguyên của dịch vụ là ocf:heartbeat:apache .

Ta sẽ đặt tên cho tài nguyên WebServer và cài đặt các thuộc tính dụ configfile (vị trí của file cấu hình Apache) và statusurl (URL của trang tình trạng server Apache). Ta sẽ chọn lại khoảng thời gian theo dõi là 20 giây.

  • sudo 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

Ta có thể truy vấn trạng thái của tài nguyên như trước đây.

  • sudo pcs status

Bạn sẽ thấy WebServer trong kết quả chạy trên webnode02.

Đầu ra
... Full list of resources:   Cluster_VIP    (ocf::heartbeat:IPaddr2):   Started webnode01  WebServer  (ocf::heartbeat:apache):    Started webnode02 ... 

Như bạn thấy , các tài nguyên chạy trên các server khác nhau. Ta chưa nói với Pacemaker rằng các tài nguyên này phải chạy trên cùng một server , vì vậy chúng được phân bổ đồng đều trên các node .

Lưu ý: Bạn có thể khởi động lại tài nguyên Apache bằng cách chạy sudo pcs resource restart WebServer (ví dụ: nếu bạn thay đổi cấu hình Apache). Đảm bảo không sử dụng systemctl để quản lý dịch vụ Apache.

Bước 9 - Cấu hình các ràng buộc về vị trí

Hầu hết mọi quyết định trong cụm Máy tạo nhịp tim, như chọn nơi tài nguyên sẽ chạy, đều được thực hiện bằng cách so sánh điểm số. Điểm được tính cho mỗi tài nguyên và người quản lý tài nguyên cụm chọn nút có điểm cao nhất cho một tài nguyên cụ thể. (Nếu một nút có điểm âm cho một tài nguyên, thì tài nguyên đó không thể chạy trên nút đó.)

Ta có thể thao túng các quyết định của cụm với các ràng buộc. Ràng buộc có một số điểm. Nếu một ràng buộc có điểm thấp hơn INFINITY, đó chỉ là một đề xuất. Điểm INFINITY nghĩa là nó bắt buộc phải có.

Ta muốn đảm bảo cả hai tài nguyên đều được chạy trên cùng một server lưu trữ, vì vậy ta sẽ xác định ràng buộc vị trí với điểm số INFINITY.

  • sudo pcs constraint colocation add WebServer Cluster_VIP INFINITY

Thứ tự của các tài nguyên trong định nghĩa ràng buộc là quan trọng. Ở đây, ta chỉ định rằng tài nguyên Apache ( WebServer ) phải chạy trên cùng một server có IP ảo ( Cluster_VIP ) đang hoạt động. Điều này cũng nghĩa là WebSite không được phép chạy ở bất kỳ đâu nếu Cluster_VIP không hoạt động.

Cũng có thể xác định thứ tự các tài nguyên sẽ chạy bằng cách tạo các ràng buộc thứ tự hoặc ưu tiên các server nhất định cho một số tài nguyên bằng cách tạo các ràng buộc vị trí.

Xác minh cả hai tài nguyên đều chạy trên cùng một server .

  • sudo pcs status
Đầu ra
... Full list of resources:   Cluster_VIP    (ocf::heartbeat:IPaddr2):   Started webnode01  WebServer  (ocf::heartbeat:apache):    Started webnode01 ... 

Cả hai tài nguyên hiện đều có trên webnode01.

Kết luận

Bạn đã cài đặt một cụm chủ động-thụ động hai nút Apache có thể truy cập được bằng địa chỉ IP ảo. Đến đây bạn có thể cấu hình thêm Apache, nhưng hãy đảm bảo đồng bộ hóa cấu hình trên các server . Bạn có thể viết một tập lệnh tùy chỉnh cho việc này (ví dụ: với rsync ) hoặc bạn có thể sử dụng thông tin như csync2 .

Nếu bạn muốn phân phối các file của ứng dụng web của bạn giữa các server , bạn có thể cài đặt dung lượng DRBD và tích hợp nó với Pacemaker .


Tags:

Các tin liên quan

Cách bảo vệ server Apache với Fail2Ban trên Ubuntu 14.04
2015-08-14
Cách cài đặt Apache Kafka trên Ubuntu 14.04
2015-08-12
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 14.04
2015-08-10
Cách bảo vệ chống lại DoS và DDoS với mod_evasive cho Apache trên CentOS 7
2015-07-30
Cách cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Fedora 22
2015-07-08
Cách thiết lập mod_rewrite cho Apache trên Ubuntu 14.04
2015-06-27
Cách cài đặt Apache Tomcat 8 trên CentOS 7
2015-06-19
Cách cài đặt Apache Tomcat 8 trên Ubuntu 14.04
2015-06-19
Cách tạo chứng chỉ SSL trên Apache cho Debian 8
2015-06-19
Cách cài đặt Apache Tomcat 7 trên CentOS 7 qua Yum
2015-06-15