Lời nói đầu: Để giảm thời gian ngừng hoạt động của hệ thống quản lý trực quan hóa trung tâm dữ liệu ba chiều và duy trì tính sẵn sàng cao của các dịch vụ của nó. Triển khai nhiều bộ hệ thống hiển thị 3D giống nhau cùng lúc, cho phép hệ thống hiển thị trung tâm dữ liệu 3D được triển khai và chạy trên nhiều máy chủ cùng lúc. Đồng thời, một IP ảo được cung cấp, sau đó thế giới bên ngoài sử dụng IP ảo này để truy cập vào hệ thống quản lý trực quan 3D khi máy chủ vật lý bị treo sẽ tự động chuyển sang máy chủ khác nhưng IP ảo này vẫn có thể cung cấp. dịch vụ.
Để đạt được tính sẵn sàng cao, cần phải đảm bảo tính nhất quán của dữ liệu nên dữ liệu trong cơ sở dữ liệu trên các máy chủ này cần phải nhất quán; đồng thời, thông tin file tải lên cũng cần phải nhất quán; Cuối cùng bạn cần sử dụng chương trình phần mềm giám sát để theo dõi và tự động chuyển đổi khi máy bị treo.
1. Tính sẵn sàng cao là gì?
Tính sẵn sàng cao HA (High Availability) là một trong những yếu tố phải được xem xét trong thiết kế kiến trúc hệ thống phân tán. Nó thường đề cập đến việc giảm thời gian khi hệ thống không thể cung cấp dịch vụ thông qua thiết kế.
Giả sử hệ thống luôn có thể cung cấp dịch vụ, chúng ta nói rằng tính sẵn sàng của hệ thống là 100%.
Nếu hệ thống không thể cung cấp dịch vụ cho mỗi 100 đơn vị thời gian nó chạy thì chúng tôi nói rằng tính khả dụng của hệ thống là 99%.
Mục tiêu về tính sẵn sàng cao của nhiều công ty là bốn số chín, tức là 99,99%, nghĩa là thời gian ngừng hoạt động hàng năm của hệ thống là 8,76 giờ.
Trang chủ tìm kiếm của Baidu được công nhận trong ngành là một hệ thống có khả năng đảm bảo tính sẵn sàng cao tuyệt vời. Mọi người thậm chí còn đánh giá "kết nối mạng" bằng cách liệu dịch vụ tính sẵn sàng cao của Baidu có thể truy cập được hay không. có thể truy cập được" và "Baidu không mở được, chắc là do mạng không kết nối được", đây thực sự là lời khen ngợi cao nhất dành cho Baidu HA. -----Trích từ Zhihu.
2. Làm thế nào để đảm bảo tính sẵn sàng cao của hệ thống
Tất cả chúng ta đều biết rằng các điểm đơn lẻ là kẻ thù của tính sẵn sàng cao của hệ thống. Các điểm đơn lẻ thường là rủi ro lớn nhất và là kẻ thù của tính sẵn sàng cao của hệ thống. Chúng ta nên cố gắng tránh các điểm đơn lẻ trong quá trình thiết kế hệ thống. Về mặt phương pháp, nguyên tắc đảm bảo tính sẵn sàng cao là “phân cụm”, hay “dự phòng”: chỉ có một điểm duy nhất, nếu dịch vụ bị lỗi thì dịch vụ sẽ bị ảnh hưởng; là những bản sao lưu khác có thể tiếp quản.
Để đảm bảo tính sẵn sàng cao của hệ thống, nguyên tắc cốt lõi của thiết kế kiến trúc là: dự phòng.
Có dự phòng thôi là chưa đủ. Mỗi khi xảy ra lỗi, cần phải can thiệp thủ công để khôi phục, điều này chắc chắn sẽ làm tăng khả năng không thể sử dụng được của hệ thống. Do đó, tính sẵn sàng cao của hệ thống thường đạt được thông qua "chuyển đổi dự phòng tự động". -----Trích từ Zhihu.
Lời nói của con người: Hai máy chủ khởi động cùng một dịch vụ. Nếu một máy chủ bị lỗi, máy chủ kia sẽ tự động tiếp quản. Chúng tôi gọi đây là tính sẵn sàng cao;
Máy chủ tương tự: Dự phòng, các máy chủ tương tự có 2-4 bộ nguồn nhưng đắt hơn.
Bên trên:
Cài đặt giữ nguyên:
Phương pháp cài đặt ngoại tuyến: Vì hầu hết khách hàng của chúng tôi thuộc trung tâm dữ liệu và sẽ không kết nối với mạng bên ngoài nên phương pháp cài đặt ngoại tuyến phổ biến hơn. Chỉ cần sử dụng lệnh sau. cài đặt keepaliving. Bộ thứ dành cho máy ảnh, vì điều này liên quan đến nhu cầu cài đặt mô-đun openssl. Nếu nó chưa được cài đặt, trước tiên hãy cài đặt phần mềm tương ứng cho máy ảnh nginx.
Chế độ hoạt động được giữ nguyên:
Điều kiện chuẩn bị
Cần có ba IP và chúng phải nằm trong mạng cục bộ và có thể ping lẫn nhau. Hai IP đầu tiên rất dễ hiểu. Có hai IP thứ ba là IP ảo, là IP miễn phí. Đã được kích hoạt. Chúng tôi truy cập vào hệ thống. Nếu vậy, hãy truy cập nó thông qua IP ảo này.
sự ưu tiên
VRRP xác định trạng thái của từng bộ định tuyến trong bộ định tuyến ảo dựa trên mức độ ưu tiên.
Chế độ không ưu tiên
Nếu bộ định tuyến Dự phòng hoạt động ở chế độ không ưu tiên, miễn là bộ định tuyến Chính không bị lỗi thì bộ định tuyến Dự phòng sẽ không trở thành bộ định tuyến Chính ngay cả khi sau đó nó được định cấu hình với mức ưu tiên cao hơn.
Phương pháp ưu tiên
Nếu Router dự phòng hoạt động ở chế độ ưu tiên, sau khi nhận được tin nhắn VRRP, nó sẽ so sánh mức ưu tiên của chính nó với mức ưu tiên trong tin nhắn quảng cáo. Nếu mức ưu tiên của nó cao hơn mức ưu tiên của bộ định tuyến Chính hiện tại, nó sẽ chủ động nắm bắt để trở thành bộ định tuyến Chính; nếu không, nó sẽ vẫn ở trạng thái Sao lưu.
yum cài đặt keepalived-y
1. Tải tập tin lên
1. Đầu tiên hãy chuyển file sang opt.
2. Giải nén và cài đặt
cd /opt
tar -zxvf keepalived-2.0.20.tar.gz
3. Biên dịch
cd keepalived-2.0.20
./cấu hình --tiền tố=/usr/local/keepalived
Bạn sẽ tìm thấy một lỗi.
4. Báo lỗi rồi cài đặt
cd /opt
rpm -ivh libnl-1.1.4-3.el7.x86_64.rpm --lực --nodeps
rpm -ivh libnl-devel-1.1.4-3.el7.x86_64.rpm --lực --nodeps
cd keepalived-2.0.20
./cấu hình --tiền tố=/usr/local/keepalived
Nếu không có lỗi được báo cáo, tiếp tục thực hiện.
thực hiện && thực hiện cài đặt
Nhập lệnh trên sẽ báo lỗi sau.
gỡ rối
cd /usr/local/lib64
xuất LIBRARY_PATH=/usr/local/lib64
cd /opt/keepalived-2.0.20
./cấu hình --tiền tố=/usr/local/keepalived
thực hiện && thực hiện cài đặt
Một lỗi đã được báo cáo sau khi thực hiện.
5. Khởi tạo giữ nguyên
cp /opt/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/
cp /opt/keepalived-2.0.20/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
chmod +x /etc/init.d/keepalived
6. Thêm tính năng giữ lại khi khởi động
chkconfig —thêm keepalived
chkconfig vẫn được giữ nguyên
7. Bắt đầu, tắt, khởi động lại
dịch vụ bắt đầu được duy trì //Bắt đầu
dừng dịch vụ được duy trì // Dừng
dịch vụ được giữ nguyên khởi động lại // khởi động lại
Khi chúng ta bắt đầu sử dụng service keepaliving start thì sẽ báo lỗi.
gỡ rối
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
Nhập lệnh để bắt đầu.
dịch vụ keepalived bắt đầu
Xin lưu ý rằng các bước 1-7 ở trên cũng cần được cài đặt trên máy sao lưu.
8. Cấu hình giữ nguyên
Máy chủ: 192.168.10.51.
Máy dự phòng: 192.168.10.65.
IP ảo: 192.168.10.77.
Hoạt động dưới máy chủ:
vi /etc/keepaliving/keepaliving.conf
Đây là những gì chúng ta cần sửa đổi.
Sau khi điền xong, trực tiếp: wq! Lưu và thoát.
Cách truy vấn tên card mạng nêu ở hình trên
địa chỉ ip
Sau đó khởi động lại giữ nguyên.
dịch vụ keepalived khởi động lại
trạng thái dịch vụ được lưu giữ // Kiểm tra trạng thái của dịch vụ được lưu giữ. Hình ảnh bên dưới cho biết rằng nó đã được bắt đầu.
Vận hành trên máy dự phòng:
vi /etc/keepaliving/keepaliving.conf
Đây là những gì chúng ta cần sửa đổi.
Sau khi điền xong, trực tiếp: wq! Lưu và thoát.
Sau đó khởi động lại giữ nguyên.
dịch vụ keepalived khởi động lại
trạng thái dịch vụ được lưu giữ // Kiểm tra trạng thái của dịch vụ được lưu giữ. Hình ảnh bên dưới cho biết rằng nó đã được bắt đầu.
9.Xác minh
Sau khi khởi động, hãy kiểm tra xem địa chỉ IP ảo tương ứng có được tạo hay không, liệu IP ảo tương ứng có được tạo khi máy chủ tắt hay được giữ nguyên tương ứng và bị treo và liệu IP ảo có được chuyển lại sang máy chủ khi máy chủ khởi động lại hay không .
Chúng ta có thể ping nhau và thấy rằng chúng được kết nối.
Như chúng tôi đã nói ở trên, quyền truy cập mặc định là máy chủ. Nếu máy chủ bị lỗi, nó sẽ chuyển sang máy dự phòng. Chúng ta chỉ cần kiểm tra IP trên máy chủ thì rõ ràng có hai IP trên đó, một trong số đó là máy ảo. IP máy.
Khi chúng ta tắt Host hoặc tắt dịch vụ keepa của Host xem có bị trôi trở lại nữa không?
Hãy nhìn lại ip addr rõ ràng là không còn ip ảo nữa.
Chúng ta đã tắt thành công dịch vụ giữ lại trên máy chủ. Hãy xem liệu IP ảo có thể được nhìn thấy trên máy sao lưu hay không.
Chúng ta đang vận hành trên máy dự phòng. Chúng ta có thể thấy rằng IP ảo đã chạy đến mức này. Nhìn thấy điều này, bạn đã hiểu cơ bản về chế độ làm việc của keepaliving Tiếp theo, chúng ta kích hoạt dịch vụ keepaliving trên máy chủ và chúng ta có thể chuyển tiếp hay không. vào nó. Điều này nhằm mô phỏng thời điểm máy chủ đã tiếp tục dịch vụ và xem liệu nó có thể tự động chuyển sang dịch vụ đó hay không.
Bắt đầu dịch vụ lưu giữ của máy chủ
dịch vụ keepalived bắt đầu
trạng thái dịch vụ được duy trì
Nhìn vào IP, rõ ràng là nó đã được chuyển trở lại và dịch vụ được giữ lại đã được cấu hình kể từ đó.
sao lưu tổng thể mysql:
Để đảm bảo dữ liệu trong cơ sở dữ liệu trên mỗi máy chủ được nhất quán, cơ chế đồng bộ hóa cơ sở dữ liệu cần được kích hoạt. Bởi vì nó là một hệ thống hoàn chỉnh và hệ thống chứa cơ sở dữ liệu. Vì bất kỳ máy chủ nào cũng có thể được chọn nên dữ liệu trên tất cả các cơ sở dữ liệu phải được cập nhật. Khi dữ liệu trên bất kỳ máy chủ nào thay đổi, nó phải được tự động đồng bộ hóa với các máy chủ khác. Hệ thống quản lý trực quan ba chiều sử dụng cơ sở dữ liệu Mysql và cơ chế sao lưu chính-chính được sử dụng ở đây để đồng bộ hóa.
Cơ sở dữ liệu chính: 192.168.10.51.
Cơ sở dữ liệu thứ cấp sơ cấp: 192.168.10.65.
Cơ sở dữ liệu chính 1:
Chỉnh sửa cơ sở dữ liệu.
vi /etc/my.cnf
# Kích hoạt đồng bộ hóa nhị phân log-bin=mysql-bin # Đặt ID, không thể lặp lại, bạn có thể sử dụng chữ số cuối của IP server-id=129 # Tên của dữ liệu cần được đồng bộ hóa, cần có nhiều cơ sở dữ liệu được đặt lặp lại: bin-do-db ,bin-ignore-db là mối quan hệ loại trừ lẫn nhau, bạn chỉ cần đặt một trong số chúng replica-do-db=itv # Giá trị ban đầu của trường tăng tự động là 1 tự động -increment-offset=1 # Giá trị tăng trường tự động tăng auto-increment-increment=2 # Bỏ qua tất cả các lỗi sao chép Slave-skip-errors=all
systemctl restart mysqld //Khởi động lại dịch vụ mysql
Cơ sở dữ liệu chính 2:
Chỉnh sửa cơ sở dữ liệu.
vi /etc/my.cnf
# Kích hoạt đồng bộ hóa nhị phân log-bin=mysql-bin # Đặt ID, không thể lặp lại, bạn có thể sử dụng chữ số cuối của IP server-id=128 # Tên của dữ liệu cần được đồng bộ hóa, cần có nhiều cơ sở dữ liệu được đặt lặp lại: bin-do-db ,bin-ignore-db là mối quan hệ loại trừ lẫn nhau, bạn chỉ cần đặt một trong số chúng replica-do-db=itv # Giá trị ban đầu của trường tăng tự động là 1 tự động -increment-offset=1 # Giá trị tăng trường tự động tăng auto-increment-increment=2 # Bỏ qua tất cả các lỗi sao chép Slave-skip-errors=all
systemctl restart mysqld //Khởi động lại dịch vụ mysql
Tạo tài khoản sao chép mysql:
Hoạt động trong cơ sở dữ liệu chính:
Tạo một tài khoản có mật khẩu root1 cho địa chỉ IP của máy tính chính và phụ để cho phép truy cập từ xa vào cơ sở dữ liệu cục bộ.
Đăng nhập mysql
mysql -uroot -proot //Đăng nhập vào mysql
cấp quyền sao chép nô lệ trên *.* cho root1@'192.168.10.68' được xác định bởi 'root1';
Cấp quyền: Nếu kết nối như thế này thì bạn có thể truy cập nhưng vẫn không xem được dữ liệu nên cần cấp quyền root1.
cập nhật bộ người dùng `Select_priv` = 'Y', `Insert_priv` = 'Y', `Update_priv` = 'Y', `Delete_priv` = 'Y', `Create_priv` = 'Y', `Drop_priv` = 'Y', `Reload_priv` = 'Y', `Shutdown_priv` = 'Y', `Process_priv` = 'Y', `File_priv` = 'Y', `Grant_priv` = 'Y', `References_priv` = 'Y', `Index_priv` = 'Y', `Alter_priv` = 'Y', `Show_db_priv` = 'Y', `Super_priv` = 'Y', `Create_tmp_table_priv` = 'Y', `Lock_tables_priv` = 'Y', `Execute_priv` = 'Y', `Repl_slave_priv` = 'Y', `Repl_client_priv` = 'Y', `Create_view_priv` = 'Y', `Show_view_priv` = 'Y', `Create_routine_priv` = 'Y', `Alter_routine_priv` = 'Y', `Create_user_priv` = 'Y', `Event_priv` = 'Y', `Trigger_priv` = 'Y', `Create_tablespace_priv` = 'Y' trong đó người dùng = 'root1';
Có hiệu lực ngay lập tức:
quyền xóa bỏ;
Hoạt động trong cơ sở dữ liệu sơ cấp và thứ cấp:
Tạo một tài khoản có mật khẩu root1 cho địa chỉ IP của Main One, tài khoản này sẽ cho phép truy cập từ xa vào cơ sở dữ liệu cục bộ.
Đăng nhập mysql
mysql -uroot -proot //Đăng nhập vào mysql
cấp quyền sao chép nô lệ trên *.* cho root1@'192.168.10.67' được xác định bởi 'root1';
Cấp quyền: Nếu kết nối như thế này thì bạn có thể truy cập nhưng vẫn không xem được dữ liệu nên cần cấp quyền root1.
cập nhật bộ người dùng `Select_priv` = 'Y', `Insert_priv` = 'Y', `Update_priv` = 'Y', `Delete_priv` = 'Y', `Create_priv` = 'Y', `Drop_priv` = 'Y', `Reload_priv` = 'Y', `Shutdown_priv` = 'Y', `Process_priv` = 'Y', `File_priv` = 'Y', `Grant_priv` = 'Y', `References_priv` = 'Y', `Index_priv` = 'Y', `Alter_priv` = 'Y', `Show_db_priv` = 'Y', `Super_priv` = 'Y', `Create_tmp_table_priv` = 'Y', `Lock_tables_priv` = 'Y', `Execute_priv` = 'Y', `Repl_slave_priv` = 'Y', `Repl_client_priv` = 'Y', `Create_view_priv` = 'Y', `Show_view_priv` = 'Y', `Create_routine_priv` = 'Y', `Alter_routine_priv` = 'Y', `Create_user_priv` = 'Y', `Event_priv` = 'Y', `Trigger_priv` = 'Y', `Create_tablespace_priv` = 'Y' trong đó người dùng = 'root1';
Có hiệu lực ngay lập tức:
quyền xóa bỏ;
Kiểm tra quyền truy cập vào:
Đăng nhập vào cơ sở dữ liệu của chính hai trên một chính
mysql -h192.168.10.65 -uroot1 -p //Đăng nhập vào cơ sở dữ liệu của tiểu học thứ hai
Nhận thấy rằng kết nối không thành công.
Chúng tôi đã kiểm tra cổng 3306 và thấy rằng nó đã bị chiếm dụng. Chúng tôi đã mở cổng 3306. Chúng tôi cần mở cổng này trên cả máy đang hoạt động và máy dự phòng.
Có thể là do tường lửa.
tường lửa-cmd --zone=public --add-port=3306/tcp --permanent
Sau đó khởi động lại tường lửa.
systemctl khởi động lại firewalld.service
Tiếp tục kết nối và thấy rằng kết nối thành công và có thể xem được dữ liệu.
hiển thị cơ sở dữ liệu // Xem cơ sở dữ liệu
Theo cách tương tự, cơ sở dữ liệu của chính hai có thể truy cập cơ sở dữ liệu của chính. Hãy xem.
mysql -h192.168.10.51 -uroot1 -p //Đăng nhập vào cơ sở dữ liệu chính
hiển thị cơ sở dữ liệu // Xem cơ sở dữ liệu
Khởi động lại cơ sở dữ liệu
Cơ sở dữ liệu chính 1: systemctl restart mysqld
Cơ sở dữ liệu chính 2: systemctl restart mysqld
Báo cáo thông tin bin-log cho nhau
Đồng bộ hóa master-master và đồng bộ hóa master-slave đều dựa trên nguyên tắc binlog. Nó tương đương với việc bật công tắc này. Mỗi khi chúng ta vận hành cơ sở dữ liệu, một nhật ký binlog sẽ được tạo và sau đó nhật ký binlog sẽ được gửi đến. bên kia thực hiện để dữ liệu được đồng bộ hóa.
Đầu tiên nhập dòng lệnh MySQL
Cơ sở dữ liệu chính 1:
Kiểm tra nhật ký: hiển thị trạng thái chính,
Thiết lập đồng bộ hóa
đổi master thành master_host = '192.168.10.65',master_user='root1',master_password='root1',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;
Lưu ý: master_log_file có cùng giá trị với Tệp và master_log_pos có cùng giá trị với Vị trí.
Bắt đầu đồng bộ hóa: bắt đầu nô lệ,
Kiểm tra trạng thái đồng bộ hóa
hiển thị trạng thái nô lệ\G;
Khi thấy 2 có thì đó là: Slave_IO_Running: Yes.
Slave_SQL_Running: Có 。
Điều đó có nghĩa là cấu hình đã thành công nhưng có một cấu hình hiển thị không, đây rõ ràng là một vấn đề.
Giải pháp
dừng nô lệ;
thiết lập lại nô lệ;
bắt đầu nô lệ;
Sau đó chúng ta tiếp tục kiểm tra trạng thái đồng bộ,
hiển thị trạng thái nô lệ\G;
Rất hoàn hảo.
Cơ sở dữ liệu chính 2:
Đây thực sự là hoạt động tương tự như cơ sở dữ liệu chính ở trên.
hiển thị trạng thái chủ;
đổi master thành master_host = '192.168.10.51',master_user='root1',master_password='root1',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;
Lưu ý: master_log_file có cùng giá trị với Tệp và master_log_pos có cùng giá trị với Vị trí.
Bắt đầu đồng bộ hóa
bắt đầu nô lệ;
Kiểm tra trạng thái đồng bộ hóa
hiển thị trạng thái nô lệ\G;
Khi bạn nhìn thấy hai có, đó là:
Slave_IO_Running: Có 。
Slave_SQL_Running: Có 。
Điều đó có nghĩa là cấu hình đã thành công. Nếu Slave_io_Running ở đây hiển thị không, bạn vẫn có thể sử dụng phương pháp trên.
Bắt đầu thử nghiệm dự án:
Triển khai dự án trên các máy chính và phụ tương ứng, nhập cùng một cơ sở dữ liệu và sau đó khởi động nó mãi mãi. Điều này đã được thảo luận trong môi trường triển khai trước đó. Tôi sẽ không đi sâu vào chi tiết ở đây.
Mở phòng máy tính trên Host:
Đồng thời mở phòng máy trên máy chờ:
Sau đó chúng ta bắt đầu truy cập vào 2 project này (chú ý tới tường lửa lúc này và mở port 8081)
Chúng tôi thấy rằng cả hai dự án đều có thể được mở một cách suôn sẻ. Tại thời điểm này, chúng tôi sử dụng IP ảo để truy cập, vì thực tế chúng tôi truy cập thông qua IP ảo này của chúng tôi là 192.168.10.77, cái nào có thể truy cập được một cách trơn tru, bây giờ chúng tôi sẽ đóng. chương trình phòng máy tính của chủ nhà và xem liệu anh ta có thể truy cập được nó hay không.
Tắt dịch vụ lưu trữ
dừng lại mãi mãi
Chúng ta cũng cần tắt dịch vụ keepaliving, vì keepaliving không biết chương trình phòng máy của chúng ta đã bị treo nên phải luôn theo dõi trạng thái của cổng 8081. Nếu không giám sát được cổng 8081 thì hãy dừng dịch vụ keepaliving như sau. là tập lệnh sheel. Sau đó, chúng tôi thiết lập giám sát trong một phút.
A=`netstat -lnp | grep 8081 | wc -l` if [ $A -eq 0 ]; sau đó # echo "nên đóng" /usr/sbin/service keepaliving stop fi
Sau đó tắt dịch vụ keepaliving:
dịch vụ keepalived dừng lại
Bây giờ chúng ta tiếp tục truy cập vào chương trình máy chủ, sau đó truy cập vào IP ảo.
Có thể thấy chương trình máy chủ không thể truy cập được nữa, vậy còn IP ảo thì sao (lưu ý ở đây là phải đóng tường lửa của máy IP ảo hoặc phải mở cổng 8081).
Có thể thấy IP ảo đã được float lên máy chủ dự phòng. Lúc này máy backup đã có sẵn IP ảo.
Nếu lúc này Host trực tuyến trở lại thì IP ảo vẫn trôi từ máy dự phòng về máy chủ lúc này sẽ xảy ra hiện tượng chia não.
Chúng tôi khởi động phòng máy tính của máy chủ và bắt đầu duy trì.
Cuối cùng, bài viết về các giải pháp triển khai tính sẵn sàng cao (keepaliving) này kết thúc tại đây. Nếu bạn muốn biết thêm về các giải pháp triển khai tính sẵn sàng cao (keepaliving), vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ hỗ trợ tôi. tương lai blog của tôi! .
Tôi là một lập trình viên xuất sắc, rất giỏi!