BranchCache cho chia sẻ tệp qua VPN: khi nào có ích, khi nào không
BranchCache tăng tốc tải xuống lặp lại nội dung không đổi, chứ không phải tải lên hay liệt kê thư mục. Trước tiên hãy kiểm tra vị trí, khả năng tiếp cận và chế độ máy khách.
Ai đó trong nhóm nói rằng chia sẻ tệp qua VPN chậm, và gợi ý đầu tiên luôn là bộ nhớ đệm. Trước khi thêm BranchCache vào thiết kế truy cập từ xa, hãy chia lời phàn nàn thành một trong ba dạng: tải xuống lặp lại nội dung không đổi, tải lên, hoặc duyệt nhiều siêu dữ liệu qua các thư mục có hàng nghìn mục. BranchCache xử lý dạng thứ nhất trên nội dung được hỗ trợ và không làm gì hữu ích cho hai dạng còn lại. Đây không phải là hạn chế cần lách; đây là phép so sánh bạn nên thực hiện trước khi dành một tuần cho việc triển khai.
Cùng một chia sẻ, ba lời phàn nàn khác nhau
Một văn phòng chi nhánh nơi tám người mở cùng một video đào tạo không đổi chính là trường hợp mà tính năng này được thiết kế cho. Lần truy xuất đầu tiên đi qua WAN, nội dung được lưu đệm gần người đọc, và những lần truy xuất sau với cùng tệp không đổi được phục vụ cục bộ. Lợi ích là thật và hẹp: cùng nội dung, không đổi, nhiều người đọc.
Một laptop tải lên bản ghi mới qua kết nối gia đình là trường hợp ngược lại. Không có bản sao đã lưu đệm từ trước của một tệp chưa tồn tại, nên việc tải lên vẫn đi theo con đường bị hạn chế như mọi khi. Bộ nhớ đệm tải xuống không xóa bỏ việc tải lên, và không lựa chọn vị trí nào thay đổi điều đó.
Dạng thứ ba khiến người ta thất vọng vì nó trông giống một vấn đề tải xuống. Mở một thư mục có hàng chục nghìn tệp, sắp xếp nó và đọc siêu dữ liệu là một chuỗi thao tác nhỏ, không phải việc truyền lặp lại một đối tượng lớn. Lưu đệm phần thân tệp không giúp gì cho việc liệt kê.
Bộ nhớ đệm phân tán: một nhóm VPN không phải LAN chi nhánh
Ở chế độ phân tán, các máy khách chia sẻ nội dung đã lưu đệm với nhau, và Microsoft ghi nhận chế độ này là hoạt động trong một mạng con duy nhất. Một nhóm máy khách VPN không phải mạng con theo nghĩa đó, kể cả khi mọi địa chỉ trông liền nhau: việc phát hiện máy ngang hàng, khả năng tiếp cận giữa các máy khách và quyền trao đổi dữ liệu bộ nhớ đệm là những câu hỏi riêng, và thiết kế truy cập từ xa thông thường trả lời cả ba là “không”.
Bạn có thể làm cho nhóm hoạt động như LAN chi nhánh bằng cách cho phép lưu lượng giữa các máy khách, nhưng đó là quyết định bảo mật, không phải quyết định về bộ nhớ đệm. Hầu hết thiết kế truy cập từ xa cô lập các máy khách với nhau chính là để một laptop bị xâm phạm không thể chạm tới máy khác, và đánh đổi sự cô lập đó lấy một lần trúng bộ nhớ đệm là một cuộc trao đổi tồi trừ khi các máy ngang hàng vốn đã là những bên tin cậy ngang nhau.
Với một người dùng di động duy nhất, chế độ phân tán không có ai để chia sẻ. Bộ nhớ đệm vẫn có thể phục vụ các lần đọc lặp lại của máy khách đó, nhưng đó là lợi ích bộ nhớ đệm phía máy khách, không phải lợi ích của vị trí chi nhánh, và nên nói rõ điều đó trước khi ai đó kỳ vọng văn phòng sẽ nhanh hơn.
Bộ nhớ đệm được lưu trữ: vị trí quyết định liệu nó có ích
Bộ nhớ đệm được lưu trữ đặt bộ nhớ đệm chia sẻ trên một máy chủ, đây là chế độ duy nhất hợp lý giữa các mạng con và là chế độ duy nhất hoạt động khi các máy khách không thể nói chuyện với nhau. Câu hỏi tức thời là máy chủ đó nằm ở đâu. Một bộ nhớ đệm được lưu trữ mà phải đi qua đúng liên kết bị hạn chế như nguồn gốc thì đã di chuyển các byte, chứ không di chuyển vấn đề.
Hãy đặt nó gần người đọc, giao cho nó một người chịu trách nhiệm và định cỡ đĩa theo tập làm việc thay vì theo toàn bộ chia sẻ. Tổng quan về BranchCache của Microsoft mô tả cả hai chế độ và hành vi của máy khách, kể cả phần mà người ta quên: máy khách vẫn liên hệ với nguồn gốc để được cấp quyền và lấy thông tin nội dung trước khi dùng dữ liệu đã lưu đệm.
Triển khai là ba vai trò được lên kế hoạch cùng nhau, không phải một ô đánh dấu. Máy chủ nguồn gốc công bố hàm băm cho nội dung, bộ nhớ đệm được lưu trữ được bật và có thể phát hiện, và các máy khách được cấu hình để dùng nó. Ở phía máy chủ, điều đó dễ nhận ra trong PowerShell:
Enable-BCHostedServer -RegisterSCP
Get-BCStatus | Select-Object BranchCacheIsEnabled, ClientMode, HostedCacheServerList
Trên máy khách, hãy trỏ tới các máy chủ có tên hoặc để nó tự phát hiện qua điểm kết nối dịch vụ; sau đó xác nhận chế độ mà nó thực sự chọn thay vì cho rằng chính sách đã được áp dụng:
Enable-BCHostedClient -ServerNames cache1.corp.example -UseSCP
Get-BCStatus | Select-Object BranchCacheIsEnabled, ClientMode
Những gì vẫn đến được nguồn gốc
Bộ nhớ đệm không xóa bỏ việc cấp quyền. Một máy khách không có quyền đọc tệp không được truy cập chỉ vì người khác đã lưu đệm tệp đó, và nguồn gốc vẫn trả lời câu hỏi cấp quyền cũng như cung cấp thông tin nội dung để việc tra cứu bộ nhớ đệm trở nên khả thi. Nếu không tiếp cận được nguồn gốc, chỉ riêng bản sao đã lưu đệm không trở thành một chia sẻ ngoại tuyến.
Thay đổi nội dung cũng phá vỡ giả định một cách âm thầm. Một tệp được lưu lại, mã hóa lại hoặc bị sản phẩm sao lưu chạm vào có thể không còn khớp với hàm băm đã lưu đệm, và lần đọc tiếp theo quay lại nguồn gốc. Đó là hành vi đúng, và đó là lý do một bộ nhớ đệm có tập làm việc thay đổi mỗi giờ mang lại rất ít.
Việc đẩy ra là giới hạn thứ ba. Bộ nhớ đệm là hữu hạn, nên một tập làm việc lớn đẩy nội dung cũ ra ngoài, và lợi ích phụ thuộc vào việc các lần đọc lại diễn ra trước khi bị đẩy ra chứ không phải sau đó. Định cỡ bộ nhớ đệm cho toàn bộ chia sẻ là cách thường gặp để thất vọng với một lần triển khai đúng về mặt kỹ thuật.
Hãy chấp nhận nó với hai lần truy xuất và một lần tải lên
Hãy thử ba luồng đúng và ghi lại mỗi luồng cho thấy gì. Lần truy xuất đầu tiên một tệp tiêu biểu từ một máy khách, đo trên liên kết nguồn gốc cũng như trên đồng hồ của người dùng. Lần truy xuất thứ hai cùng tệp không đổi đó từ máy khách thứ hai trong cùng nhóm vị trí. Một lần tải lên tệp mới, lần này không nên cho thấy cải thiện và xác nhận rằng bộ nhớ đệm không được ghi công cho điều nó chưa bao giờ làm.
Nếu lần truy xuất thứ hai vẫn đi qua liên kết nguồn gốc cho phần lớn số byte, thì bộ nhớ đệm không được dùng, và nguyên nhân thường là máy khách ở sai chế độ, thiếu công bố hàm băm ở nguồn gốc, hoặc bộ nhớ đệm được lưu trữ ở phía sai của liên kết bị hạn chế. Đó là ba cách khắc phục khác nhau, và chỉ một trong số đó liên quan đến vị trí mạng.
Sau đó hãy phát biểu kết luận theo đúng dạng của lời phàn nàn ban đầu: việc tải xuống lặp lại nội dung không đổi từ nguồn gốc này đến những người đọc này được bộ nhớ đệm này phục vụ. Mọi thứ khác về chia sẻ vẫn không bị đụng tới, bao gồm tải lên, liệt kê thư mục và câu chuyện ngoại tuyến, vốn vẫn cần câu trả lời riêng.