Một kho lưu trữ khôi phục một triển khai Pritunl đang hoạt động; kho còn lại chỉ khôi phục hình ảnh của nó. Hồ sơ máy khách, bản sao cấu hình máy chủ và tarball thư mục trạng thái đều trông giống bản sao lưu, và không cái nào một mình mang lại các tổ chức, người dùng và định nghĩa máy chủ mà Pritunl quản lý. Sự khác biệt nằm ở quyền sở hữu: một phần trạng thái thuộc về cơ sở dữ liệu, một phần thuộc về máy chủ, và một phần là đầu ra được tạo lại. Chọn sai lớp và việc khôi phục tạo ra một máy chủ khởi động, lắng nghe và không biết gì. So sánh này tách ba lớp để kho lưu trữ bạn giữ khớp với sự cố bạn đang khắc phục.

Hai đối tượng trông giống bản sao lưu và chỉ một khôi phục dịch vụ

Hồ sơ máy khách đã tải xuống chứa chứng chỉ, khóa và điểm cuối. Nó đầy đủ cho một thiết bị đó và vô dụng như bản ghi của triển khai: nó không mang tổ chức, người dùng bị vô hiệu hóa, tuyến máy chủ hay tài khoản quản trị. Khôi phục từ thư mục hồ sơ cho ra những máy khách không thể xác thực với bất cứ thứ gì.

Bản sao cấu hình máy chủ cũng chỉ có một phần. /etc/pritunl.conf chứa các thiết lập cấp máy chủ, bao gồm cách tiếp cận cơ sở dữ liệu, và không chứa bản thân các đối tượng VPN.

Cơ sở dữ liệu sở hữu gì và máy chủ sở hữu gì

Pritunl lưu các định nghĩa máy chủ, người dùng, tổ chức và khóa trong MongoDB. Cơ sở dữ liệu đó là mặt phẳng điều khiển có thẩm quyền, và mọi tệp OpenVPN được tạo trên đĩa là đầu ra dẫn xuất từ nó. Một thay đổi thực hiện trực tiếp trên tệp được tạo sẽ tồn tại đến lần tạo lại tiếp theo rồi biến mất, vì vậy chỉnh sửa tệp thời gian chạy không phải là bản sửa lâu dài. Quy tắc tương tự áp dụng cho tuyến và giao diện hiệu lực: chúng mô tả những gì mặt phẳng điều khiển đã tạo ra, không phải những gì nó nên tạo ra.

Máy chủ đóng góp một tập giá trị nhỏ hơn nhưng không thể chuyển nhượng. Một trong số đó là /var/lib/pritunl/pritunl.uuid, danh tính của nút cụ thể đó.

Danh tính đó quan trọng nhất trong một cụm. Máy chủ thay thế cần đăng ký riêng thay vì bản sao UUID của một nút đang hoạt động, nếu không hai bên tranh nhau cùng một danh tính. Ghi lại ánh xạ giữa từng máy chủ, UUID của nó và cơ sở dữ liệu mà nó trỏ tới, vì một bản kết xuất cơ sở dữ liệu không mô tả thiết lập máy chủ nào thuộc về máy nào. Phiên bản phần mềm và tên điểm cuối công khai thuộc cùng bản ghi đó.

Tạo bản kết xuất nhất quán, không phải bản sao thư mục

Sao chép thư mục dữ liệu MongoDB trong khi dịch vụ đang ghi tạo ra các tệp có thể không tạo thành cơ sở dữ liệu dùng được. Thay vào đó hãy dùng đường dẫn kết xuất được cơ sở dữ liệu hỗ trợ, chạy trên topo bạn thực sự có:

mongodump --uri="mongodb://127.0.0.1:27017/pritunl" --out=/var/backups/pritunl/db
sudo tar czf /var/backups/pritunl/host.tgz /etc/pritunl.conf /var/lib/pritunl/pritunl.uuid

Máy chủ độc lập chấp nhận dạng đơn giản đó. Một bộ bản sao cần một điểm nhất quán về thời gian, và bản kết xuất dựa trên oplog có những yêu cầu mà bản kết xuất thường không có. Quy trình được hỗ trợ phụ thuộc vào phiên bản và topo MongoDB của bạn, nên đừng suy ra nó từ sự hiện diện của thư mục dữ liệu. Lưu trữ lớp máy chủ bên cạnh bản kết xuất, trong cùng lần chạy, với cùng dấu thời gian.

Diễn tập khôi phục trước khi bạn cần

Một bản sao lưu mà chưa ai khôi phục là một giả thuyết. Dựng dịch vụ trong mạng cô lập, khôi phục bản kết xuất và đặt các tệp máy chủ trở lại:

mongorestore --uri="mongodb://127.0.0.1:27017" --drop /var/backups/pritunl/db
sudo tar xzf /var/backups/pritunl/host.tgz -C /

Sau đó xác minh các đối tượng thay vì quy trình: đăng nhập, xác nhận tổ chức và người dùng có mặt, và khởi chạy một máy khách thử nghiệm với một định nghĩa máy chủ bạn nhận ra. Ngăn máy chủ đã khôi phục quảng bá điểm cuối sản xuất hoặc chấp nhận kết nối thật cho đến khi địa chỉ và danh tính là có chủ đích. Đây cũng là nơi bạn phát hiện rằng kho lưu trữ cần thông tin xác thực chỉ sống trên máy đã hỏng, vì vậy hãy lưu thông tin xác thực khôi phục ở nơi độc lập. Một cuộc khôi phục phụ thuộc vào máy chủ bạn vừa mất không phải là kế hoạch khôi phục.

Cuối cùng, hãy nhớ rằng một ảnh chụp cũ khôi phục những quyết định cũ. Nếu quản trị viên đã vô hiệu hóa một danh tính sau khi bản kết xuất được tạo, việc khôi phục sẽ bật lại danh tính đó. Việc đối soát sau khôi phục thuộc về quy trình, không phải suy nghĩ muộn màng.

Bài viết liên quan