Lời nói đầu:
- Chào các bạn, mình là Duy Nam – Thành viên Group 1 VTI Japan. Hôm nay mình xin tiếp tục seri về Amazon Elasticsearch Service Best Practice.
Bài viết của mình chia ra làm 4 chương chính:
Chương 1: Kiến trúc tổng quan của Amazon ES
- Kiến trúc tổng quan của Amazon ES
- Giới thiệu vai trò của Master Node, Data Node, Shard
- Lưu ý khi đặt Amazon ES vào trong VPC
Chương 2: Sizing Amazon ES
- Tính toán dữ liệu đưa vào Amazon ES
- Tính toán số Shard cần thiết cho Amazon ES
- Lựa chọn instance type phù hợp cho Master Node và Data Node
Chương 3: Backup và Monitoring ES
- Giới thiệu vai trò của Automated Backup và Manual Backup
- Restore Data của Amazon ES, Migration Data từ Elasticseach on EC2
- Giới thiệu các Metric cần theo dõi của Amazon ES
Chương 4: Một vài chia sẻ từ kinh nghiệm thực tế
- Giới thiệu về Index, Document, Type
- Một vài những câu query cơ bản của Elasticseach
- Một vài option khác gặp trong thực tế
Chương 3: Backup và Monitoring ES
3.1 Những Action của ES khi có sự thay đổi
- Amazon ES sẽ được tiến hành deploy Blue/Green khi tiến hành thay đổi liên quan đến Domain.
- Cụ thể như việc thay đổi instance type, vô hiệu hay bật multi az, update version … Trường hợp đổi policy thì sẽ không tiến hành deploy Blue/Green mà update trực tiếp trong ES
- Khi Deploy Blue/Green số lượng Node sẽ được tăng lên và sẽ làm tăng tải của Master Node cho nên việc Update thay đổi lớn của ES nên tiến hành vào giờ đêm khi có tải thấp
- Mình có một Ví dụ như hình dưới đây:
3.2 Các hạng mục monitoring của Amazon ES
- Trong Amazon ES có khoảng 70 Metric được đưa ra để tiến hành Monitoring
- Việc phân tích từng Metric khá vất vả và mất thời gian, bản thân mình cũng không nắm hết được 70 metric đó
- Tuy nhiên có một vài Metric các bạn cần phải lấy khi Monitoring ES, mình có chú thích dưới đây:
Metric và Alert | Giải thích |
---|---|
CPUUtilization maximum is >= 80% for 15 minutes, 3 consecutive times |
Có nguy cơ không đủ CPU của DataNode -> Xem xét việc tăng instance type hoặc scale out |
JVMMemoryPressure maximum is >= 80% for 5 minutes, 3 consecutive times |
Có nguy cơ không đủ Memory của DataNode -> Xem xét việc tăng instance type hoặc scale out |
ClusterStatus.yellowmaximum is >= 1 for 1 minute, 1 consecutive time |
Có trên 1 ReplicaShard đang không được phân bổ vào Node -> Cần confirm lại trạng thái của Cluster |
FreeStorageSpace minimum is <= XXX for 1 minute, 1 consecutive time |
Dung lượng lưu trữ không đủ. XXX: 25% dung lượng của các Data Node. Đơn vị MB |
MasterCPUUtilization maximum is >= 50% for 15 minutes, 3 consecutive times |
Có nguy cơ không đủ resource của MasterNode -> Xem xét việc tăng instance type |
MasterJVMMemoryPressure maximum is >= 80% for 15 minutes, 1 consecutive time |
Có nguy cơ không đủ resource của MasterNode -> Xem xét việc tăng instance type |
- Các Metric khác các ban có thể tham khảo tại: https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html
3.3 Backup Amazon ES (Snapshot)
- Snapshot chính là backup của ES cluster
- Tại Amazon ES có 2 loại snapshot như bảng dưới
Loại Snapshot | Mục đích | Giải thích |
---|---|---|
Automated snapshots | •Backup | •Từ sau bản ES 5.3 sẽ lấy 1h một lần và lưu trữ trong 14 ngày( Trước ES 5.1 sẽ là 1 ngày 1 lần) •Sẽ không tốn thêm bất kì chi phí nào trên AWS |
Manual snapshot | •Backup •Migration Data |
•Sử dụng API của ES để tạo snapshot lên S3 một cách chủ động •Tốn chi phí lưu trữ S3 |
- Về cơ bản automation snapshot là đủ. Tuy nhiên việc di chuyển data sang một Amazon ES khác cần thiết phải lấy manual snapshot
3.4 Migration Elasticsearch on EC2 to Amazon ES
- Trường hợp các bạn tiến hành Migration ES từ EC2 hoặc On-premise sang Amazon ES, các bạn sẽ tiến hành theo các bước dưới đây:
- Sử dụng _snapshot/repos API tạo và đăng ký snapshot repository của ES trên EC2 lên trên S3
- Tạo Domain mới cho Amazon ES, đăng ký snapshot repository lên trên cùng S3
- Tại Amazon ES tiến hành phục hồi dữ liệu dựa trên _restore API
- Tham khảo thêm: https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains-snapshots.html
Lời Kết 3
- Sau 3 bài viết mình đã có cơ hội giới thiệu về Best Practice của Amazon Elasticseach. Hi vọng qua 3 bài viết này các bạn có thêm kiến thức để tạo ra một Server Elasticseach có chi phí rẻ nhất mà hiệu quả cao nhất.
- Ở bài sau mình sẽ chia sẻ thêm một vài các Query cơ bản của ES.
- Mong các bạn ủng hộ seri này của mình
Leave a Reply