A VM is essentially an emulation of a real computer that executes programs like a real computer. VMs run on top of a physical machine using a “hypervisor”. A hypervisor, in turn, runs on either a host machine or on “bare-metal”.
Let’s unpack the jargon:
A hypervisor is a piece of software, firmware, or hardware that VMs run on top of. The hypervisors themselves run on physical computers, referred to as the “host machine”. The host machine provides the VMs with resources, including RAM and CPU. These resources are divided between VMs and can be distributed as you see fit. So if one VM is running a more resource heavy application, you might allocate more resources to that one than the other VMs running on the same host machine.
The VM that is running on the host machine (again, using a hypervisor) is also often called a “guest machine.” This guest machine contains both the application and whatever it needs to run that application (e.g. system binaries and libraries). It also carries an entire virtualized hardware stack of its own, including virtualized network adapters, storage, and CPU — which means it also has its own full-fledged guest operating system. From the inside, the guest machine behaves as its own unit with its own dedicated resources. From the outside, we know that it’s a VM — sharing resources provided by the host machine.
As mentioned above, a guest machine can run on either a hosted hypervisor or a bare-metal hypervisor. There are some important differences between them.
First off, a hosted virtualization hypervisor runs on the operating system of the host machine. For example, a computer running OSX can have a VM (e.g. VirtualBox or VMware Workstation 8) installed on top of that OS. The VM doesn’t have direct access to hardware, so it has to go through the host operating system (in our case, the Mac’s OSX).
The benefit of a hosted hypervisor is that the underlying hardware is less important. The host’s operating system is responsible for the hardware drivers instead of the hypervisor itself, and is therefore considered to have more “hardware compatibility.” On the other hand, this additional layer in between the hardware and the hypervisor creates more resource overhead, which lowers the performance of the VM.
A bare metal hypervisor environment tackles the performance issue by installing on and running from the host machine’s hardware. Because it interfaces directly with the underlying hardware, it doesn’t need a host operating system to run on. In this case, the first thing installed on a host machine’s server as the operating system will be the hypervisor. Unlike the hosted hypervisor, a bare-metal hypervisor has its own device drivers and interacts with each component directly for any I/O, processing, or OS-specific tasks. This results in better performance, scalability, and stability. The tradeoff here is that hardware compatibility is limited because the hypervisor can only have so many device drivers built into it.
Unlike a VM which provides hardware virtualization, a container provides operating-system-level virtualization by abstracting the “user space”. You’ll see what I mean as we unpack the term container.
For all intent and purposes, containers look like a VM. For example, they have private space for processing, can execute commands as root, have a private network interface and IP address, allow custom routes and iptable rules, can mount file systems, and etc.
The one big difference between containers and VMs is that containers *share* the host system’s kernel with other containers.
What is Docker?
Docker is a tool that allows developers, sys-admins etc. to easily deploy their applications in a sandbox (called containers) to run on the host operating system i.e. Linux. The key benefit of Docker is that it allows users to package an application with all of its dependencies into a standardized unit for software development. Unlike virtual machines, containers do not have the high overhead and hence enable more efficient usage of the underlying system and resources.
So why is Docker all of a sudden gaining steam?
1. Ease of use: Docker has made it much easier for anyone — developers, systems admins, architects and others — to take advantage of containers in order to quickly build and test portable applications. It allows anyone to package an application on their laptop, which in turn can run unmodified on any public cloud, private cloud, or even bare metal. The mantra is: “build once, run anywhere.”
2. Speed: Docker containers are very lightweight and fast. Since containers are just sandboxed environments running on the kernel, they take up fewer resources. You can create and run a Docker container in seconds, compared to VMs which might take longer because they have to boot up a full virtual operating system every time.
3. Docker Hub: Docker users also benefit from the increasingly rich ecosystem of Docker Hub, which you can think of as an “app store for Docker images.” Docker Hub has tens of thousands of public images created by the community that are readily available for use. It’s incredibly easy to search for images that meet your needs, ready to pull down and use with little-to-no modification.
4. Modularity and Scalability: Docker makes it easy to break out your application’s functionality into individual containers. For example, you might have your Postgres database running in one container and your Redis server in another while your Node.js app is in another. With Docker, it’s become easier to link these containers together to create your application, making it easy to scale or update components independently in the future.
We at ServerBundle offer ready to use Docker nodes for more info Docker Servers
Just about every business has a digital presence these days. And unless that digital presence consists entirely of Facebook and Twitter, that company almost certainly needs hosting and server support. Small businesses and businesses that are just starting up usually rely on shared hosting. Large companies, or companies that require increased functionality, often rely on dedicated servers. Each option offers advantages and disadvantages, but there is also a third option that bridges the gap between the two and offers a great compromise for businesses that need greater control, but don’t want to incur the costs of a dedicated server.
VPS (virtual private server) hosting offers many of the advantages of a dedicated server. With VPS hosting a business enjoys an isolated environment, dedicated resources, and has server root access. However, because VPS hosting is not a dedicated server, the costs for VPS hosting are lower and the business still benefits from shared benefits like external IT support.
How VPS Hosting Works
With shared hosting, multiple clients all vie for the same set of shared resources on a single server. Thus, if one client has an unusually busy day, this can potentially slow down the server for all clients sharing the server. With VPS hosting, multiple virtual servers are created on a larger dedicated server and every client has sole access to the resources of that virtual server. This means that clients can’t pull server resources from each other.
Furthermore, because each client has a virtual server, the client can safely be given root access to their virtual server, without potentially harming another client’s business. This allows clients to customize freely.
Despite the similarities to a dedicated server, VPS hosting still exists on a shared server. This offers some additional benefits. Instead of a client needing to have a dedicated IT staff for the dedicated server, the host almost always provides IT personnel for the server, which means every client on the server is served by that support staff.
Becoming a VPS Hosting Company
Assuming you have the knowledge to build, configure, and maintain, a server, you still have some major decisions and purchases to make. If you don’t, you also need to hire a professional IT staff.
Either way, before you create your VPS hosting company, you need to make some key decisions.
The exact hardware you choose will depend on whether you run cloud based or conventional hosting (see below). A 1TB, 2.5 GHz dual core processor with 4GB of RAM can be a shared server for roughly 100 websites. Because you are offering VPS hosting, you probably want 8GB of RAM or more (in order to support multiple operating systems running simultaneously) and won’t be able to support as many clients, but you should still be able to build a conventional server that can serve multiple clients for about $1000. A cloud based server will cost more total, but should cost less per machine (maybe $600 to $800).
There are two concerns with billing: Customer costs and automation. Automation is the easy part. You want to automate billing as much as possible, so you can basically ignore it. A solid automated billing system like WHMCS is the best way to do this and requires the least work on your part.
How much you charge the customer is a little more tricky. You need to charge enough that you make a reasonable profit, while also staying competitive in the market. Depending on features offered, VPS hosting companies charge as little as $10/month and as much as $50/month. The average consumer doesn’t need a lots of bells and whistles and is mostly looking at price.
However, before you low ball, you need to make sure you are covering your expenses. Bandwidth will probably cost about $100/month. Electricity and maintenance is variable, but you should probably also budget about $100/month for that. Also, assume a little extra cost for occasional freelance IT support when your own skills don’t suffice. Thus, just to break even on monthly costs, you need to charge your clients combined about $200/month (better to be charging 2-3x that).
Automating the Server
Creating a VPS on a dedicated server is actually quite easy because there are professional programs that will automatically do it for you. Rather than try to partition your server yourself, you should use a program like SolusVM or VMWare from OnApp. These programs partition your server and automate a lot of the functions. It will greatly ease the difficulty of getting started.
Cloud Based vs. Conventional Hosting
One big decision is whether you will use cloud based servers or conventional servers. Conventional servers offer minor advantages in terms of security. Cloud based servers are ever so slightly more vulnerable to intrusion. The difference probably won’t matter, but some clients may care. Additionally, when conventional servers aren’t being taxed by high usage, they are slightly faster than cloud based servers, because of the “talk time” between cloud based servers.
Both of these advantages are minor, though, and the latter advantage actually disappears when a conventional server is at or near its physical limits for memory usage. On the other hand, a cloud based server scales much better and has higher (potentially infinite) memory storage, making it generally the better option.
If you have the hardware and the skills, it is best to support multiple OS options, because it increases your customer base. However, if you don’t, you should probably either support Linux or Windows. The former is a little more efficient, while the latter offers you a much larger customer base.
Managed vs. Unmanaged
For the most part, the reason that businesses choose VPS hosting over a dedicated server is because they don’t possess the technical skill to manage a dedicated server. Unmanaged VPS hosting is nearly identical to a dedicated server. You provide almost no IT support, except as related to physical care of the server and initial setup of the VPS hosting.
If you prefer to work almost exclusively with technically savvy clients, offer only unmanaged support. However, if you want access to a larger customer base, managed VPS hosting is the best option.
Putting It All Together
Once you have purchased the hardware and software, all you need to do is make sure that your company stands out among competitors. This requires a little investment in advertising and offering features that clients want like 24 hour support, excellent backup and redundancy, and variable storage. Do that and you should have a successful VPS hosting company in no time.
We at ServerBundle offer ready to use Virtualization nodes for more info VPS Hosting