In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-03-29 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >
Share
Shulou(Shulou.com)06/01 Report--
What this article shares with you is about how to analyze and compare open source IaaS cloud platforms. The editor thinks it is very practical, so I share it with you to learn. I hope you can get something after reading this article.
As an important form of cloud computing, IaaS services have a variety of open source and commercial cloud platform solutions. From the point of view of using open source IaaS cloud platform to develop public cloud and private cloud management platform, this paper introduces and compares open source IaaS cloud platforms such as Eucalyptus, OpenNebula, CloudStack and OpenStack.
On the characteristics of successful Cloud platform from AWS
AWS is the most successful cloud computing platform at present, and its system architecture is characterized by opening data and functions through Web Service interfaces, taking services as the * bit, and making the system loose coupling through the architecture of SOA.
The Web Service stack provided by AWS consists of access layer (API, management console and various command lines, etc.), general service layer (authentication, monitoring, deployment and automation, etc.), PaaS layer services (parallel processing, content transmission and message services, etc.), IaaS layer services (computing EC2, storage S3/EBS, network service VPC/ELB, and database services). User applications use IaaS basic IT funding sources, PaaS and common services as components in the application architecture to build their own services. Generally speaking, the core ideas of system architecture in AWS ecological environment are SOA, layering and service composition.
Demand for private cloud
In addition to public cloud platforms like AWS, private and hybrid clouds are also important forms of IaaS. Enterprises usually have the following requirements for private cloud platforms.
A variety of options for computing virtual technology (KVM, XEN, ESX, ESXi, Hyper-V and XenServer, etc.).
Diverse support for storage technologies / devices (switches, routers, firewalls, etc.).
Multiple support for network technologies / devices (NAS, IP-SAN, FC-SAN, etc.).
A variety of API support.
The first three requirements require that the IaaS platform can shield the differences of the underlying specific technologies / devices and present basically the same capabilities and interfaces. This is generally achieved by the design of an abstract framework plus plug-ins. In addition, due to the independent system of computing virtualization, network and storage technologies, computing virtualization, network and storage should be considered as three independent subsystems or services in the whole architecture design.
Therefore, the cloud platform should include at least three layers: the API or access layer provides different API or access methods, the core virtualization management layer integrates the underlying services to provide IaaS services, and the computing / storage / network service layer shields technical differences.
Technical team development requirements
Small technical teams are elite and everyone can participate in the overall design. The large team is a pyramid structure, only a few people can participate in the overall design, and most people can only have access to a single function or module because of their abilities and responsibilities.
In order to meet the requirements of these two kinds of teams, the overall software architecture of the cloud platform must be loosely coupled to form the whole system by combining components, modules and services; at the same time, components, modules and service functions need to be cohesive to facilitate independent maintenance by small teams. facilitate independent design, development and evolution.
In addition, cloud platforms need to consider providing basic shared components for reuse in various services. Typical reusable components are database ORM, message communication, server infrastructure, configuration management system, log system, error location system and so on. Many large teams will integrate these basic shared services and automatically generate the basic framework code through the domain description language, so that developers can focus on specific service implementation and key technology research.
Introduction and comparison of Cloud platform
Below from the system architecture to be layered, component-based, using SOA to achieve system loose coupling; component services using framework plug-in design; development platform and other aspects to compare the four open source IaaS cloud platforms.
Eucalyptus
Eucalyptus is the first open source IaaS cloud platform to try to clone AWS, and the overall architecture is shown in the left half of figure 1. Eucalyptus consists of cloud controller (CLC), Walrus, cluster controller (CC), storage controller (SC) and node controller (NC), which work together to provide the required cloud services. Components communicate with each other using SOAP messages that support WS-Security. Eucalyptus provides AWS-compatible SOAP and Query interfaces, but does not provide other API.
Figure 1 Eucalyptus system architecture and CLC logical architecture
From a hierarchical perspective, Eucalyptus lacks API layer design, CLC is the global resource management layer, and cluster services (CC and SC) are the underlying resource management layer. The three-tier structure of CLC, CC and NC is not a layer at the software architecture level, but can only be regarded as an engineering method for managing large-scale clusters.
From the perspective of component services, computing and storage services are designed as independent services in each cluster, and the network is still part of the computing services. Although the Eucalyptus code implementation is to separate the part of the network, but the overall design is not designed according to independent services, the overall design decoupling is not enough.
CLC is the core of Eucalyptus, including virtual machine control, storage volume management, network resource (Address) management, mirror management, snapshot management, Keypair management and metadata management and other service modules. Open source ESB Mule orchestrates all services to provide EC2 and EBS services externally through Eucalyptus services, as shown in the right half of figure 1. From this, we can see that Eucalyptus does a better job at the SOA level. However, the threshold of ESB technology is high, and it has high requirements for designers and developers. At the same time, because Eucalyptus supports plug-ins in very few places (such as plug-ins supported by multiple Hypervisor), not much has been done to abstract frameworks and plug-in designs as a whole.
From the point of view of the development platform, the main development languages of Eucalyptus are Java and Cten CLC, which uses open source ESB Mule as the core choreography service, and the architecture is relatively novel; but CC and NC adopt the software architecture of Apache + CGI and implement Web Service based on Axis/C. Overall, Eucalyptus has not yet developed a platform trend.
OpenNebula
OpenNebula is part of the Reservoir project and is an open source implementation of the virtualization management of the virtual infrastructure and cloud computing project launched by the European Research Institute in 2005. The core part of OpenNebula is Front End, or ONE. Its architecture is shown in figure 2.
OpenNebula is obviously divided into three layers, namely, the interface layer, the core layer and the driver layer. The interface layer provides a native XML-RPC interface and implements a variety of API, such as EC2, OCCI and OpenNebula Cloud API (OCA), providing users with a variety of choices.
OpenNebula core in the core layer provides core functions such as unified Hook plug-in management, Request request management, VM lifecycle management, Hypervisor management, network resource management and storage resource management. Core cooperates with Scheduler to provide computing and storage network resource management services.
The * layer is a driver layer composed of various Driver that interacts with virtualization software (KVM, XEN) and physical infrastructure. It should be noted that the driver layer in figure 2 does not draw multiple drivers such as DataStore, NetworkManager, and so on. Some front-end modules such as monitoring and user interfaces (Sunstone Portal and Self Service Portal) are also not shown in figure 2. Obviously, OpenNebula does a good job of layering and framework plus plug-in design.
Figure 2 OpenNebula system architecture
In OpenNebula, computing, storage and network are independent modules in ONE. Resource scheduling is also separated to support a variety of optional policies and resource quota management through requirement and matcher, as well as scheduling engine Haizer to provide advanced resource scheduling capabilities of lease (lease).
Obviously, OpenNebula does not adopt the design of SOA, does not design computing, storage, and network as independent components, and does not decouple enough. It is worth noting that OpenNebula remotely invokes the virtualization control commands on the compute node using the interface provided by Libvirt. The design of this kind of Agentless will reduce a lot of software installation and configuration work during the system installation and deployment phase, which is a bright spot.
From the perspective of the development platform, OpenNebula uses C++ to achieve the core ONE, using a variety of Driver developed by Ruby to achieve specific functions. The whole system has only one core component, so little is done on the development platform.
CloudStack
CloudStack is an open source IaaS software developed by Cloud.com, which is acquired by Citrix and contributed to the Apache Foundation. It already provides IaaS platform technology for a number of public clouds around the world, such as BT, NTT and KT.
The left half of figure 3 shows the overall architecture of CloudStack, which includes Dashboard/CLI layer, CLoudStack API layer, core engine layer, and compute / network / storage controller layer, which is a typical hierarchical architecture. Specifically, CloudStack provides native custom API and also supports AWS-compatible API through cloud bridge.
Figure 3 CloudStack system architecture and Management Server architecture
Like OpenNebula, CloudStack itself does not adopt the design of SOA, nor does it separate the computing / storage / networking part from the core engine, so it needs to be further strengthened in terms of loose coupling and component design.
From a development platform point of view, ClousStack uses Java to develop parts such as API, Management Server, and Agent, and the runtime is deployed as Serverlet for Tomcat. In addition, Python is heavily used to develop parts related to network and system management. It is worth noting that the CloudStack code includes a set of independent Java code base, covering communication, data management, event management, task management and plug-in management and other parts, basically forming a development platform.
OpenStack
OpenStack is a newcomer to the open source IaaS cloud platform, with a community and ecological environment for only 2 years, attracting a large number of companies and developers to develop cloud computing around it. Figure 4 shows the logical architecture of the Essex released by *.
Figure 4 OpenStack Essex logical architecture
The overall structure of OpenStack is divided into three layers, the top layer is the application and management Portal (Horizon), API and other access layers; the core layer includes computing services (Nova), storage services (including object storage services Swift and block storage services cinder) and network services (Quantum); the third layer is sharing services, now account rights management services (keystone) and mirroring services (Glance). Quantum and cinder are OpenStack incubation projects added to the core services.
In Essex and previous versions, storage EBS (Elastic Block Service, elastic block storage service) and Nova-Volume were coupled, and network services were also bound to Nova-Network. In the version of Folsom under development, EBS and Network are new services (cinder and Quantum) separately from Nova. Nova invokes new cinder and Quantum services through API. As we can see, OpenStack is very good at decoupling SOA from serviced components.
Nova consists of API Server (including CloudController), Nova-Scheduler, Nova-Compute, Nova-Volume and Nova- Network. All components communicate through RabbitMQ and use a database to store data. At the same time, a large number of frameworks and plug-ins are used in Nova, such as Scheduler supports plug-ins to develop new scheduling algorithms, Compute supports the use of different Hypervisor,Network and Volume through plug-ins, and also supports technologies and devices from different manufacturers through plug-ins. Services such as cinder and Quantum also adopt an overall architecture and plug-in design similar to Nova.
From a development platform point of view, OpenStack is also doing a good job. First of all, all OpenStack services are developed using Python; secondly, all services adopt similar software architecture and internal implementation technologies, such as server programs using WSGI, data library ORM using SQLAlchemy, configuration file parsing and logging using the same components. There is a good development platform based on OpenStack, and we see that developers can easily participate in the development of multiple components.
Comprehensive comparison
The previous introduction of each IaaS open source cloud platform in layering, SOA, componentization, decoupling and development platform and other aspects.
As can be seen from the comparison in Table 1, all open source IaaS cloud platforms do well in layering; OpenStack and Eucalyptus have advantages in terms of SOA/ componentization / decoupling; and in framework and plug-in design, except for poor Eucalyptus, other platforms have good designs-OpenStack's development platform is the second best. Taken together, the current design of OpenStack is * *, followed by Eucalyptus and CloudStack.
Table 1 comparison of IaaS open source cloud platforms
Comparison of actual demand design
Let's look at the performance of the four open source IaaS platforms in terms of development support in terms of a real requirement. This requirement comes from private cloud scenarios. Cloud platforms need to prioritize and process resource requests from different users (such as VM and public network IP), and provide task management features, such as counting the number of tasks in each status.
There are two key points in the design of requirements: one is how to schedule and manage tasks uniformly, and the other is the collection of task state transition information.
The unified scheduling and management schemes of tasks are as follows: both OpenNebula and OpenStack provide independent Scheduler components and support the plug-in system of extended Scheduler; CloudStack has Job Manager but does not provide extension, so it is necessary to modify the core code of Job Manager; the internal flow of Eucalyptus is mainly driven by Mule bus, and the core process code needs to be modified to add a new module. In comparison, the implementation of OpenStack and OpenNebula has the least impact on the existing system.
For the task status transition information, because the information is distributed in many parts of the system, the design of * * is to change the status of the message to the module responsible for task management / statistics. At this point, OpenStack with Message Bus and Eucalyptus with Mule have obvious advantages. Generally speaking, OpenStack provides good support for secondary development.
In addition to technology
The above comparison is mainly in the design, OpenStack has significant advantages. But in other ways:
Due to its earliest appearance and the signing of relevant API compatibility agreements with AWS, Eucalyptus is in a leading position in the private cloud market for the AWS ecosystem.
After the deployment of a large number of commercial customers' public cloud, the function of CloudStack has become stable and mature. after becoming an open source project of Apache, its loosely coupled design has been put on the agenda, and there is a tendency to catch up in design.
The current situation of OpenStack is that the function is not complete and the commercial support is not enough, and whether it can maintain the current development trend after it is transferred to the operation of the foundation is also a great concern. In the actual cloud platform selection process, we should comprehensively consider the function and system architecture and design, future development and so on from their own point of view.
The above is how to analyze and compare the open source IaaS cloud platform. The editor believes that there are some knowledge points that we may see or use in our daily work. I hope you can learn more from this article. For more details, please follow the industry information channel.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.