Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách tạo Máy chủ web Nginx cụm có tính khả dụng cao với Pacemaker, Corosync và Crmsh. Chúng ta sẽ tạo máy chủ web Nginx cụm chủ động-thụ động hoặc cụm dự phòng bằng Pacemaker trên Ubuntu 16.04.
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 tiên tiến và có thể mở rộng được ClusterLabs phát triển từ năm 2007.
Cụm Corosync là một dự án nguồn mở bắt nguồn từ dự án OpenAIS năm 2008 và được phát hành theo Giấy phép BSD. Đâ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 khả dụng cho giao diện Pacemaker và Crmsh là một trong số đó. Đây là giao diện dòng lệnh Pacemaker để quản lý Ngăn xếp tính khả dụng cao của Pacemaker. Crmsh được viết bằng python. Chúng tôi có thể tạo, cấu hình và khắc phục sự cố cho ngăn xếp Pacemaker HA bằng công cụ dòng lệnh Crmsh.
Điều kiện tiên quyết
[*] Root Quyền
Chúng ta sẽ làm gì?
Chạy bước 1 - 3 trên cả ba máy chủ 'web01', 'web02', 'web03'.
Trong hướng dẫn này, tôi sẽ sử dụng 3 máy chủ Ubuntu 16.04 và mỗi máy chủ có một tên máy chủ duy nhất: 'web01', 'web02' và 'web03'. Mỗi máy chủ có thể kết nối với các máy chủ khác bằng tên máy chủ của máy chủ đó.
Để thực hiện điều đó, hãy chỉnh sửa tệp '/etc/hosts' trên tất cả các máy chủ bằng vim.
Dán cấu hình /etc/hosts bên dưới.
Lưu tệp và thoát vim.
Tiếp theo, hãy kiểm tra tất cả các máy chủ bằng cách ping các máy chủ khác qua từng tên máy chủ.
Cài đặt Nginx bằng lệnh apt bên dưới.
Khi quá trình cài đặt hoàn tất, hãy thay thế trang mặc định của nginx bằng một trang duy nhất trên mỗi máy chủ bằng cách chạy các lệnh bên dưới để sau này chúng ta có thể xác định máy chủ nào đã phân phối trang.
Bây giờ hãy dừng máy chủ web.
Quá trình cài đặt và cấu hình Nginx đã hoàn tất.
Cài đặt Pacemaker, Corosync và crmsh bằng lệnh apt bên dưới.
Sau khi cài đặt, tất cả các dịch vụ này sẽ tự động chạy trên hệ thống. Dừng chúng bằng các lệnh systemctl bên dưới.
Phần mềm cung cấp tính khả dụng cao cho Nginx đã được cài đặt.
Chỉ chạy bước 4 trên máy chủ 'web01'.
Vì chúng tôi không sử dụng pcsd cho Ubuntu, nên chúng tôi cần cấu hình Corosync theo cách thủ công. Chúng tôi sẽ tạo khóa Corosync để xác thực cụm và tạo tệp cấu hình Corosync mới trên máy chủ 'web01', sau đó sao chép khóa và cấu hình sang các máy chủ khác 'web02' và 'web03'.
Trước khi tạo khóa Corosync, chúng ta cần cài đặt gói mới 'haveged'. Nó được sử dụng để có được các số ngẫu nhiên tốt hơn cho việc tạo khóa Corosync.
Cài đặt haveged từ kho lưu trữ bằng lệnh apt.
Bây giờ hãy tạo một khóa Corosync mới bằng lệnh bên dưới.
Khi quá trình tạo khóa hoàn tất, bạn có thể thấy khóa mới 'authkey' trong thư mục '/etc/corosync/'.
Tiếp theo, hãy đến thư mục '/etc/corosync' và sao lưu tệp cấu hình mặc định 'corosync.conf'.
Sau đó, tạo một tệp cấu hình 'corosync.conf' mới bằng vim.
Dán cấu hình bên dưới vào tệp đó.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Tiếp theo, sao chép khóa xác thực và tệp cấu hình từ máy chủ 'web01' sang máy chủ 'web02' và 'web03'.
Khi mọi thứ hoàn tất, hãy chuyển đến máy chủ 'web02' và 'web03', sau đó kiểm tra tệp.
Cấu hình Corosync đã hoàn tất.
Chạy bước 5 trên tất cả các máy chủ.
Khởi động ngăn xếp phần mềm cụm HA, pacemaker và corosync trên tất cả các máy chủ. Sau đó, cho phép nó tự động khởi động khi khởi động.
Khởi động Corosync và thêm nó để tự động khởi động khi khởi động.
Bây giờ, hãy khởi động pacemaker và cho phép nó khởi động khi khởi động.
Tất cả các dịch vụ đã được khởi động, hãy kiểm tra tất cả các nút và đảm bảo trạng thái máy chủ là 'Trực tuyến' trên tất cả các nút đó.
Hoặc bạn có thể kiểm tra trạng thái bằng cách kiểm tra các thành viên Corosync bằng lệnh corosync-cmapctl bên dưới.
Bạn sẽ thấy tất cả Địa chỉ IP của máy chủ.
Chỉ chạy bước 6 trên máy chủ web01
Ở bước này, chúng ta sẽ cấu hình Cụm Nginx Chủ động-Thụ động bằng công cụ dòng lệnh crmsh. Vì chúng ta không sử dụng thiết bị STONITH, chúng ta muốn vô hiệu hóa STONITH và bỏ qua chính sách Quorum trên cụm của chúng ta.
Chạy lệnh crm bên dưới để vô hiệu hóa 'STONITH' và Bỏ qua chính sách Quorum.
Bây giờ hãy kiểm tra trạng thái STONITH và chính sách quorum bằng lệnh crm bên dưới.
Bạn sẽ thấy kết quả như bên dưới.
Tiếp theo, chúng ta cần tạo một số tài nguyên mới cho cụm. Pacemaker hỗ trợ các loại Resource Agent (RA) sau.
Tạo một tài nguyên 'virtual_ip' mới cho cấu hình IP động bằng lệnh crm bên dưới.
Và đối với 'webserver' nginx, hãy tạo tài nguyên bằng lệnh bên dưới.
Khi hoàn tất, hãy kiểm tra các tài nguyên mới 'virtual_ip' và 'webserver' bằng lệnh bên dưới. Đảm bảo tất cả các tài nguyên đều có trạng thái 'started'.
Cuối cùng, chúng ta cần thêm một nhóm cho cấu hình mới của dịch vụ Failover IP. Chúng tôi muốn di chuyển dịch vụ 'Nginx' trên tài nguyên 'webserver' với IP động trên tài nguyên 'virtual_ip'.
Chúng tôi đã tạo IP động và Dịch vụ, bây giờ hãy thêm các tài nguyên đó vào một nhóm mới có tên là 'hakase_balancing' bằng lệnh bên dưới. Tất nhiên, bạn có thể chọn tên nhóm của riêng mình ở đây, chỉ cần đảm bảo thay thế tên sau đó ở bất kỳ nơi nào nó được sử dụng.
Một nhóm tài nguyên mới có tên 'hakase_balancing' đã được định nghĩa. Bạn có thể kiểm tra bằng lệnh bên dưới.
Bạn sẽ nhận được một nhóm có tên hakase_balancing với các thành viên là tài nguyên 'virtual_ip' và 'webserver'.
Cấu hình cụm đã hoàn tất.
Chúng tôi có 3 Nút có trạng thái 'Trực tuyến'.
Chúng tôi có một nhóm tài nguyên có tên 'hakase_balancing' và hiện đang chạy trên nút 'web01'.
Kiểm tra máy chủ web Nginx từ trình duyệt web. Truy cập địa chỉ IP động, tên máy chủ thử nghiệm của tôi là - ha-web.co. Sử dụng tên mà bạn đã chọn cho máy chủ của mình tại đây.
Tất cả tài nguyên đều nằm trên nút 'web01'.
Kiểm tra cụm chủ động-thụ động hoặc chuyển đổi dự phòng
Dừng cụm trên máy chủ 'web01' bằng cách thực hiện lệnh bên dưới trên nút 'web01'.
Bạn sẽ nhận được kết quả 'INFO: Cluster services stopped'.
Bây giờ hãy đăng nhập vào nút 'web02' và kiểm tra trạng thái cụm.
Bây giờ bạn nhận được kết quả là nút 'web01' là 'Ngoại tuyến' và tài nguyên của virtual_ip và webserver được chuyển sang nút 'web02'.
Khi bạn truy cập lại IP động 'ha-web.co', bạn sẽ nhận được web02 trang.
Nginx High Availability với Pacemaker, Corosync và Crmshon Ubuntu 16.04 đã được cài đặt và thử nghiệm 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 tiên tiến và có thể mở rộng được ClusterLabs phát triển từ năm 2007.
Cụm Corosync là một dự án nguồn mở bắt nguồn từ dự án OpenAIS năm 2008 và được phát hành theo Giấy phép BSD. Đâ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 khả dụng cho giao diện Pacemaker và Crmsh là một trong số đó. Đây là giao diện dòng lệnh Pacemaker để quản lý Ngăn xếp tính khả dụng cao của Pacemaker. Crmsh được viết bằng python. Chúng tôi có thể tạo, cấu hình và khắc phục sự cố cho ngăn xếp Pacemaker HA bằng công cụ dòng lệnh Crmsh.
Điều kiện tiên quyết
- Ba máy chủ Ubuntu 16.04web01 10.0.15.11
- web02 10.0.15.12
- web03 10.0.15.13
[*] Root Quyền
Chúng ta sẽ làm gì?
- Ánh xạ tệp máy chủ.
- Cài đặt và cấu hình Nginx.
- Cài đặt Pacemaker, Corosync và Crmsh.
- Cấu hình khóa Corosync.
- Khởi động tất cả các dịch vụ.
- Tạo và cấu hình cụm.
- Kiểm tra.
Bước 1 - Ánh xạ tệp máy chủ
Lưu ý:Chạy bước 1 - 3 trên cả ba máy chủ 'web01', 'web02', 'web03'.
Trong hướng dẫn này, tôi sẽ sử dụng 3 máy chủ Ubuntu 16.04 và mỗi máy chủ có một tên máy chủ duy nhất: 'web01', 'web02' và 'web03'. Mỗi máy chủ có thể kết nối với các máy chủ khác bằng tên máy chủ của máy chủ đó.
Để thực hiện điều đó, hãy chỉnh sửa tệp '/etc/hosts' trên tất cả các máy chủ bằng vim.
Mã:
vim /etc/hosts
Mã:
10.0.15.11 web01
10.0.15.12 web02
10.0.15.13 web03
10.0.15.15 ha-web.co
Tiếp theo, hãy kiểm tra tất cả các máy chủ bằng cách ping các máy chủ khác qua từng tên máy chủ.
Mã:
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Bước 2 - Cài đặt và cấu hình Nginx
Bây giờ chúng ta bắt đầu tạo thiết lập High Availability của máy chủ web Nginx bằng cách tạo cụm Failover với Pacemaker. Trước tiên, chúng ta cần cài đặt Nginx trên mỗi nút máy chủ.Cài đặt Nginx bằng lệnh apt bên dưới.
Mã:
apt install -y nginx
Mã:
#Run Command on 'web01'
echo '[HEADING=1]web01 - hakase-labs[/HEADING]' > /var/www/html/index.html
#Chạy lệnh trên 'web02'
echo '[HEADING=1]web02 - hakase-labs[/HEADING]' > /var/www/html/index.html
#Chạy lệnh trên 'web03'
echo '[HEADING=1]web03 - hakase-labs[/HEADING]' > /var/www/html/index.html
Mã:
systemctl stop nginx
Bước 3 - Cài đặt Pacemaker, Corosync và Crmsh
Pacemaker là một ứng dụng quản lý cụm nguồn mở. Corosync là một Cluster Engine cho Pacemaker và Crmsh là một công cụ dựa trên python để quản lý cụm Pacemaker. Tất cả các ứng dụng này đều có trong kho lưu trữ Uubuntu.Cài đặt Pacemaker, Corosync và crmsh bằng lệnh apt bên dưới.
Mã:
apt install -y pacemaker corosync crmsh
Mã:
systemctl stop corosync
systemctl stop pacemaker
Bước 4 - Cấu hình Corosync
Lưu ý:Chỉ chạy bước 4 trên máy chủ 'web01'.
Vì chúng tôi không sử dụng pcsd cho Ubuntu, nên chúng tôi cần cấu hình Corosync theo cách thủ công. Chúng tôi sẽ tạo khóa Corosync để xác thực cụm và tạo tệp cấu hình Corosync mới trên máy chủ 'web01', sau đó sao chép khóa và cấu hình sang các máy chủ khác 'web02' và 'web03'.
Trước khi tạo khóa Corosync, chúng ta cần cài đặt gói mới 'haveged'. Nó được sử dụng để có được các số ngẫu nhiên tốt hơn cho việc tạo khóa Corosync.
Cài đặt haveged từ kho lưu trữ bằng lệnh apt.
Mã:
apt install -y haveged
Mã:
corosync-keygen
Mã:
ls -lah /etc/corosync/
Tiếp theo, hãy đến thư mục '/etc/corosync' và sao lưu tệp cấu hình mặc định 'corosync.conf'.
Mã:
cd /etc/corosync/
mv corosync.conf corosync.conf.bekup
Mã:
vim corosync.conf
Mã:
# Cấu hình giao thức Totem
totem {
phiên bản: 2
cluster_name: hakase-cluster
vận chuyển: udpu
# Cấu hình giao diện cho giao diện Corosync
{
ringnumber: 0
bindnetaddr: 10.0.15.0
phát sóng: có
mcastport: 5407
}
}
# Nodelist - Danh sách máy chủ
nodelist {
node {
ring0_addr: web01
}
node {
ring0_addr: web02
}
node {
ring0_addr: web03
}
}
# Cấu hình số lượng thành viên
số lượng thành viên {
nhà cung cấp: corosync_votequorum
}
# Cấu hình nhật ký Corosync
ghi nhật ký {
to_logfile: có
tệp nhật ký: /var/log/corosync/corosync.log
to_syslog: có
dấu thời gian: bật
}
dịch vụ {
tên: máy tạo nhịp tim
phiên bản: 0
}
Tiếp theo, sao chép khóa xác thực và tệp cấu hình từ máy chủ 'web01' sang máy chủ 'web02' và 'web03'.
Mã:
scp /etc/corosync/* root@web02:/etc/corosync/
scp /etc/corosync/* root@web03:/etc/corosync/
Khi mọi thứ hoàn tất, hãy chuyển đến máy chủ 'web02' và 'web03', sau đó kiểm tra tệp.
Mã:
ssh root@web02
cd /etc/corosync/
ls -lah
Cấu hình Corosync đã hoàn tất.
Bước 5 - Khởi động tất cả các dịch vụ cụm
Lưu ý:Chạy bước 5 trên tất cả các máy chủ.
Khởi động ngăn xếp phần mềm cụm HA, pacemaker và corosync trên tất cả các máy chủ. Sau đó, cho phép nó tự động khởi động khi khởi động.
Khởi động Corosync và thêm nó để tự động khởi động khi khởi động.
Mã:
systemctl start corosync
systemctl enable corosync
Mã:
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker
Mã:
crm status
Hoặc bạn có thể kiểm tra trạng thái bằng cách kiểm tra các thành viên Corosync bằng lệnh corosync-cmapctl bên dưới.
Mã:
corosync-cmapctl | grep members
Bước 6 - Tạo và Cấu hình Cụm
LƯU Ý:Chỉ chạy bước 6 trên máy chủ web01
Ở bước này, chúng ta sẽ cấu hình Cụm Nginx Chủ động-Thụ động bằng công cụ dòng lệnh crmsh. Vì chúng ta không sử dụng thiết bị STONITH, chúng ta muốn vô hiệu hóa STONITH và bỏ qua chính sách Quorum trên cụm của chúng ta.
Chạy lệnh crm bên dưới để vô hiệu hóa 'STONITH' và Bỏ qua chính sách Quorum.
Mã:
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore
Mã:
crm configure show
Tiếp theo, chúng ta cần tạo một số tài nguyên mới cho cụm. Pacemaker hỗ trợ các loại Resource Agent (RA) sau.
- LSB (Linux Standard Based) - Được cung cấp bởi bản phân phối Linux. ví dụ: tập lệnh '/etc/init.d/service'.
- OCF (Open Cluster Framework) - Bộ công cụ cho điện toán cụm. Dự án này là một phần của Linux Foundation.
Tạo một tài nguyên 'virtual_ip' mới cho cấu hình IP động bằng lệnh crm bên dưới.
Mã:
sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"
Mã:
sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"
Mã:
crm resource status
Cuối cùng, chúng ta cần thêm một nhóm cho cấu hình mới của dịch vụ Failover IP. Chúng tôi muốn di chuyển dịch vụ 'Nginx' trên tài nguyên 'webserver' với IP động trên tài nguyên 'virtual_ip'.
Chúng tôi đã tạo IP động và Dịch vụ, bây giờ hãy thêm các tài nguyên đó vào một nhóm mới có tên là 'hakase_balancing' bằng lệnh bên dưới. Tất nhiên, bạn có thể chọn tên nhóm của riêng mình ở đây, chỉ cần đảm bảo thay thế tên sau đó ở bất kỳ nơi nào nó được sử dụng.
Mã:
sudo crm configure group hakase_balancing virtual_ip webserver
Mã:
crm resource show
Cấu hình cụm đã hoàn tất.
Bước 7 - Kiểm tra
Kiểm tra trạng thái nút và trạng thái cụm.
Mã:
crm status
Chúng tôi có 3 Nút có trạng thái 'Trực tuyến'.
Chúng tôi có một nhóm tài nguyên có tên 'hakase_balancing' và hiện đang chạy trên nút 'web01'.
Kiểm tra máy chủ web Nginx từ trình duyệt web. Truy cập địa chỉ IP động, tên máy chủ thử nghiệm của tôi là - ha-web.co. Sử dụng tên mà bạn đã chọn cho máy chủ của mình tại đây.
Tất cả tài nguyên đều nằm trên nút 'web01'.
Kiểm tra cụm chủ động-thụ động hoặc chuyển đổi dự phòng
Dừng cụm trên máy chủ 'web01' bằng cách thực hiện lệnh bên dưới trên nút 'web01'.
Mã:
crm cluster stop
Bây giờ hãy đăng nhập vào nút 'web02' và kiểm tra trạng thái cụm.
Mã:
crm status
Bây giờ bạn nhận được kết quả là nút 'web01' là 'Ngoại tuyến' và tài nguyên của virtual_ip và webserver được chuyển sang nút 'web02'.
Khi bạn truy cập lại IP động 'ha-web.co', bạn sẽ nhận được web02 trang.
Nginx High Availability với Pacemaker, Corosync và Crmshon Ubuntu 16.04 đã được cài đặt và thử nghiệm thành công.
Tham khảo
- http://clusterlabs.org/quickstart-ubuntu.htmlhttp://clusterlabs.org/quickstart-ubuntu.html?utm_source=diendancongnghe.com
- https://velenux.wordpress.com/2015/05/26/creating-a-corosync-2-x-pacemaker-1-1-cluster-on-ubuntu-14-04-lts/https://velenux.wordpress.com/2015/...ntu-14-04-lts/?utm_source=diendancongnghe.com
- https://gist.github.com/Ham5ter/8665b75e974561a761338c1f1c221453https://gist.github.com/Ham5ter/8665b75e974561a761338c1f1c221453?utm_source=diendancongnghe.com
- http://linuxlasse.net/linux/howtos/Pacemaker_and_Corosync_HA_-_2_Node_setup