Technologies
Various technologies are utilized in my home lab environment, and more technologies are planned to be used in the future.
Operating Systems
Operating systems (OS) are the software that make a computer usable, and some examples are Windows and the various distributions of Linux. In my homelab, most of the machines run some distribution of Linux. Proxmox is used on my servers, and Proxmox claims to be based on Debian, a Linux distribution. For virtual machines, I primarily use Debian when possible, but I have tried other distributions like Arch and Fedora. For my Raspberry Pi computers, Ubuntu is used due to its convenience. The one outlier for my usage of Linux-based operating systems is my firewall, which uses the FreeBSD-based pfSense.
Virtualization
Virtualization is a huge component of working with servers, as it allows for one computer to run multiple operating systems, essentially multiple computers, on one physical machine. Virtual machines make up one of the main forms of virtualization, which are entire other guest computers run on a host computer via emulated hardware. Containers are another form of virtualization, and they work by having an environment like an OS that utilizes the host OS to make containers significantly less resource-intensive than virtual machines.
For my virtual machine needs, I use Proxmox as my hypervisor. Hypervisors are the software that enable the creation, management, and usage of virtual machines. Proxmox is rich in useful features, such as LXC container management, virtual machine management, storage pool creation, and clustering, which is why I have felt no need to try other hypervisors.
For containerization, I use Docker because it is popular and has a large number of containers to choose from on Docker Hub. Docker is interacted with exclusively by the command line, so I use a Portainer container run on Docker to give my Docker setup a pleasant graphical user interface (GUI).
Clusters
At the moment, two different clustering technologies are used in my homelab, Proxmox clustering and Docker Swarm. Clustering computers means multiple machines can interact and share resources or information to work together.
For Proxmox, clustering allows both of my servers to communicate, which includes several nice features. This is mainly a convenience, as the primary benefits is being able to control both servers with one login rather than having to log in to both machines individually. However, it also allows for virtual machines to be migrated from one machine to another with ease, which allows for better resource management. Docker Swarm acts similarly to a Proxmox cluster in the manner that it distributes containers across the cluster to use the available resources.
I am also looking into setting up Kubernetes and Hadoop clusters. With Kubernetes, I am hoping to learn a different container orchestration platform and the technologies that come with it. Hadoop is a technology I have been interested in since my Distributed Systems course, and I hope to gain more practice with this technology.