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
[*] Quyền root
Những gì chúng ta sẽ làm:
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.
Chỉnh sửa tệp '/etc/hosts' bằng vim.
Dán cấu hình sau vào đó.
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 bảo 'web01', 'web02' và 'web03' được ánh xạ tới các địa chỉ IP chính xác.
Cài đặt EPEL Repository bằng lệnh yum sau.
Bây giờ hãy cài đặt máy chủ web Nginx từ kho EPEL.
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.
Kho lưu trữ EPEL và máy chủ web Nginx hiện đã được cài đặt trên hệ thống.
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.
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ủ.
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'.
Phần mềm có tính khả dụng cao Pacemaker, Corosync và Pcsd được cài đặt vào hệ thống.
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.
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.
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.
Tiếp theo, hãy kiểm tra trạng thái cụm.
Vô hiệu hóa STONITH bằng lệnh pcs sau.
Tiếp theo, đối với chính sách Quorum, hãy bỏ qua nó.
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.
STONITH và Chính sách Quorum đã bị vô hiệu hóa.
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.
Tiếp theo, thêm một tài nguyên mới cho 'webserver' Nginx.
Đả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.
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.
Đặ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ủ.
Đặt tài nguyên 'virtual_ip' và 'webserver' luôn trên cùng một máy chủ nút.
Tiếp theo, dừng cụm và sau đó khởi động lại.
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'.
virtual_ip và tài nguyên webserver đã được khởi động trên cùng một máy chủ/nút 'web01'.
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.
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.
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 bảo dịch vụ ha có HTTP và https có trong danh sách.
Kiểm tra trạng thái nút bằng lệnh sau.
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.
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.
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.
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.
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.
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
[*] Quyền root
Những gì chúng ta sẽ làm:
- Ánh xạ tệp máy chủ
- Cài đặt kho lưu trữ Epel và Nginx
- Cài đặt và định cấu hình Pacemaker, Corosync và Pcsd
- Tạo và định cấu hình cụm
- Vô hiệu hóa STONITH và bỏ qua chính sách Quorum
- Thêm Floating-IP và tài nguyên
- Thêm quy tắc vào cụm
- Định cấu hình tường lửa
- 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]
Mã:
vim /etc/hosts
Mã:
10.0.15.10 web01
10.0.15.11 web02
10.0.15.12 web03
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
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
Mã:
yum -y install nginx
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
Mã:
systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker
Mã:
systemctl start pcsd
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:
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
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
Mã:
pcs property set no-quorum-policy=ignore
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
Mã:
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"
Mã:
pcs status resources
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
Mã:
pcs constraints order virtual_ip sau đó là webserver
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
Mã:
systemctl start firewalld
systemctl enable firewalld
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
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
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
Bổ sung:
Kiểm tra trạng thái cụm bằng lệnh bên dưới.
Mã:
pcs status
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.