The demand for computing resources such as CPU cycles, primary and secondary storage,and network bandwidth depend heavily on the volume of data processed by an application.
The demand for resources can be a function of the time of the day, can monotonically increase or decrease in time, or can experience predictable, or unpredictable peaks.
For example, a new web service will experience a low request rate at the very beginning and the load will exponentially increase if the service is successful. A service for income tax processing will experience a peak around the tax filling deadline, while access to a service provided by FEMA (Federal Emergency Management Agency) will increase dramatically after a natural disaster.
The elasticity of a public cloud, the fact that it can supply to an application precisely
the amount of resources it needs and that one pays only for the resources it consumes are serious incentives to migrate to a public cloud. The question we address is how scaling can be actually implemented in a cloud when a very large number of applications exhibit this often unpredictable behavior [62, 233, 355]. To make matter worse, in addition to an unpredictable external load the cloud resource management has to deal resource reallocation due to server failures.
We distinguish two scaling modes, vertical and horizontal. Vertical scaling keeps the
number of VMs of an application constant, but increases the amount of resources allocated to each one of them. This can be done either by migrating the VMs to more powerful servers, or by keeping the VMs on the same servers, but increasing their share of the CPUtime. The first alternative involves additional overhead; the VM is stopped, a snapshot of it is taken, the file is transported to a more powerful server, and, finally, the VM is restated at the new site.
Horizontal scaling is the most common mode of scaling on a cloud; it is done by increasing the number of VMs as the load increases and reducing this number when the load decreases.
Often, this leads to an increase of communication bandwidth consumed by the application.
Load balancing among the running VMs is critical for this mode of operation. For a very large application multiple load balancers may need to cooperate with one another. In some 217 instances the load balancing is done by a frontend server which distributes incoming requests of a transaction-oriented system to backend servers.
An application should de designed to support scaling. As we have seen in Section 4.6
in case of a modularly divisible application the workload partitioning is static, it is decided apriori and cannot be changed thus, the only alternative is vertical scaling. In case of an arbitrarily divisible application the workload can be partitioned dynamically; as the load increases, the system can allocate additional VMs to process the additional workload. Most cloud application belong to this class and this justifies our statement that horizontal scaling is the most common scaling mode. In this case
Mapping a computation means to assign suitable physical servers to the application. A very important first step in application processing is to identify the type of application and map it accordingly. For example, a communication-intensive application should be mapped to a powerful server to minimize the network traffic. This may increase the cost per unit of CPU usage, but it will decrease the computing time and, probably, reduce the overall cost for the user; at the same time, it will reduce the network traffic, a highly desirable effect from the perspective of the cloud service provider. To scale up and down a compute-intensive application a good strategy is to increase/decrease the number of VMs or instances; as the load is relatively stable, the overhead of starting up or terminating an instances does not
increase significantly the computing time or the cost.
Several strategies to support scaling exist. Automatic VM scaling uses pre-defined metrics, e.g., CPU utilization to make scaling decisions. Automatic scaling requires sensors to monitor the state of VMs and servers; controllers make decisions based on the information about the state of the cloud, often using a state machine model for decision making. Amazon and Rightscale (http://www.rightscale.com) offer automatic scaling. In case of AWS the CloudWatch service supports applications monitoring and allows a user to set up conditions for automatic migrations.
Non-scalable or single load balancers are also used for horizontal scaling. The Elastic Load Balancing service from Amazon automatically distributes incoming application traffic across multiple EC2 instances. Another service, the Elastic Beanstalk allows dynamic scaling between a low and a high number of instances specified by the user, see Section 3.1. The cloud user usually has to pay for the more sophisticated scaling services such as Elastic Beanstalk
Nhu cầu cho các tài nguyên máy tính như CPU chu kỳ, tiểu học và trung học lưu trữ và băng thông mạng phụ thuộc rất nhiều vào khối lượng dữ liệu xử lý bởi một ứng dụng. Nhu cầu về nguồn lực có thể là một chức năng của thời gian trong ngày, có thể monotonically tăng hoặc giảm trong thời gian, hoặc có thể trải nghiệm đỉnh núi dự đoán được, hoặc không thể đoán trước. Ví dụ, một dịch vụ web mới sẽ kinh nghiệm một tỷ lệ thấp yêu cầu tại rất mới bắt đầu và tải theo cấp số nhân sẽ tăng nếu dịch vụ thành công. Một dịch vụ cho xử lý thuế thu nhập sẽ kinh nghiệm một đỉnh cao xung quanh thành phố hạn chót điền thuế, trong khi truy cập vào một dịch vụ cung cấp bởi FEMA (liên bang Emergency Management Agency) sẽ tăng lên đáng kể sau một thảm họa tự nhiên.Tính đàn hồi của một đám mây công cộng, thực tế là nó có thể cung cấp cho một ứng dụng chính xácsố lượng tài nguyên cần thiết và một trả tiền chỉ để các nguồn lực nó tiêu thụ là nghiêm trọng ưu đãi để di chuyển sang một đám mây công cộng. Các câu hỏi chúng tôi địa chỉ là cách rộng có thể được thực sự thực hiện trong một đám mây khi rất nhiều các ứng dụng triển lãm hành vi này thường không thể đoán trước [62, 233, 355]. Để làm cho vấn đề tồi tệ hơn, ngoài một không thể đoán trước bên ngoài tải đám mây quản lý tài nguyên đã để đối phó tài nguyên reallocation do máy chủ thất bại.Chúng tôi phân biệt hai chế độ rộng, dọc và ngang. Dọc rộng giữ cácsố lượng máy ảo của một hằng số ứng dụng, nhưng tăng số lượng tài nguyên được cấp phát cho mỗi một trong số họ. Điều này có thể được thực hiện bằng cách di chuyển các máy ảo để mạnh hơn máy chủ hoặc bằng cách giữ các máy ảo trên máy chủ cùng một, nhưng ngày càng tăng của chia sẻ của CPUtime. Việc thay thế đầu tiên liên quan đến chi phí bổ sung; máy ảo dừng lại, một bản chụp của nó được lấy, các tập tin được vận chuyển đến một máy chủ mạnh hơn, và, cuối cùng, máy ảo restated tại trang web mới.Ngang rộng là phổ biến nhất chế độ rộng trên một đám mây; nó được thực hiện bằng cách tăng số lượng máy ảo khi tải tăng và giảm số này khi tải làm giảm.Thông thường, điều này dẫn đến sự gia tăng của truyền thông băng thông tiêu thụ bởi các ứng dụng.Cân bằng giữa các máy ảo chạy tải là rất quan trọng cho chế độ này hoạt động. Cho một ứng dụng rất lớn nhiều tải balancers có thể cần phải hợp tác với nhau. Trong một số trường hợp 217 cân bằng tải được thực hiện bởi một máy chủ lối vào đó phân phối đến yêu cầu của một hệ thống giao dịch theo định hướng tới máy chủ phụ trợ.Một ứng dụng nên de được thiết kế để hỗ trợ mở rộng quy mô. Như chúng ta đã thấy trong phần 4.6in case of a modularly divisible application the workload partitioning is static, it is decided apriori and cannot be changed thus, the only alternative is vertical scaling. In case of an arbitrarily divisible application the workload can be partitioned dynamically; as the load increases, the system can allocate additional VMs to process the additional workload. Most cloud application belong to this class and this justifies our statement that horizontal scaling is the most common scaling mode. In this caseMapping a computation means to assign suitable physical servers to the application. A very important first step in application processing is to identify the type of application and map it accordingly. For example, a communication-intensive application should be mapped to a powerful server to minimize the network traffic. This may increase the cost per unit of CPU usage, but it will decrease the computing time and, probably, reduce the overall cost for the user; at the same time, it will reduce the network traffic, a highly desirable effect from the perspective of the cloud service provider. To scale up and down a compute-intensive application a good strategy is to increase/decrease the number of VMs or instances; as the load is relatively stable, the overhead of starting up or terminating an instances does notincrease significantly the computing time or the cost.Several strategies to support scaling exist. Automatic VM scaling uses pre-defined metrics, e.g., CPU utilization to make scaling decisions. Automatic scaling requires sensors to monitor the state of VMs and servers; controllers make decisions based on the information about the state of the cloud, often using a state machine model for decision making. Amazon and Rightscale (http://www.rightscale.com) offer automatic scaling. In case of AWS the CloudWatch service supports applications monitoring and allows a user to set up conditions for automatic migrations.Non-scalable or single load balancers are also used for horizontal scaling. The Elastic Load Balancing service from Amazon automatically distributes incoming application traffic across multiple EC2 instances. Another service, the Elastic Beanstalk allows dynamic scaling between a low and a high number of instances specified by the user, see Section 3.1. The cloud user usually has to pay for the more sophisticated scaling services such as Elastic Beanstalk
đang được dịch, vui lòng đợi..