mirror of
https://github.com/alexohneander/alexohneander-astro.git
synced 2025-06-29 15:01:52 +00:00
Compare commits
51 Commits
Author | SHA1 | Date | |
---|---|---|---|
72739701a8 | |||
8bc8c9550c | |||
![]() |
7024d50fca | ||
![]() |
c6859cb651 | ||
9729792cfd | |||
696c5c1e05 | |||
![]() |
ddea171ea2 | ||
![]() |
fde0158330 | ||
3136a4b455 | |||
7390d7aa36 | |||
8709e60483 | |||
72e69364c0 | |||
54ab42c7b5 | |||
![]() |
c537a95b72 | ||
af9dfe9e6b | |||
![]() |
e3fef30bcd | ||
a4765a8ca7 | |||
15040820be | |||
![]() |
b40b5b9283 | ||
![]() |
4788fe2cb6 | ||
6fbb03a7ed | |||
a1e390287d | |||
351eff1e15 | |||
![]() |
3114fca069 | ||
b14b975ef6 | |||
87fbaff137 | |||
![]() |
ecf293c153 | ||
d7566f1472 | |||
7c08062e35 | |||
0aa7005de9 | |||
![]() |
e536f05258 | ||
48346c9c6f | |||
![]() |
2e28aa45bb | ||
![]() |
3516342fea | ||
![]() |
98beb48e6d | ||
![]() |
555d0a011e | ||
![]() |
157cc7780a | ||
974236e5a4 | |||
![]() |
c141f27773 | ||
![]() |
30f08c832c | ||
3ff0c470a6 | |||
18ef7639f6 | |||
864ce4bb42 | |||
dd8a19de73 | |||
8e72b765f7 | |||
c9c18dad91 | |||
![]() |
688230661f | ||
![]() |
05de27abe9 | ||
![]() |
1209346a71 | ||
![]() |
3db6264f66 | ||
4c08105626 |
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
@ -2,7 +2,7 @@ image:
|
||||
repository: alexohneander/alexohneander-astro
|
||||
pullPolicy: IfNotPresent
|
||||
# Overrides the image tag whose default is the chart appVersion.
|
||||
tag: "v2.3.8"
|
||||
tag: "v2.4.0"
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
@ -11,12 +11,24 @@ ingress:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
kubernetes.io/tls-acme: "true"
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
nginx.ingress.kubernetes.io/configuration-snippet : |
|
||||
if ($request_uri ~* \.(gif|jpe?g|png|woff2)) {
|
||||
expires 1M;
|
||||
add_header Cache-Control "public";
|
||||
}
|
||||
#nginx.ingress.kubernetes.io/configuration-snippet : |
|
||||
# if ($request_uri ~* \.(gif|jpe?g|png|woff2)) {
|
||||
# expires 1M;
|
||||
# add_header Cache-Control "public";
|
||||
# }
|
||||
hosts:
|
||||
- host: www.wellnitz-alex.de
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
- host: www.alexohneander.de
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
- host: wellnitz-alex.de
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
- host: alexohneander.de
|
||||
paths:
|
||||
- path: /
|
||||
@ -25,3 +37,6 @@ ingress:
|
||||
- secretName: alexohneander-tls
|
||||
hosts:
|
||||
- alexohneander.de
|
||||
- wellnitz-alex.de
|
||||
- www.alexohneander.de
|
||||
- www.wellnitz-alex.de
|
||||
|
10860
package-lock.json
generated
10860
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "alexohneander-astro",
|
||||
"version": "2.3.7",
|
||||
"version": "2.3.10",
|
||||
"scripts": {
|
||||
"dev": "astro check --watch & astro dev",
|
||||
"start": "astro dev",
|
||||
@ -17,7 +17,7 @@
|
||||
"dependencies": {
|
||||
"@astrojs/rss": "^2.4.1",
|
||||
"@resvg/resvg-js": "^2.4.1",
|
||||
"astro": "^2.4.5",
|
||||
"astro": "^4.16.4",
|
||||
"fuse.js": "^6.6.2",
|
||||
"github-slugger": "^2.0.0",
|
||||
"remark-collapse": "^0.1.2",
|
||||
@ -27,8 +27,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/react": "^2.1.3",
|
||||
"@astrojs/sitemap": "^1.3.1",
|
||||
"@astrojs/tailwind": "^3.1.2",
|
||||
"@astrojs/sitemap": "^1.4.0",
|
||||
"@astrojs/tailwind": "^5.1.2",
|
||||
"@divriots/jampack": "^0.11.2",
|
||||
"@tailwindcss/typography": "^0.5.9",
|
||||
"@types/github-slugger": "^1.3.0",
|
||||
|
@ -3,7 +3,7 @@ import type { Site, SocialObjects } from "./types";
|
||||
export const SITE: Site = {
|
||||
website: "https://astro-paper.pages.dev/",
|
||||
author: "Alex Wellnitz",
|
||||
desc: "A minimal, responsive and SEO-friendly Astro blog theme.",
|
||||
desc: "Alex Wellnitz DevOps Architect | Software Developer | Kubernetes Expert | Network Security | Web Performance Optimization. Accelerating web performance and modernizing application delivery.",
|
||||
title: "Alexohneander",
|
||||
subtitle: "Engineering Chaos",
|
||||
ogImage: "astropaper-og.jpg",
|
||||
|
90
src/content/blog/high-scalable-minecraft-cluster.md
Normal file
90
src/content/blog/high-scalable-minecraft-cluster.md
Normal file
@ -0,0 +1,90 @@
|
||||
---
|
||||
author: Alex Wellnitz
|
||||
pubDatetime: 2023-11-03T19:20:50+02:00
|
||||
title: Highly scalable Minecraft cluster
|
||||
postSlug: highly-scalable-minecraft-cluster
|
||||
featured: true
|
||||
draft: false
|
||||
tags:
|
||||
- kubernetes
|
||||
- minecraft
|
||||
- cluster
|
||||
ogImage: ""
|
||||
description: How to build and configure a highly scalable Minecraft server
|
||||
---
|
||||
Are you planning a very large Minecraft LAN party? Then this article is for you. Here I show you how to set up a highly scalable Minecraft cluster.
|
||||
|
||||
|
||||
### What is a Minecraft cluster?
|
||||
|
||||
A Minecraft cluster is a Minecraft server network that consists of multiple Minecraft servers. These servers are connected to each other via a network and can therefore be shared. This means that you can play with your friends on a server that consists of multiple servers.
|
||||
|
||||
### How does a Minecraft cluster work?
|
||||
|
||||
A Minecraft cluster consists of several components.
|
||||
|
||||
<!-- Image -->
|
||||

|
||||
|
||||
#### Master database
|
||||
First, there is the master database. This database allows servers to store data in a central location that all servers can access. Servers store chunks, maps, level.dat, player data, banned players, and more in this database. This database also records which chunk belongs to which server and coordinates communication between servers.
|
||||
|
||||
#### Server
|
||||
The master database is great for storing data, but not so good at synchronizing data in real time between servers. This is where peer-to-peer communication comes in. Each server establishes a connection to another server so that data between them can be updated in real time. When a player on server A attacks another player on server B, server A sends this data directly to server B so that server B can damage the player and apply any knockback.
|
||||
|
||||
#### Load Balancer
|
||||
The load balancer is the last component of the cluster. A load balancer is required to distribute players evenly across your servers. A load balancer automatically distributes players between servers to distribute the load evenly across the individual servers.
|
||||
|
||||
### Why do I need multiple servers?
|
||||
By having multiple servers, we can distribute the load across multiple servers. This means that we can have more players on our servers without the servers becoming overloaded. With this setup, we can also easily add new servers if we get more players. If the number of players decreases again, the server can be removed again.
|
||||
|
||||
## Preparation
|
||||
|
||||
You should be familiar with Kubernetes and have set up a Kubernetes cluster. I recommend [k3s](https://k3s.io/).
|
||||
|
||||
You should also be familiar with Helm. I recommend [Helm 3](https://helm.sh/docs/intro/install/).
|
||||
|
||||
## Installation
|
||||
|
||||
First, you should clone the repository.
|
||||
|
||||
```bash
|
||||
git clone git@github.com:alexohneander/MultiPaperHelm.git
|
||||
cd MultiPaperHelm/
|
||||
```
|
||||
|
||||
I installed the entire setup in a separate namespace. You can create this namespace with the following command.
|
||||
|
||||
```bash
|
||||
kubectl create namespace minecraft
|
||||
```
|
||||
|
||||
Next, we install the Minecraft cluster with Helm.
|
||||
|
||||
```bash
|
||||
helm install multipaper . --namespace minecraf
|
||||
```
|
||||
|
||||
Once the Helm chart is installed, you can view the port of the proxy service.
|
||||
|
||||
```bash
|
||||
kubectl describe service multipaper-master-proxy -n minecraft
|
||||
```
|
||||
|
||||
This port is the port that you need to enter in your Minecraft client.
|
||||
|
||||
## Configuration
|
||||
|
||||
The Helm chart creates several ConfigMaps. In these ConfigMaps, you can customize the configuration of your cluster.
|
||||
|
||||
For example, you can set the number of maximum players or change the description of the server.
|
||||
|
||||
For more information on the individual config files, see [MultiPaper](https://github.com/MultiPaper/MultiPaper).
|
||||
|
||||
## Conclusion
|
||||
|
||||
With this setup, you can easily set up a highly scalable Minecraft cluster. You can easily add new servers if you get more players and remove them again if the number of players decreases again.
|
||||
|
||||
You can test this setup under the following Server Address: `minecraft.alexohneander.de:31732`
|
||||
|
||||
If you have any questions, feel free to contact me on [Email](mailto:moin@wellnitz-alex.de) or on [Matrix](https://matrix.to/#/@alexohneander:dev-null.rocks).
|
@ -29,3 +29,19 @@ description: In this post, we will show you how to create a MySQL server backup
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Java Remote VSCode debugging
|
||||
**launch.json:**
|
||||
```json
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "java",
|
||||
"name": "Debug (Attach)",
|
||||
"projectName": "MyApplication",
|
||||
"request": "attach",
|
||||
"hostName": "localhost",
|
||||
"port": 8787
|
||||
}
|
||||
]
|
||||
```
|
||||
|
@ -49,6 +49,18 @@ Agency for internet and design founded in 1998, established in Kastellaun in the
|
||||
|
||||
## Projects
|
||||
|
||||
### DevOps Engineer, Cofinity-X
|
||||
|
||||
**since 2023**
|
||||
|
||||
Cofinity-X is the first operator of the Catena-X network, connecting automotive partners at every level of the value chain. As a DevOps engineer, I was responsible for the enablement services.
|
||||
|
||||
- Deployment of various open source Projects with GitOps and ArgoCD
|
||||
- Managing projects on a Kubernetes clusters
|
||||
- Communication with end customers (support, troubleshooting)
|
||||
- Analysis of problems and spikes in load
|
||||
- Planning new projects and deploying to the Kubernetes clusters
|
||||
|
||||
### DevOps Engineer, Amamed
|
||||
|
||||
**until 2023**
|
||||
|
@ -41,7 +41,7 @@ const socialCount = SOCIALS.filter(social => social.active).length;
|
||||
</a>
|
||||
|
||||
<p>
|
||||
I'm Alex, a DevOps architect and software developer. I currently hold
|
||||
I'm Alex Wellnitz, a DevOps architect and software developer. I currently hold
|
||||
the role of DevOps Engineer at Materna, where I assist developers in
|
||||
accelerating web performance and provide guidance on various topics such
|
||||
as web development, Kubernetes, network security, and more.
|
||||
|
Loading…
x
Reference in New Issue
Block a user