Cơ chế sao lưu trong Elasticsearch được gọi là Snapshot. Snapshot là bản sao lưu được lấy từ cụm Elasticsearch đang ở trạng thái chạy. Không cần phải hạ cụm, giúp tránh thời gian bảo trì của các ứng dụng. Có thể chụp và lưu trữ Snapshot của một chỉ mục riêng lẻ hoặc toàn bộ cụm trong kho lưu trữ trên hệ thống tệp dùng chung.
Snapshot trong Elasticsearch được chụp theo từng bước. Điều này có nghĩa là khi tạo Snapshot của một chỉ mục, Elasticsearch sẽ tránh sao chép bất kỳ dữ liệu nào đã được lưu trữ như một phần của Snapshot trước đó của cùng một chỉ mục. Do đó, việc chụp ảnh nhanh cụm thường xuyên có thể hiệu quả.
Tương tự như cách chúng ta có thể sao lưu cụm ở trạng thái đang chạy, chúng ta cũng có thể khôi phục ảnh chụp nhanh vào cụm đang chạy. Khi khôi phục chỉ mục, chúng ta thậm chí có thể thay đổi tên của chỉ mục đã khôi phục cũng như một số cài đặt của chỉ mục đó.
Để tạo bản sao lưu, chúng ta phải đăng ký kho lưu trữ ảnh chụp nhanh trước khi có thể thực hiện các hoạt động chụp nhanh và khôi phục. Để đăng ký kho lưu trữ hệ thống tệp chia sẻ cho cụm, cần phải gắn cùng một hệ thống tệp chia sẻ vào cùng một vị trí trên tất cả các nút chính và nút dữ liệu. Vị trí này phải được đăng ký trong tệp cấu hình trên tất cả các nút dữ liệu và nút chính.
Trong bài viết này, chúng tôi sẽ xác minh kho lưu trữ chia sẻ NFS và xem các bước để chụp nhanh và khôi phục kho lưu trữ đó.
Tại đây,
Máy chủ NFS đã chia sẻ thư mục “/home/ubuntu/shared/”[/b] của mình với Elasticsearch Nodes.
Mỗi Elasticsearch đều có thư mục cục bộ “/home/ubuntu/mounted” được gắn trên thư mục chia sẻ của NFS “/home/ubuntu/shared/”. Chúng ta cần đảm bảo rằng quyền sở hữu của tất cả các thư mục đều thuộc về cùng một người dùng mà chúng ta sẽ bắt đầu Elasticsearch.
Sau khi thiết lập xong, chúng ta có thể tiến hành thêm.
Tại đây, nếu bạn đã thiết lập cụm Elasticsearch, bạn phải biết về cấu hình sau.
Cấu hình duy nhất chúng ta cần thực hiện để sử dụng Elasticsearch Cluster Backupngoài Cấu hình Cụm Elasticsearch hiện có là "path.repo: ["/home/ubuntu/mounted"]":
Giữ nguyên trên mỗi nút.
Sau khi bạn đã thiết lập xong tất cả cấu hình này, hãy khởi động tất cả các Nút Elasticsearch, trước tiên hãy khởi động máy chủ chính ban đầu.
Nếu chúng ta nhận được phản hồi trống, điều đó có nghĩa là chúng ta chưa thiết lập bất kỳ kho lưu trữ nào
Để thiết lập kho lưu trữ, hãy thực thi lệnh sau.
Tại đây, "my_backup" trong lệnh trên là tên của kho lưu trữ.
Chúng ta có thể kiểm tra các kho lưu trữ đã đăng ký bằng lệnh sau
Sử dụng lệnh sau để sao lưu có tên là "snapshot_name"
Sử dụng lệnh sau để khôi phục bản sao lưu có tên “snapshot_name”
Snapshot trong Elasticsearch được chụp theo từng bước. Điều này có nghĩa là khi tạo Snapshot của một chỉ mục, Elasticsearch sẽ tránh sao chép bất kỳ dữ liệu nào đã được lưu trữ như một phần của Snapshot trước đó của cùng một chỉ mục. Do đó, việc chụp ảnh nhanh cụm thường xuyên có thể hiệu quả.
Tương tự như cách chúng ta có thể sao lưu cụm ở trạng thái đang chạy, chúng ta cũng có thể khôi phục ảnh chụp nhanh vào cụm đang chạy. Khi khôi phục chỉ mục, chúng ta thậm chí có thể thay đổi tên của chỉ mục đã khôi phục cũng như một số cài đặt của chỉ mục đó.
Để tạo bản sao lưu, chúng ta phải đăng ký kho lưu trữ ảnh chụp nhanh trước khi có thể thực hiện các hoạt động chụp nhanh và khôi phục. Để đăng ký kho lưu trữ hệ thống tệp chia sẻ cho cụm, cần phải gắn cùng một hệ thống tệp chia sẻ vào cùng một vị trí trên tất cả các nút chính và nút dữ liệu. Vị trí này phải được đăng ký trong tệp cấu hình trên tất cả các nút dữ liệu và nút chính.
Trong bài viết này, chúng tôi sẽ xác minh kho lưu trữ chia sẻ NFS và xem các bước để chụp nhanh và khôi phục kho lưu trữ đó.
Điều kiện tiên quyết
- Thư mục chia sẻ NFS khả dụng và được gắn kết trên tất cả 3 Nút của Elasticsearch ở cùng một vị trí
- Cụm Elasticsearch gồm 3 Nút trên 3 máy chủ Ubuntu.
Những gì chúng tôi sẽ làm
- Xác minh Máy chủ NFS Thiết lập.
- Xác minh Cấu hình Cụm Elasticsearch
- Đăng ký Kho lưu trữ để sao lưu.
- Sao lưu và khôi phục.
Xác minh Thiết lập Máy chủ/Máy khách NFS.
Trong bài viết này, chúng tôi sẽ không nói về thiết lập NFS vì nó không nằm trong phạm vi của bài viết này. Nhưng để sao lưu Elasticsearch, chúng ta cần thiết lập như sau.
Mã:
es-node-1(10.11.10.61) : Máy khách NFS[B]es-node-2(10.11.10.62) : Máy khách NFS
es-node-3(10.11.10.63) : Máy khách NFS
Máy chủ NFS(10.11.10.64) : Máy chủ NFS
Máy chủ NFS đã chia sẻ thư mục “/home/ubuntu/shared/”[/b] của mình với Elasticsearch Nodes.
Mỗi Elasticsearch đều có thư mục cục bộ “/home/ubuntu/mounted” được gắn trên thư mục chia sẻ của NFS “/home/ubuntu/shared/”. Chúng ta cần đảm bảo rằng quyền sở hữu của tất cả các thư mục đều thuộc về cùng một người dùng mà chúng ta sẽ bắt đầu Elasticsearch.
Sau khi thiết lập xong, chúng ta có thể tiến hành thêm.
Xác minh Cấu hình Cụm Elasticsearch
Thực hiện các cấu hình sau để thiết lập Elasticsearch hoạt động ở chế độ Cụm:Tại đây, nếu bạn đã thiết lập cụm Elasticsearch, bạn phải biết về cấu hình sau.
Cấu hình duy nhất chúng ta cần thực hiện để sử dụng Elasticsearch Cluster Backupngoài Cấu hình Cụm Elasticsearch hiện có là "path.repo: ["/home/ubuntu/mounted"]":
Mã:
[B][I]vim config/elasticsearch.yml[/I][/b]
Mã:
[I]path.repo: ["/home/ubuntu/mounted"][/I]
Cấu hình trên Node1
Mã:
#đặt tên cho cụm của bạn.[B]cluster.name: my-cluster
#đặt tên cho các nút của bạn (thay đổi số nút từ nút này sang nút khác).
node.name: "es-node-1"
#xác định nút 1 là master-eligible:
node.master: true
#xác định nút 2 và 3 dưới dạng các nút dữ liệu:
node.data: true
#nhập IP riêng và cổng của nút của bạn:
network.host: 10.11.10.61
http.port: 9200
#chi tiết IP riêng của các nút của bạn:
discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"]
cluster.initial_master_nodes:
- 10.11.10.61
[B][I]path.repo: ["/home/ubuntu/mounted"][/I][/b]
Cấu hình trên Node2
Mã:
#đặt tên cho cụm của bạn.
cluster.name: my-cluster
#đặt tên cho các nút của bạn (thay đổi số nút từ nút này sang nút khác).
node.name: "es-node-2"
#xác định nút 2 là master-eligible:
node.master: false
#xác định nút 2 và 3 là data nodes:
node.data: true
#nhập IP riêng và cổng của nút của bạn:
network.host: 10.11.10.62
http.port: 9200
#chi tiết IP riêng của các nút của bạn:
discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"
[B][I]path.repo: ["/home/ubuntu/mounted"][/I][/b]
Cấu hình trên Node3
Mã:
#đặt tên cho cụm của bạn.
cluster.name: my-cluster
#đặt tên cho các nút của bạn (thay đổi số nút từ nút này sang nút khác).
node.name: "es-node-3"
#xác định nút 3 là master-eligible:
node.master: false
#xác định nút 2 và 3 là nút dữ liệu:
node.data: true
#nhập IP riêng và cổng của nút của bạn:
network.host: 10.11.10.63
http.port: 9200
#chi tiết IP riêng của các nút của bạn:
discovery.zen.ping.unicast.hosts: ["10.11.10.61","10.11.10.62","10.11.10.63""]
[I][B]path.repo: ["/home/ubuntu/mounted"][/b][/I]
Sau khi bạn đã thiết lập xong tất cả cấu hình này, hãy khởi động tất cả các Nút Elasticsearch, trước tiên hãy khởi động máy chủ chính ban đầu.
Đăng ký Kho lưu trữ để sao lưu
Kiểm tra các kho lưu trữ hiện có bằng lệnh sau.
Mã:
curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'
Để thiết lập kho lưu trữ, hãy thực thi lệnh sau.
Mã:
curl -XPUT 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup' -d {
"type": "fs",
"settings": {
"location": "[I]/home/ubuntu/mounted[/I]",
"compress": true
}
}'
Chúng ta có thể kiểm tra các kho lưu trữ đã đăng ký bằng lệnh sau
Mã:
curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'[URL=http://localhost/_snapshot/_all?pretty=true&utm_source=diendancongnghe.com][/URL][/b]
Sao lưu và khôi phục cụm Elasticsearch
Sao lưu
Sau khi tạo xong kho lưu trữ, chúng ta đã sẵn sàng sao lưu.Sử dụng lệnh sau để sao lưu có tên là "snapshot_name"
Mã:
curl -XPUT "https://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name?wait_for_completion=true"
Khôi phục bản sao lưu
Bản chụp nhanh mà chúng ta đã chụp có thể được khôi phục bằng lệnh sau.Sử dụng lệnh sau để khôi phục bản sao lưu có tên “snapshot_name”
Mã:
curl -XPOST "http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name/_restore?wait_for_completion=true"