diff --git a/media/img/lewdlad/arch.svg b/media/img/lewdlad/arch.svg new file mode 100644 index 0000000..4631a5b --- /dev/null +++ b/media/img/lewdlad/arch.svg @@ -0,0 +1,409 @@ + + + + + + + + + + image/svg+xml + + + + + + + + Game servers + + + + + + + + + + + + + + + LewdLad + + LoggerLad + + + + + + + + + + + + + + + + + controls + Report logs to + + diff --git a/posts/eco-eats.md b/posts/eco-eats.md new file mode 100644 index 0000000..e8f6ec6 --- /dev/null +++ b/posts/eco-eats.md @@ -0,0 +1,30 @@ +# Economical Eats +## A dense packing of information those in recently found hard times + +It's official: your _broke and need help, but food is expensive and you're starving, what do you do?_ Let me show you. + +## Precursor + +* These tips are general purpose and can be changed to fit your needs + +* The target audience is anyone who hasn't been _broke_ + +* These tips are to arm you with the knowledge to survive in modern circumstances + +## Good Wholesome Tips + +## Ugly Tips + +## Blackpill + +> These are absolute last resort and if you find yourself here either you fucked up or still have a chance to fix something else + +> Nearly all of the following tips are demonstrably awful for you in some way + +## More resources + +Here's a bunch of links + +## Afterthoughts + +todo diff --git a/posts/lewd-lad-infra.md b/posts/lewd-lad-infra.md index 2c0911c..ac31012 100644 --- a/posts/lewd-lad-infra.md +++ b/posts/lewd-lad-infra.md @@ -2,29 +2,29 @@ ## What is "Lewdlad" -Lewdlad is a Discord chat bot I created which (at the time of writing this) is used to orchestrate multiple AWS EC2 servers to provide affordable game servers to various communities that I help run. +Lewdlad is a Discord chat bot I created which (at the time of writing this) is used to orchestrate multiple AWS EC2 servers which run different game servers(Minecraft, Reflex, Hexxit, etc). ### Some history -The very first version of Lewdlad was a python script that would literally pick random images from a set of red boards on 4chan and send it to a random online person in the guild. -Eventually I created a bot(that had 1 command), that would invoke this script and send the results to whoever invoked the command. -That command is `.roll`. -After some time I added some more 4chan related commands and eventually _the Hanime module_. +The first version of Lewdlad was a Python script that would literally pick random images from a set of red boards on 4chan and send it to a random person. +Eventually I turned it into a bot which basically just sent the random image to whoever invoked the command. -The Hanime module is weird because it was conceived out of a joke: "what if Lewdlad recommended some fire hentai". -Being that it was likely 2 AM and I was bored I did some searching and found that there is no public API for Hanime. -I then opened up the site and did some reverse engineering to figure out how to spoof a browser request and get some results. -Some reversing and trial-and-error later and I had a working request script, and could search. -Finally I took this script, wrapped with some ergonomics and hooked it into the Lewdlad's codebase. +After some time came the _Hanime_ module, which came from a joke of "I wish Lewdlad would send some fire hentai. +After some research I realized querying the site wasn't going to be easy since there wasn't a public nice made API. +To this end I opened up the site and did some reverse engineering to figure out how to spoof a browser request and get some results. +Some reversing and trial-and-error later and I had a working request script which I could hook up to the bot. +Slapped it all behind a command with some basic arguments and like `.pron` was born. -### The beginnings of orchestration +### The beginnings of the server manager Around this time I started hosting a minecraft server for friends to play on. -Being that the server had limited _burst capacity_ I knew I had to make sure the server could replenish its burst for when the _peak hours_ hit. -To achieve this I put Lewdlad on the same server as the minecraft game files and put the `start-minecraft.sh` script behind a command for Lewdlad to use. +Being hosted on AWS meant the server had _burst capacity_, which basically means the CPU can boost temporarily to handle harder workloads. +This ability is similar to a magic ability in most games, takes up some MP and has to recharge. +While idling a vanilla minecraft server sits very close to the _burst limit_ where the CPU starts using its _burst capability_. +To make sure it didn't needlessly burst I put Lewdlad on the same server as the minecraft game files and put a `start-minecraft.sh` script behind a command for the bot to use. The architecture was surprisingly simple and ended up being way more flexible and easy to use than I ever expected. -Basically each game had its own directory in a predetermined directory: +I ended up extending it to this with multiple games so each game had its own directory in a predetermined directory: ``` Lewdlad/ @@ -61,4 +61,36 @@ This meant a minimal configuration could look like Adding crash safety is trivially easy as recovering is a matter of checking configuration files and determining which are _falsely active_. +## A new Architecture +The new architecture has a few goals in mind: + +* Reduce operating costs + +* Reduce impact of game failure + + * learned the hard way how bad wine would throttle everything + +* More flexibility + + + +![](/media/img/lewdlad/arch.svg) + +The text version of this goes like this: + +* Lewdlad lives on its own virtual private server + +* Each game server is now its own EC2 instance + + * Basically just an EC2 cluster + +* Loggerlad is whatever I decide to use for centralized logging + +### Pros + +* Only get charged for ec2 instances that are _actually live/running_ + +* Elastic IP's are cheap as hell per month + +* Lots of free logging services that I could technically even host my self.