.
This commit is contained in:
parent
dede9ce18d
commit
15f60f0465
7 changed files with 111 additions and 270 deletions
|
|
@ -22,20 +22,40 @@ us connect to the resolved IPs. With a single node, that's fine but if we want t
|
|||
access a service on another node, we need wireguard(or something similar).
|
||||
Actually if we run all nodes in the same network and it'd be fine without.
|
||||
|
||||
|
||||
|
||||
## Most Basic Implementation
|
||||
|
||||
- single node
|
||||
- runs `nomad agent -dev` and `consul agent -dev`
|
||||
- runs `dnsmasq -d`, `nomad agent -dev`, and `consul agent -dev` as root
|
||||
- /etc/nomad.d/consul.hcl:
|
||||
consul {
|
||||
address = "127.0.0.1:8500"
|
||||
}
|
||||
- /etc/dnsmasq.conf:
|
||||
server=/consul/127.0.0.1#8600
|
||||
- all jobs define a consul service
|
||||
- TODO: make dns/connect work
|
||||
|
||||
|
||||
## useful commands
|
||||
## useful stuff
|
||||
|
||||
- `nomad job run <job>.hcl`
|
||||
- `consul catalog services` <- list registered services
|
||||
- http://localhost:4646/ui/jobs <- web UI accessible after `nomad agent -dev`
|
||||
- https://developer.hashicorp.com/nomad/docs/configuration
|
||||
- https://developer.hashicorp.com/nomad/docs/job-declare/service-discovery
|
||||
|
||||
## Storage/SPOT
|
||||
|
||||
the papermc container already copies all files in /mnt/*
|
||||
to /data, so it's easy to add overwrites.
|
||||
in ./lobby.nomad.hcl I just use a prestart container that downloads the plugin
|
||||
to a temporary volume that is then used as /mnt.
|
||||
A lot of boilerplate and it's also not easy to add other files.
|
||||
Ideally, we'd just copy a whole directory over sftp. it would look
|
||||
like this:
|
||||
/.gitignore <- data
|
||||
/Makefile <- downloads plugins specified to /data/plugins
|
||||
/static <- static files that are copied by make to /data
|
||||
But ig that wouldn't play nice with CI/CD...
|
||||
|
||||
Also currently we need to duplicate a lot of this boilerplate btw.
|
||||
|
|
|
|||
|
|
@ -5,10 +5,56 @@ job "lobby" {
|
|||
count = 1
|
||||
|
||||
network {
|
||||
mode = "host"
|
||||
mode = "bridge"
|
||||
port "minecraft" {
|
||||
to = 25565
|
||||
}
|
||||
dns {
|
||||
servers = ["172.17.0.1"]
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "lobby"
|
||||
port = "minecraft"
|
||||
address_mode = "alloc"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "5s"
|
||||
timeout = "1s"
|
||||
}
|
||||
}
|
||||
|
||||
ephemeral_disk {
|
||||
size = 5000 # 5 gb
|
||||
}
|
||||
|
||||
task "download-plugins" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
|
||||
config {
|
||||
image = "busybox"
|
||||
command = "sh"
|
||||
volumes = ["../alloc/data:/mnt"]
|
||||
args = [
|
||||
"-xec",
|
||||
<<-EOF
|
||||
mkdir -p /mnt/plugins
|
||||
cd /mnt/plugins
|
||||
wget \
|
||||
https://git.lab0x13.site/api/packages/scrow/generic/core-bukkit/UNVERSIONED/CoreBukkit.jar \
|
||||
https://download.luckperms.net/1652/bukkit/loader/LuckPerms-Bukkit-5.5.65.jar \
|
||||
https://hangarcdn.papermc.io/plugins/ViaVersion/ViaVersion/versions/5.11.0/PAPER/ViaVersion-5.11.0.jar \
|
||||
https://hangarcdn.papermc.io/plugins/ViaVersion/ViaBackwards/versions/5.11.0/PAPER/ViaBackwards-5.11.0.jar
|
||||
ls -l
|
||||
EOF
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
task "run" {
|
||||
|
|
@ -18,9 +64,9 @@ job "lobby" {
|
|||
image = "git.lab0x13.site/scrow/papermc:0.1"
|
||||
force_pull = false
|
||||
ports = ["minecraft"]
|
||||
#args = ["java", "-jar", "server.jar", "--port=${NOMAD_PORT_minecraft}"]
|
||||
volumes = ["../alloc/data:/mnt"]
|
||||
}
|
||||
|
||||
|
||||
env {
|
||||
HOST_POSTGRES = "jdbc:postgresql://postgres.service.consul/scrow"
|
||||
HOST_NATS = "nats://nats.service.consul"
|
||||
|
|
@ -30,18 +76,6 @@ job "lobby" {
|
|||
cpu = 1000
|
||||
memory = 2048
|
||||
}
|
||||
|
||||
service {
|
||||
name = "lobby"
|
||||
port = "minecraft"
|
||||
provider = "consul"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "5s"
|
||||
timeout = "1s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,24 @@ job "nats" {
|
|||
type = "service"
|
||||
|
||||
group "nats" {
|
||||
|
||||
network {
|
||||
mode = "host"
|
||||
mode = "bridge"
|
||||
port "nats" {
|
||||
to = 4222
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "nats"
|
||||
port = "nats"
|
||||
address_mode = "alloc"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "1s"
|
||||
timeout = "1s"
|
||||
}
|
||||
}
|
||||
|
||||
task "nats" {
|
||||
driver = "docker"
|
||||
|
||||
|
|
@ -22,18 +32,6 @@ job "nats" {
|
|||
cpu = 500
|
||||
memory = 1000
|
||||
}
|
||||
|
||||
service {
|
||||
name = "nats"
|
||||
port = "nats"
|
||||
provider = "consul"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "5s"
|
||||
timeout = "1s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,27 @@
|
|||
# TODO add host volume
|
||||
job "postgres" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "db" {
|
||||
network {
|
||||
mode = "host"
|
||||
mode = "bridge"
|
||||
port "postgres" {
|
||||
to = 5432
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "postgres"
|
||||
port = "postgres"
|
||||
address_mode = "alloc"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "5s"
|
||||
timeout = "1s"
|
||||
}
|
||||
}
|
||||
|
||||
task "postgres" {
|
||||
driver = "docker"
|
||||
|
||||
|
|
@ -28,18 +40,6 @@ job "postgres" {
|
|||
cpu = 500
|
||||
memory = 512
|
||||
}
|
||||
|
||||
service {
|
||||
name = "postgres"
|
||||
port = "postgres"
|
||||
provider = "consul"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "1s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,25 @@
|
|||
job "velocity" {
|
||||
type = "service"
|
||||
|
||||
group "proxy" {
|
||||
group "velocity" {
|
||||
network {
|
||||
port "minecraft" {
|
||||
mode = "bridge"
|
||||
port "ingress" {
|
||||
static = 25565
|
||||
}
|
||||
dns {
|
||||
server = ["127.0.0.1"]
|
||||
}
|
||||
}
|
||||
|
||||
task "velocity" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "scrow/velocity:local"
|
||||
}
|
||||
resources {
|
||||
cpu = 2000
|
||||
memory = 1000
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "scrow/velocity:local"
|
||||
}
|
||||
resources {
|
||||
cpu = 1000
|
||||
memory = 500
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue