Một bản sao lưu khác - hơn cả một tập lệnh, đơn giản hơn một hệ thống

Có nhiều hệ thống sao lưu, nhưng phải làm gì nếu các máy chủ được phục vụ nằm rải rác trên các khu vực và máy khách khác nhau và bạn cần thực hiện với hệ điều hành?

Một bản sao lưu khác - hơn cả một tập lệnh, đơn giản hơn một hệ thống

Tốt ngày, Habr!
Tên tôi là Natalya. Tôi là trưởng nhóm quản trị viên ứng dụng tại NPO Krista. Chúng tôi là Ops cho nhóm dự án của công ty chúng tôi. Chúng tôi có một tình huống khá đặc biệt: chúng tôi cài đặt và bảo trì phần mềm của mình trên cả máy chủ của công ty chúng tôi và trên máy chủ đặt tại địa điểm của khách hàng. Trong trường hợp này, không cần sao lưu toàn bộ máy chủ. Chỉ có “dữ liệu thiết yếu” là quan trọng: DBMS và các thư mục hệ thống tệp riêng lẻ. Tất nhiên, khách hàng có (hoặc không có) các quy định về sao lưu của riêng mình và thường cung cấp một số loại bộ nhớ ngoài để lưu trữ các bản sao lưu ở đó. Trong trường hợp này, sau khi tạo bản sao lưu, chúng tôi đảm bảo gửi tới bộ nhớ ngoài.

Đôi khi, vì mục đích sao lưu, chúng tôi đã thực hiện với tập lệnh bash, nhưng khi các tùy chọn cấu hình ngày càng tăng, độ phức tạp của tập lệnh này cũng tăng theo tỷ lệ và đến một lúc chúng tôi cần phải “phá hủy nó xuống đất, rồi sau đó ...”.

Các giải pháp làm sẵn không phù hợp vì nhiều lý do: do nhu cầu phân cấp sao lưu, yêu cầu lưu trữ bản sao lưu cục bộ tại máy khách, độ phức tạp của thiết lập, thay thế nhập khẩu, hạn chế truy cập.

Đối với chúng tôi, có vẻ như việc viết một cái gì đó của riêng mình sẽ dễ dàng hơn. Đồng thời, tôi muốn có được thứ gì đó đủ cho hoàn cảnh của chúng tôi trong N năm tới, nhưng có khả năng mở rộng phạm vi.

Các điều kiện của nhiệm vụ như sau:

  1. phiên bản sao lưu cơ bản là tự động và chạy cục bộ
  2. lưu trữ các bản sao lưu và nhật ký luôn nằm trong mạng của khách hàng
  3. một thể hiện bao gồm các mô-đun - một loại “hàm tạo”
  4. Cần có khả năng tương thích với các bản phân phối Linux hiện tại, bao gồm cả những bản đã lỗi thời, nên có khả năng đa nền tảng
  5. Để làm việc với instance, chỉ cần truy cập qua ssh là đủ; không cần mở thêm cổng
  6. dễ dàng cài đặt và vận hành tối đa
  7. có thể (nhưng không cần thiết) có một phiên bản riêng cho phép bạn xem tập trung trạng thái sao lưu từ các máy chủ khác nhau

Bạn có thể thấy những gì chúng tôi đã đưa ra ở đây: github.com/javister/krista-backup
Phần mềm được viết bằng python3; hoạt động trên Debian, Ubuntu, CentOS, AstraLinux 1.6.

Tài liệu được đăng trong thư mục tài liệu của kho lưu trữ.

Các khái niệm cơ bản mà hệ thống vận hành:
hành động - một hành động thực hiện một thao tác nguyên tử (sao lưu cơ sở dữ liệu, sao lưu thư mục, chuyển từ thư mục A sang thư mục B, v.v.). Các hành động hiện có được đặt trong thư mục core/actions
task – nhiệm vụ, một tập hợp các hành động mô tả một “nhiệm vụ dự phòng” hợp lý
lịch trình - lịch trình, một tập hợp các nhiệm vụ với chỉ báo tùy chọn về thời gian thực hiện nhiệm vụ

Cấu hình sao lưu được lưu trữ trong tệp yaml; cấu hình cấu hình chung:

  • Cài đặt chung
  • phần hành động: mô tả các hành động được sử dụng trên máy chủ này
  • phần lịch trình: mô tả tất cả các nhiệm vụ (bộ hành động) và lên lịch khởi chạy chúng bằng cron, nếu việc khởi chạy đó là bắt buộc

Một cấu hình ví dụ có thể được tìm thấy ở đây

Những gì ứng dụng hiện có thể làm:

  • Các hoạt động chính của chúng tôi được hỗ trợ: Sao lưu PostgreSQL qua pg_dump, sao lưu thư mục hệ thống tệp qua tar; hoạt động với bộ nhớ ngoài; rsync giữa các thư mục; xoay sao lưu (xóa bản sao cũ)
  • gọi một tập lệnh bên ngoài
  • thực hiện thủ công một nhiệm vụ riêng biệt
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • bạn có thể thêm (hoặc xóa) một nhiệm vụ hoặc toàn bộ lịch trình vào crontab
    /opt/KristaBackup/KristaBackup.py enable all
  • tạo tệp kích hoạt dựa trên kết quả sao lưu. Chức năng này hữu ích khi kết hợp với Zabbix để theo dõi các bản sao lưu
  • có thể hoạt động ở chế độ nền ở chế độ webapi hoặc web
    /opt/KristaBackup/KristaBackup.py web start [--api]

Sự khác biệt giữa các chế độ: webapi không có giao diện web nhưng ứng dụng đáp ứng các yêu cầu từ một phiên bản khác. Đối với chế độ web, bạn cần cài đặt bình và một số gói bổ sung và điều này không được chấp nhận ở mọi nơi, chẳng hạn như trong AstraLinux SE được chứng nhận.

Thông qua giao diện web, bạn có thể xem trạng thái và nhật ký sao lưu của các máy chủ được kết nối: “phiên bản web” yêu cầu dữ liệu từ “phiên bản sao lưu” thông qua API. Truy cập vào web cần có sự cho phép, truy cập vào webapi thì không.

Một bản sao lưu khác - hơn cả một tập lệnh, đơn giản hơn một hệ thống

Nhật ký sao lưu không chính xác được đánh dấu bằng màu: cảnh báo – vàng, lỗi – đỏ.

Một bản sao lưu khác - hơn cả một tập lệnh, đơn giản hơn một hệ thống

Một bản sao lưu khác - hơn cả một tập lệnh, đơn giản hơn một hệ thống

Nếu quản trị viên không cần bảng cheat về các tham số và hệ điều hành máy chủ đồng nhất, bạn có thể biên dịch tệp và phân phối gói làm sẵn.

Chúng tôi phân phối tiện ích này chủ yếu thông qua Ansible, trước tiên triển khai tiện ích này cho một số máy chủ ít quan trọng nhất và sau khi thử nghiệm cho tất cả các máy chủ còn lại.

Kết quả là chúng tôi đã nhận được một tiện ích sao chép nhỏ gọn, độc lập, có thể được tự động hóa và ngay cả những quản trị viên thiếu kinh nghiệm cũng có thể sử dụng được. Nó thuận tiện cho chúng tôi - có thể nó cũng sẽ hữu ích cho bạn?

Nguồn: www.habr.com

Thêm một lời nhận xét