Hiện nay, công nghệ thông tin là một phần không thể thiếu giúp nâng cao năng lực cạnh tranh và hiệu quả kinh doanh của doanh nghiệp. Vì thế, hệ thống mạng máy tính đòi hỏi phải luôn trong tình trạng hoạt động và mang tính sẵn sàng cao. Do đó, high availability server ra đời nhằm đem đến giải pháp kết nối hoàn hảo giữa doanh nghiệp và khách hàng. Vậy high availability là gì? Hãy cùng Hosting Việt tìm hiểu trong bài viết này nhé!
High availability là gì?
High availability có nghĩa “Độ sẵn sàng cao”. Tức là những máy chủ hoặc thiết bị luôn trong tình trạng sẵn sàng phục vụ, giảm thiểu khả năng gián đoạn của hệ thống. Hoặc có thể hiểu đơn giản High availability là một giải pháp hoặc quy trình hay công nghệ nhằm thực hiện chức năng đảm bảo cho ứng dụng, cơ sở dữ liệu có thể truy cập được 24/7 trong mọi điều kiện.
Để có thể thực hiện được điều này, cơ chế cần tối thiểu 2 máy chủ cùng chạy song song và hoạt động liên tục. Nếu xảy ra tình huống một máy chủ gặp sự cố thì máy còn lại sẽ thay thế nhằm giúp hệ thống vẫn tiếp tục hoạt động bình thường.
Lợi ích của high availability server là gì?
- Tất cả các dữ liệu chứa trong server đều được bảo mật và nó được lưu giữ ở nhiều vị trí khác nhau. Khi có bất kỳ sự cố xảy ra trên VPS thì không gây ảnh hưởng hay làm mất mát dữ liệu nghiêm trọng.
- Khách hàng dễ dàng truy cập vào website mọi lúc, mọi nơi mà không lo sợ tình trạng bị gián đoạn.
- Nhờ các bản sao VPS được lưu trữ ở nhiều cụm, do đó, khi xảy ra sự cố ở một VPS thì VPS khác sẽ tiếp quản. Điều này, giúp hệ thống được hoạt động liên tục.
Giải pháp high availability
Về cơ bản sẽ có 5 giải pháp thiết lập high availability cho database trong MS SQL Server. Cụ thể:
- Replication
- Log Shipping
- Mirroring
- Clustering
- AlwaysON Availability Groups
Replication
Theo giải pháp này thì dữ liệu gốc được sao đến điểm đích thông qua tác vụ sao chép (agent/job). Đồng thời, dùng công nghệ ở mức độ đối tượng.
Một vài thuật ngữ trong Replication:
- Publisher (Bên phát hành): tức máy chủ nguồn.
- Distributor (Bên phân phối): mục này tùy chọn. Nó cho phép lưu trữ dữ liệu đã sao chép cho bên đăng ký (gọi là Subscriber).
- Bên đăng ký: tức máy chủ đích.
Log Shipping
Thông qua tác vụ sao lưu Transaction Log, dữ liệu gốc sẽ được sao chép đến điểm đích và dùng công nghệ ở mức độ cơ sở dữ liệu.
Các thuật ngữ cần biết:
- Primary Server (Máy chủ sơ cấp): là máy chủ nguồn.
- Secondary Server (Máy chủ thứ cấp): là máy chủ đích.
- Máy chủ giám sát được giám sát bằng trạng thái Log Shipping. Bạn có thể tùy chọn máy chủ này hoặc không,
Mirroring
Thiết lập high availability cho database trong MS SQL Server bằng cách sao chép dữ liệu sơ cấp sang thứ cấp thông qua các giao dịch mạng, nhờ sự hỗ trợ của các điểm kết nối hình chiếu với số cổng. Đồng thời, sử dụng công nghệ cấp độ cơ sở dữ liệu.
Các thuật ngữ cần biết:
- Principal Server (Máy chủ gốc): máy chủ nguồn.
- Mirror Server (Máy chủ hình chiếu): máy chủ đích.
- Witness Server (Máy chủ chứng kiến): dùng cho giải pháp chịu lỗi tự động. Máy chủ này tùy chọn theo nhu cầu sử dụng của người dùng.
Clustering
Cách thiết lập high availability này sử dụng dữ liệu đã lưu trữ tại địa điểm chung, dùng cho máy chủ sơ cấp và thứ cấp. Giải pháp này sử dụng công nghệ ở mức bản cài (instance) và phải thiết lập Windows Clustering tại khu vực lưu trữ chung.
Các thuật ngữ cần biết:
- Active Node (Node chủ động): nơi SQL Services chạy.
- Passive Node (Node bị động): nơi SQL Services không chạy.
AlwaysON Availability Groups
Dữ liệu sơ cấp được chuyển sang thứ cấp bằng các giao dịch mạng. Và dùng công nghệ ở mức độ nhóm cơ sở dữ liệu. Với cách này thì Windows Clustering không cần thiết lập nơi lưu trữ chung.
Các thuật ngữ cần biết:
- Primary Replica: máy chủ nguồn.
- Secondary Replica: máy chủ đích.
Trong phạm vi chia sẻ của bài viết này, Hosting Việt sẽ hướng dẫn thực hiện cấu hình high availability là gì cho Mirroring và Log Shipping
- Bước 1: Lấy bản đầy đủ và bản sao T-log của cơ sở dữ liệu gốc.
Ví dụ:
Cấu hình Mirroring/Log Shipping cho cơ sở dữ liệu TestDB với các thông tin sau:
- Testinstance: máy chủ nguồn
- SQL Server: máy chủ sơ cấp
- Devinstance: máy chủ thứ cấp
Để lấy sao lưu đầy đủ và T-log trên máy chủ nguồn. Bạn kết nối tới SQL Server Testinstance, mở truy vấn mới và sử dụng đoạn mã dưới đây.
Backup database TestDB to disk = 'D:\testdb_full.bak'
GO
Backup log TestDB to disk = 'D:\testdb_log.trn'
- Bước 2: Sao chép tập tin sao lưu đến máy chủ đích.
Trong ví dụ trên, chỉ có một máy chủ vật lý cùng 2 bản SQL Server Instance nên không cần thực hiện thao tác sao chép. Tuy nhiên, nếu có 2 bản SQL Server Instance ở 2 máy chủ vật lý thì cần sao chép 2 tập tin đến máy chủ thứ cấp, nơi cài Devinstance.
- Bước 3: Khôi phục cơ sở dữ liệu bằng tập tin sao lưu trên máy chủ đích với việc sử dụng lựa chọn norecovery.
Ví dụ:
- Kết nối tới SQL Server Devinstance.
- Mở truy vấn mới New Query.
- Viết đoạn mã sau để khôi phục cơ sở dữ liệu có tên TestDB. Vì tên trùng với cơ sở dữ liệu gốc nên bạn có thể dùng tên khác cho cấu hình Log Shipping.
- Chọn norecovery để khôi phục.
Restore database TestDB from disk = 'D:\TestDB_full.bak'
with move 'TestDB' to 'D:\DATA\TestDB_DR.mdf',
move 'TestDB_log' to 'D:\DATA\TestDB_log_DR.ldf',
norecovery
GO
Restore database TestDB from disk = 'D:\TestDB_log.trn' with norecovery
- Sau đó, nhấn Refresh thư mục cơ sở dữ liệu trên máy chủ Devinstance sẽ thấy cơ sở dữ liệu TestDB đã được khôi phục với trạng thái như trong hình bên dưới.
- Bước 4: Cấu hình high availability (Log Shipping/Mirroring).
Ví dụ:
- Click chuột phải vào cơ sở dữ liệu TestDB máy chủ gốc, chọn Properties.
- Một màn hình sẽ hiện ra.
- Chọn Mirroring hoặc Transaction Log Shipping tùy theo yêu cầu và thực hiện theo các bước được hệ thống hướng dẫn để hoàn tất việc cấu hình.
Xây dựng hệ thống high availability
Như chia sẻ phần trên, high availability cần sử dụng ít nhất 2 server chạy song song để đảm bảo việc chuyển tiếp thông tin không bị gián đoạn.
Vì thế, khi xây dựng giải pháp high availability cần tính đến khả năng xảy ra sự cố và thiết kế dự phòng ở các nơi cần thiết:
- Dự phòng tất cả các tuyến từ Worksattion đến router ở lớp building access.
- Máy chủ dự phòng cho các server farm module.
- Dự phòng tuyến đường bên trong và giữa các thành phần mạng.
- Liên kết truyền thông dự phòng ở các lớp truy cập.
Server Redundancy (Máy chủ dự phòng )
Máy chủ này được cài đặt trong hệ thống mạng cần lưu trữ các thông tin quan trong. Trong trường hợp bình thường, máy chủ dự phòng ở chế độ offline. Còn khi máy chủ chính gặp sự cố thì máy chủ dự phòng sẽ được bật.
Router Redundancy (Tuyến dự phòng)
Tuyến dự phòng được thiết kế nhằm thực hiện 2 mục đích: cân bằng tải và tăng tính sẵn sàng.
- Cân bằng tải (Load balancing)
Đây là cách chia nhỏ số lượng công việc trên một thiết bị thành nhiều thiết bị tương ứng để xử lý yêu cầu nhanh và hiệu quả hơn.
Thực tế, các website của những doanh nghiệp lớn thường gặp vấn đề về traffic nên load balancing chính là giải pháp cần thiết, nhằm định tuyến yêu cầu truy cập đến các host server khác nhau.
Phần lớn các giao thức định tuyến IP đều cân bằng tải trên các liên kết song song. Do đó, cần sử dụng tối đa đường dẫn, thay đổi số lượng liên kết để router thực hiện cân bằng tải, mặc định là 4 và tối đa 6 đường.
Thông thường, cứ 2 server được sử dụng để cân bằng tải thì sẽ phải có thêm 1 server thực hiện nhiệm vụ quyết định server nào đảm nhận công việc. Vì thế, load balancing cần nhiều thiết bị để cài đặt và chúng được tích hợp với các dịch vụ sao lưu, dự phòng dữ liệu. Thậm chí, trong một vài tình huống, thiết bị còn được đặt ở nhiều nơi khác nhau.
- Increasing Availability (Tăng khả năng sẵn sàng mạng)
Đây là yếu tố quan trọng trong mọi hệ thống mạng. Có 4 nguyên tắc chính là Redundancy – Entanglement – Awareness – Persistence (viết tắt REAP).
- Redundancy (dự phòng): luôn có sẵn một bản dự phòng cho tất cả các thiết bị.
- Entanglement (kết dính): do trong hệ thống, mỗi phần đảm nhận một công việc nên cần phải kết nối chúng để đảm bảo tính nhất quán trong hoạt động.
- Awareness (Nhận thức): giúp khách hàng tiếp cận thông tin của doanh nghiệp nhanh chóng và không gặp bất kỳ trở ngại nào. Một số cách để thực hiện như điều chỉnh bằng tay, cân bằng tải, quảng bá DNS, phương thức dịch vụ chuyên biệt DFS.
- Persistence (Bền bỉ): đảm bảo sự hoạt động xuyên suốt của hệ thống. Có 3 bước để thực hiện là:
+ Kiểm tra và kịp thời phát hiện sự cố.
+ Chuyển dự phòng sang server khác.
+ Kết nối lại với người truy cập.
- Link Media Redundancy (Dự phòng đa liên kết)
Các thiết bị trong mạng chuyển mạch có thể được liên kết dự phòng với nhau, nhằm giúp giảm thiểu thời giang down mạng. Tuy nhiên, điều này khiến chúng có thể gây ra hiện tượng Broadcast-storm (tức là gửi nhiều gói tin quảng bá). Vì thế, cần đến một thuật toán để có thể tối ưu hoạt động giữa 2 trạm mạng. Điển hình là thuật toán Spanning Tree Protocol (STP)
STP sẽ thực hiện chức năng đảm bảo trong cùng một thời điểm sẽ chỉ có một đường tối ưu hoạt động giữa 2 trạm mạng. Còn các đường còn lại trở thành dự phòng. Khi có sự cố với đường chính thì nó sẽ được kích hoạt hoạt động.