Làm thế nào để kiểm tra giá giao ngay AWS tự động?


15

Tôi đã suy nghĩ về một công việc của Jenkins để kiểm tra giá cho các hộp đại lý mà chúng tôi quay vòng; thường thì giá tăng đột biến và sẽ là một hoặc hai giờ trước khi bất kỳ ai thông báo rằng không có đại lý mới nào xuất hiện, và sau đó chúng tôi phải vào bằng tay và kiểm tra giá giao ngay và điều chỉnh cho phù hợp, hoặc chuyển vùng, v.v.

Bản năng đầu tiên của tôi là con đường tốt nhất là có một công việc hàng giờ của Jenkins chạy aws ec2 describe-spot-instance-requestsvà kiểm tra các yêu cầu thất bại (và sau đó khiến chúng tôi thất bại). Nhưng tôi tự hỏi liệu có một phương pháp sạch hơn bao gồm thực sự so sánh giá cứng (và do đó có thể cho chúng tôi biết chính xác những gì đã giảm, và bao nhiêu), thay vì xem xét các yêu cầu thành công / thất bại.

Bất cứ ai cũng thiết lập một cái gì đó tương tự? Làm thế nào bạn làm điều đó?


1
Câu hỏi hợp lý, tôi đoán ... nhưng tại sao bạn không chỉ trả giá những trường hợp thực sự có giá trị với bạn, chọn nhiều loại trường hợp (bao gồm các trường hợp lớn hơn những gì bạn cần, đôi khi rẻ hơn khi giá tại chỗ nhỏ hơn tăng ... thỉnh thoảng - bao gồm cả ngay khi tôi viết bài này - tôi thấy mình có cc2.8xlarge, bởi vì nó hiện rẻ hơn so với c3.2xlarge tôi cần, mặc dù có gấp 4 lần lõi và gấp 4 lần bộ nhớ) và để hệ thống xử lý lựa chọn loại và vị trí AZ dựa trên thị trường?
Michael - sqlbot

1
@ Michael-sqlbot Tôi không nói trong phần đó của quy trình; chúng tôi có tài liệu nói rằng chúng tôi mua một kích thước cá thể nhất định cho mục đích kiểm toán và vì vậy đó là những gì chúng tôi đang mắc kẹt. Chỉ cố gắng tận dụng tối đa một tình huống khó tin.
Alex

1
Đủ công bằng, @Alex. Chỉ cần nghĩ rằng tôi sẽ ném nó vào, trong trường hợp bạn đã không xem xét nó.
Michael - sqlbot

@Alex Không quan tâm, là kích thước cá thể nhất định để có thể dễ dàng nhìn thấy trên hóa đơn? Bởi vì bạn (đúng hơn là họ!) Có thể sử dụng các thẻ và sau đó nhìn thấy chúng trong Cost Explorer.
Tim Malone

Câu trả lời:


15

Phát hiện ra một công cụ nguồn mở được gọi là tự động tìm kiếm có thể giúp với điều này:

Sau khi được bật trên nhóm AutoScaling theo yêu cầu hiện có, nó sẽ khởi chạy một thể hiện tại chỗ EC2 rẻ hơn, ít nhất là lớn và được định cấu hình giống hệt với các phiên bản theo yêu cầu hiện tại của bạn. Ngay khi cá thể mới sẵn sàng, nó được thêm vào nhóm và một cá thể theo yêu cầu được tách ra khỏi nhóm và chấm dứt.

Chúng tôi có điều này trong đường ống việc cần làm của chúng tôi, sẽ có thể thêm nhiều bối cảnh sau khi chúng tôi hoàn thành việc đó.

Cập nhật:

Một công cụ khác gần đây đã được demo trong một cuộc hội thảo là mapbox / spotswap

Điều này hoạt động hơi khác nhau. Nó giám sát một ASG bình thường với các trường hợp Theo yêu cầu hoặc Dự trữ và sau đó, nếu phát sinh quy mô, giá thầu và quy định phát hiện các trường hợp có mức tính toán tương tự trên một ASG riêng biệt.


2
Chào mừng đến với trang web, Hashfyre :)
Dawny33

1
Tôi là tác giả của Tự động phát hiện, cảm ơn vì đã đề cập đến nó! Bạn đã thử chưa? Tôi là tất cả tai cho phản hồi của người dùng.
Cristian Măgherușan-Stanciu

6

Cá nhân tôi sẽ xem xét một mô hình như thế này:

Timed Lambdas -> Checks spot price -> Push to ElastiCache

Sau đó, khi bạn cần phiên bản:

Timed lambdas -> Pulls spot price from ElastiCache, sets it as environment variable on your Machine where you spin up IaC from -> This is parsed as argument to IaC code and pushes out the spot price

Bạn cũng có thể thiết lập một số dung sai trong phạm vi lambdas (ví dụ tăng 10, 25, 50% dựa trên mức độ quan trọng) và ví dụ như giới hạn cứng theo yêu cầu. Đây cũng là một nơi tuyệt vời để xây dựng logic để xử lý, ví dụ: tìm AZ rẻ nhất, tìm giá giao ngay tương đối rẻ nhất ( 2xt2.mediumso với t2.large), v.v.


Chỉ cần thông tin, bạn có thể đã chỉnh sửa câu trả lời đã xóa và gắn cờ nó để yêu cầu hủy bỏ. (Không có hại gì, nó chỉ mang tính thông tin :))
Tensibai

1
Tôi sẽ để lại sự xấu hổ của mình để kiên trì nhắc nhở tôi về những ngày lầm lạc của tôi mãi mãi.
Henry

Rofl, thực sự không có gì xấu hổ, đừng lo lắng :)
Tensibai

3
SCARS CỦA TÔI XÁC ĐỊNH TÔI LÀ TÔI
Henry

Ý tưởng tuyệt vời - cũng có thể đáng nói đến là người ta có thể đẩy giá lên bảng DynamoDB, trong trường hợp họ chưa có cụm ElastiCache nằm xung quanh;). Hoặc thậm chí có thể là một tệp JSON trong một thùng S3.
Tim Malone

4

Hãy để tôi cung cấp cho bạn một cách bất khả thi về công cụ để cố gắng làm điều này.

thường thì giá tăng đột biến và sẽ là một hoặc hai giờ trước khi bất kỳ ai thông báo rằng không có đại lý mới nào xuất hiện, và sau đó chúng tôi phải vào bằng tay và kiểm tra giá giao ngay và điều chỉnh cho phù hợp, hoặc chuyển vùng, v.v.

Chúng tôi đã đối mặt với cùng một vấn đề trong cơ sở hạ tầng mà chúng tôi đang xây dựng. Vì vậy, chúng tôi đã có if-elsecác khối kiểu để đặt giá thầu, tùy thuộc vào giá theo yêu cầu của cá thể.

AWS có một API để lấy giá theo yêu cầu của một thể hiện. Chúng tôi đã sử dụng trình bao bọc Python này cho mục đích này.

Vì vậy, một khi chúng tôi đã nhận giá theo yêu cầu (giả sử X), chúng tôi cắm vào if-elsekhối phong cách, được 0.4*X, 0.6*X, 0.8*X, X, mà có nghĩa là chúng tôi đang cố gắng cho một giá dự thầu trong phạm vi 40%, 60%, 80% trên -demand giá. Nếu tất cả đều thất bại, thì chúng ta sẽ quay trở lại để tạo các trường hợp theo yêu cầu.

Ngoài ra, vì điều này độc lập với giá giao ngay hiện tại của AWS, chúng tôi không bao giờ trả giá cao hơn giá theo yêu cầu.

Nhưng, nếu bạn đang tìm cách để thực hiện nó một cách nhanh chóng, thì giải pháp của Hashfyre sẽ là cách tốt nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.