Cách thiết lập Nginx High Availability với Pacemaker và Corosync trên CentOS 7

theanh

Administrator
Nhân viên
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn từng bước về cách tạo Máy chủ web Nginx cụm có tính khả dụng cao với Pacemaker, Corosync và Pcsd. Chúng tôi sẽ tạo máy chủ web Nginx cụm chủ động-thụ động hoặc cụm chuyển đổi dự phòng bằng Pacemaker trên hệ thống CentOS 7.

Pacemaker là phần mềm quản lý cụm nguồn mở giúp đạt được tính khả dụng cao tối đa cho các dịch vụ của bạn. Đây là trình quản lý cụm HA nâng cao và có thể mở rộng do ClusterLabs phân phối.

Corosync Cluster Engine là một dự án nguồn mở bắt nguồn từ dự án OpenAIS theo Giấy phép BSD mới. Đây là hệ thống giao tiếp nhóm với các tính năng bổ sung để triển khai Tính khả dụng cao trong các ứng dụng.

Có một số ứng dụng cho giao diện Pacemaker. Pcsd là một trong những giao diện dòng lệnh và GUI của Pacemaker để quản lý Pacemaker. Chúng ta có thể tạo, cấu hình hoặc thêm một nút mới vào cụm bằng lệnh pcsd pcs.

Điều kiện tiên quyết
  • 2 máy chủ CentOS 7 trở lênweb01 10.0.15.10
  • web02 10.0.15.11
  • web03 10.0.15.12
[*] Địa chỉ IP động 10.0.15.15
[*] Quyền root
Những gì chúng ta sẽ làm:
  1. Ánh xạ tệp máy chủ
  2. Cài đặt kho lưu trữ Epel và Nginx
  3. Cài đặt và định cấu hình Pacemaker, Corosync và Pcsd
  4. Tạo và định cấu hình cụm
  5. Vô hiệu hóa STONITH và bỏ qua chính sách Quorum
  6. Thêm Floating-IP và tài nguyên
  7. Thêm quy tắc vào cụm
  8. Định cấu hình tường lửa
  9. Kiểm tra thiết lập

Bước 1 - Ánh xạ tệp máy chủ​

Lưu ý: Chạy bước 1 - 3 trên tất cả các máy chủ web01, web02 và web03.

Bước đầu tiên chúng ta phải làm là chỉnh sửa tệp máy chủ trên mỗi máy chủ để ánh xạ tên máy chủ của tất cả các máy chủ. Chúng tôi có máy chủ 'web01', 'web02' và 'web03', hãy đăng nhập vào từng máy chủ bằng tài khoản ssh.
Mã:
ssh root@web[01,02,03]
Chỉnh sửa tệp '/etc/hosts' bằng vim.
Mã:
vim /etc/hosts
Dán cấu hình sau vào đó.
Mã:
10.0.15.10 web01
10.0.15.11 web02
10.0.15.12 web03
Lưu và thoát.

Bây giờ hãy kiểm tra cấu hình ánh xạ của máy chủ.
Mã:
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Đảm bảo 'web01', 'web02' và 'web03' được ánh xạ tới các địa chỉ IP chính xác.


Bước 2 - Cài đặt kho lưu trữ Epel và Nginx​

Trong bước này, chúng ta sẽ cài đặt kho lưu trữ epel rồi cài đặt máy chủ web Nginx. Cần có kho EPEL hoặc Extra Packages for Enterprise Linux để cài đặt các gói Nginx.

Cài đặt EPEL Repository bằng lệnh yum sau.
Mã:
yum -y install epel-release
Bây giờ hãy cài đặt máy chủ web Nginx từ kho EPEL.
Mã:
yum -y install nginx
Sau khi cài đặt hoàn tất, hãy thay đổi trang index.html mặc định trên mỗi máy chủ bằng một trang mới.
Mã:
#Run Command on 'web01'
echo '[HEADING=1]web01 - hakase-labs[/HEADING]' > /usr/share/nginx/html/index.html

#Run Command on 'web02'
echo '[HEADING=1]web02 - hakase-labs[/HEADING]' > /usr/share/nginx/html/index.html

#Chạy lệnh trên 'web03'
echo '[HEADING=1]web03 - hakase-labs[/HEADING]' > /usr/share/nginx/html/index.html


Kho lưu trữ EPEL và máy chủ web Nginx hiện đã được cài đặt trên hệ thống.

Bước 3 - Cài đặt và cấu hình Pacemaker, Corosync và Pcsd​

Pacemaker, Corosync và Pcsd có sẵn trong kho lưu trữ hệ thống mặc định. Vì vậy, tất cả chúng đều có thể được cài đặt từ kho lưu trữ CentOS bằng lệnh yum sau.
Mã:
yum -y install corosync pacemaker pcs
Sau khi quá trình cài đặt hoàn tất, hãy bật tất cả các dịch vụ để tự động khởi chạy khi khởi động hệ thống bằng cách sử dụng các lệnh systemctl bên dưới.
Mã:
systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker
Bây giờ hãy khởi động giao diện dòng lệnh pcsd Pacemaker trên tất cả các máy chủ.
Mã:
systemctl start pcsd
Tiếp theo, tạo mật khẩu mới cho người dùng 'hacluster' và sử dụng cùng một mật khẩu cho tất cả các máy chủ. Người dùng này được tạo tự động trong quá trình cài đặt phần mềm.

Sau đây là cách bạn cấu hình mật khẩu cho người dùng 'hacluster'.
Mã:
passwd hacluster
Nhập mật khẩu mới:
Phần mềm có tính khả dụng cao Pacemaker, Corosync và Pcsd được cài đặt vào hệ thống.


Bước 4 - Tạo và Cấu hình Cụm​

Lưu ý: Chỉ chạy các bước 4 - 7 trên 'web01'.

Trong bước này, chúng ta sẽ tạo một cụm mới với 3 máy chủ centos. Sau đó, cấu hình địa chỉ IP Nổi và thêm tài nguyên Nginx mới.

Để tạo cụm, chúng ta cần ủy quyền cho tất cả các máy chủ bằng lệnh pcs và người dùng hacluster.

Ủy quyền cho tất cả các máy chủ bằng lệnh pcs và người dùng hacluster cùng mật khẩu.
Mã:
pcs cluster auth web01 web02 web03
Tên người dùng: hacluster
Mật khẩu: aqwe123@


Bây giờ là lúc thiết lập cụm. Xác định tên cụm và tất cả các máy chủ sẽ là một phần của cụm.
Mã:
pcs cluster setup --name hakase_cluster web01 web02 web03
Bây giờ hãy khởi động tất cả các dịch vụ cụm và cũng bật chúng.
Mã:
pcs cluster start --all
pcs cluster enable --all


Tiếp theo, hãy kiểm tra trạng thái cụm.
Mã:
pcs status cluster

Bước 5 - Vô hiệu hóa STONITH và Bỏ qua Chính sách Quorum​

Vì chúng ta không sử dụng thiết bị hàng rào, chúng ta sẽ vô hiệu hóa STONITH. STONITH hoặc Shoot The Other Node In The Head là triển khai hàng rào trên Pacemaker. Nếu bạn đang trong quá trình sản xuất, tốt hơn hết là bật STONITH.

Vô hiệu hóa STONITH bằng lệnh pcs sau.
Mã:
pcs property set stonith-enabled=false
Tiếp theo, đối với chính sách Quorum, hãy bỏ qua nó.
Mã:
pcs property set no-quorum-policy=ignore
Kiểm tra danh sách thuộc tính và đảm bảo rằng stonith và chính sách quorum đã bị vô hiệu hóa.
Mã:
pcs property list


STONITH và Chính sách Quorum đã bị vô hiệu hóa.

Bước 6 - Thêm Floating-IP và Tài nguyên​

Floating-IP là địa chỉ IP có thể được di chuyển/chuyển tự động từ máy chủ này sang máy chủ khác trong cùng một Trung tâm dữ liệu. Và chúng tôi đã xác định địa chỉ IP động cho Pacemaker High-Availability là '10.0.15.15'. Bây giờ chúng ta muốn thêm hai tài nguyên, tài nguyên Địa chỉ IP động có tên là 'virtual_ip' và một tài nguyên mới cho máy chủ web Nginx có tên là 'webserver'.

Thêm địa chỉ IP động mới là 'virtual_ip' bằng lệnh pcs như được hiển thị bên dưới.
Mã:
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s
Tiếp theo, thêm một tài nguyên mới cho 'webserver' Nginx.
Mã:
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"
Đảm bảo bạn không nhận được kết quả lỗi nào, sau đó kiểm tra các tài nguyên khả dụng.
Mã:
pcs status resources
Bạn sẽ thấy hai tài nguyên 'virtual_ip' và một 'máy chủ web'. Các tài nguyên mới cho Floating IP và máy chủ web Nginx đã được thêm vào.


Bước 7 - Thêm Quy tắc ràng buộc vào Cụm​

Trong bước này, chúng ta sẽ thiết lập Quy tắc khả dụng cao và sẽ thiết lập ràng buộc tài nguyên bằng giao diện dòng lệnh pcs.

Đặt ràng buộc đối chiếu cho tài nguyên webserver và virtual_ip với điểm 'INFINITY'. Ngoài ra, hãy thiết lập tài nguyên webserver và virtual_ip giống nhau trên tất cả các nút máy chủ.
Mã:
pcs constraints colocation add webserver virtual_ip INFINITY
Đặt tài nguyên 'virtual_ip' và 'webserver' luôn trên cùng một máy chủ nút.
Mã:
pcs constraints order virtual_ip sau đó là webserver
Tiếp theo, dừng cụm và sau đó khởi động lại.
Mã:
pcs cluster stop --all
pcs cluster start --all


Bây giờ, hãy kiểm tra lại các tài nguyên và bạn sẽ thấy trạng thái của chúng là 'Đã bắt đầu' trên cùng một máy chủ 'web01'.
Mã:
pcs status resources


virtual_ip và tài nguyên webserver đã được khởi động trên cùng một máy chủ/nút 'web01'.

Bước 8 - Cấu hình Firewalld​

HA-Cluster sẽ chạy theo cấu hình tường lửa firewalld - hãy cài đặt nếu bạn chưa có gói này.
Mã:
yum -y install firewalld
Khởi động firewalld và cho phép nó tự động chạy mỗi khi khởi động hệ thống bằng các lệnh systemctl sau.
Mã:
systemctl start firewalld
systemctl enable firewalld
Tiếp theo, thêm các dịch vụ mới vào firewalld bằng các lệnh firewall-cmd - thêm dịch vụ có tính khả dụng cao, dịch vụ HTTP và HTTPS cho Nginx.
Mã:
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https


Tải lại cấu hình tường lửa và kiểm tra tất cả các dịch vụ.
Mã:
firewall-cmd --reload
firewall-cmd --list-all
Đảm bảo dịch vụ ha có HTTP và https có trong danh sách.


Bước 9 - Kiểm tra​

Ở bước này, chúng ta sẽ thực hiện một số thử nghiệm cho cụm. Kiểm tra trạng thái nút ('Trực tuyến' hoặc 'Ngoại tuyến'), kiểm tra các thành viên và trạng thái corosync, sau đó kiểm tra tính khả dụng cao của máy chủ web Nginx bằng cách truy cập địa chỉ IP Nổi.

Kiểm tra trạng thái nút bằng lệnh sau.
Mã:
pcs status nodes


Tất cả các nút đều ở trạng thái 'Trực tuyến'.

Kiểm tra các thành viên corosync.
Mã:
corosync-cmapctl | grep members
Bạn sẽ nhận được địa chỉ IP của các thành viên Corosync.



Kiểm tra các thành viên Corosync và bạn sẽ thấy kết quả như hiển thị bên dưới.
Mã:
pcs status corosync


Và cuối cùng, hãy kiểm tra tính khả dụng cao của máy chủ web. Mở trình duyệt web của bạn và nhập địa chỉ IP nổi '10.0.15.15'.

Bạn sẽ thấy trang web từ máy chủ 'web01'.



Tiếp theo, dừng cụm trên máy chủ 'web01' bằng lệnh bên dưới.
Mã:
pcs cluster stop web01
Và kiểm tra lại trang, bạn sẽ nhận được trang từ máy chủ 'web02' như bên dưới.



Bổ sung:

Kiểm tra trạng thái cụm bằng lệnh bên dưới.
Mã:
pcs status
Và bạn sẽ nhận được kết quả như bên dưới.



Quá trình thiết lập máy chủ web Nginx High Availability với Pacemaker, Corosync và Pcsd trên máy chủ CentOS 7 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên