Hi DayZRP Server Admins,
As an experienced Devops engineer (Cloud and On-Prem), I have a suggestive approach to modernizing the way we host DayZ servers. Using Docker, Kubernetes and using AWS, Azure or GCP as a scalable cloud solution. I believe at the very least it's worth looking into and researching. This may improve performance and save cost.
Here is why:
Why would we want to run game servers on this platform?
1. Scaling game servers can be a big challenge with proprietary software, with containers and Kubernetes. Software containers and orchestration like Kubernetes should make it much more simplistic with less hard coding.
2. Containers give a single deploy artifact that can be used to run game servers. This removes the need to install dependencies or configure machines during deployment, as well as greatly increases confidence that software will run the same on development and testing as it will in production.
3. The combination of software containers (like docker) and Kubernetes lets us build on top of a solid foundation for running essentially any type of software at scale – from deployment, health checking, log aggregation, scaling and more, with APIs to control these things at almost all levels.
4. At its core, Kubernetes is really just a cluster management solution that works for almost any type of software. Running dedicated games at scale requires us to manage game server processes across a cluster of machines – so we can take advantage of the work already done in this area, and just tailor it to fit our specific need.
5. Should everything be dockerized? No, Relational and Non-Relational Databases for example should not be dockerized due to high amounts of maintenance behind it. If I was using the cloud for example AWS, I'd use Amazon RDS (Relational), DynamoDB (Non-Relational) and Elastic Cache (Redis or Memcache). You can then Peer those connections to your VPC network and talk to EKS (Kubernetes).
What is Docker and Kubernetes?
Docker is a process running on a OS. It is NOT a VM or a VM replacement. It's a headless container that can be scaled and updated by the Docker file or image it is published on. Kubernetes is a orchestration management tool that provides resources to the container. (Example of resources: Persistent volume storage, Load Balancers, Worker Nodes (VM's), IP route tables, Network Gateways, Virtual Gateways, Peering and etc.) There are also different flavors of Kubernetes: PKS (Pivotal), EKS (Amazon ECS), AKS (Azure), GKE (Google) and Minikube (Local machine).
Why Linux over Windows for a server?
There are a lot more engineers out there that can work with Linux OS over Windows. Windows original design is very clunky for running servers. You have to know work arounds for CMD and Powershell Modules. Windows doesn't have true bash/sh/terminal built-in like Linux and Windows runs horrible with Docker. With Linux it's just pure terminal and the utils & packages that come with Linux are arguable more effective and efficient with it's libraries and dependencies built in ready to go. Automation and maintenance will benefit substantially if you make this change. Especially if your goal is to commercialize your servers.
Possible areas to look into:
1. Should we use the cloud or bare metal? If you want to scale up your servers and scale down with automation. The cloud provides more benefit and cost then using bare metal solution. It's worth comparing a cost analysis on what would fit for DayZRP.
2. Spin up a test environment server with the following methods below and research if this is something worth trying:
- Dockerized Dayz (Open Source): https://github.com/icedream/docker-dayzserver
- Using Linux instead of Windows using Wine: https://www.reddit.com/r/dayz/comments/9h6x5u/dayz_server_on_linux/ (Maybe wait until Bohemia provides Linux support for servers? Not sure when that will happen...)
- If Wine isn't do able for Linux on Windows, maybe see if Windows Developer mode enabled will allow you to use Ubuntu? I hear it comes out of the box with Windows 2016 Servers.
I believe the biggest challenge really is just figuring out a work around for getting Linux to host DayZ. Once that is done, we can then start to take the approach in "modernizing" with Docker and Kubernetes. I hope this post gives a little more incite to those currently managing and engineering the DayZRP servers. If we can do this, we might be able to stand out more against other RP servers.