home.social

Search

1000 results for “Eli_like_a_lie”

  1. From: blenderdumbass . org

    If today we have a lot of films to choose from when we want to shock ourselves beyond believe: from barely serious, yet distrusting films by Eli Roth through intense hyper-violence by Coralie Fargeat or depressing looks at the world by Lars Von Trier all the way to deranged films like The Serbian Film, in 1970s you had probably only one true contender ...

    Read: blenderdumbass.org/reviews/the

    #TheTexasChainSawMassacre #TobeHooper #Horror #film #review #movies #cinemastodon

  2. From: blenderdumbass . org

    If today we have a lot of films to choose from when we want to shock ourselves beyond believe: from barely serious, yet distrusting films by Eli Roth through intense hyper-violence by Coralie Fargeat or depressing looks at the world by Lars Von Trier all the way to deranged films like The Serbian Film, in 1970s you had probably only one true contender ...

    Read: blenderdumbass.org/reviews/the

    #TheTexasChainSawMassacre #TobeHooper #Horror #film #review #movies #cinemastodon

  3. From: blenderdumbass . org

    If today we have a lot of films to choose from when we want to shock ourselves beyond believe: from barely serious, yet distrusting films by Eli Roth through intense hyper-violence by Coralie Fargeat or depressing looks at the world by Lars Von Trier all the way to deranged films like The Serbian Film, in 1970s you had probably only one true contender ...

    Read: blenderdumbass.org/reviews/the

    #TheTexasChainSawMassacre #TobeHooper #Horror #film #review #movies #cinemastodon

  4. From: blenderdumbass . org

    If today we have a lot of films to choose from when we want to shock ourselves beyond believe: from barely serious, yet distrusting films by Eli Roth through intense hyper-violence by Coralie Fargeat or depressing looks at the world by Lars Von Trier all the way to deranged films like The Serbian Film, in 1970s you had probably only one true contender ...

    Read: blenderdumbass.org/reviews/the

    #TheTexasChainSawMassacre #TobeHooper #Horror #film #review #movies #cinemastodon

  5. Please Don't Feed the Children 2025 shows that Destry Spielberg has more balls than her father

    Steven Spielberg directed some rather intense movies throughout his career. He made Duel in 1971 about a maniac truck driver. He made a blog-buster sensation Jaws in 1974. And he made films like Schindler's List and War of the Worlds that could be considered horror films. But he never did a true, scary horror film. My mother used to say that "Steven Spielberg is too sentimental to make truly scary movies". But that statement isn't true about his daughter Destry. 2025 film by Destry Allyn Spielberg Please Don't Feed the Children shows that she is capable to rival fucking Eli Roth if she wants to.
  6. Please Don't Feed the Children 2025 shows that Destry Spielberg has more balls than her father

    Steven Spielberg directed some rather intense movies throughout his career. He made Duel in 1971 about a maniac truck driver. He made a blog-buster sensation Jaws in 1974. And he made films like Schindler's List and War of the Worlds that could be considered horror films. But he never did a true, scary horror film. My mother used to say that "Steven Spielberg is too sentimental to make truly scary movies". But that statement isn't true about his daughter Destry. 2025 film by Destry Allyn Spielberg Please Don't Feed the Children shows that she is capable to rival fucking Eli Roth if she wants to.
  7. Please Don't Feed the Children 2025 shows that Destry Spielberg has more balls than her father

    Steven Spielberg directed some rather intense movies throughout his career. He made Duel in 1971 about a maniac truck driver. He made a blog-buster sensation Jaws in 1974. And he made films like Schindler's List and War of the Worlds that could be considered horror films. But he never did a true, scary horror film. My mother used to say that "Steven Spielberg is too sentimental to make truly scary movies". But that statement isn't true about his daughter Destry. 2025 film by Destry Allyn Spielberg Please Don't Feed the Children shows that she is capable to rival fucking Eli Roth if she wants to.
  8. Ah, just what the world needs—another #WebAssembly #toolkit for Go! 😴 Eli Bendersky proudly unveils "watgo"—because parsing WAT and converting it to WASM is the party trick we've all been waiting for. 🎉 Zero dependencies? More like zero excitement. 🙄
    eli.thegreenplace.net/2026/wat #Go #watgo #EliBendersky #technews #HackerNews #ngated

  9. LAST CHANCE! Buy it for $0.00 for five days! Free Book Promotion for Eli, In Times Like These!
    Sunday, January 11, 2026, 12:00 AM PST Thursday, January 15, 2026, 11:59 PM PST #Free #KindleUnlimited #Kindle #paperback #hardcover #WritingCommunity #books #fiction a.co/d/3MQV9qw

  10. Unverkalt – Héréditaire Review By Thus Spoke

    Reviewing albums explicitly labelled post-metal always seems to bring out my inner pedant. I know all genre labels are kind of meaningless, but post-metal specifically seems to simply be slapped onto anything with fewer riffs than your average atmo-black record, but a lot more cleans. Nonetheless, you know what it sounds like, in essence. If that essence had form, it could be Unverkalt on their third LP Héréditaire. Born in Greece and now split between Greece and Germany, Unverkalt’s self-styled avant-garde approach to post-metal takes its “heaviest and most heartfelt” form on this album, which also marks their signing with Season of Mist. Unknown to me beforehand, promotional references to Cut of Luna and Sylvaine in particular caught my eye, along with the art. I’m glad I picked it up because Unverkalt have something that approaches brilliance at many times. But in embodying the vague yet recognisable subgenre—and sounding good whilst doing it—Héréditaire fails to go further than the safety of the minimum required.

    Ignore the artist touchstones in the promo; Unverkalt has little meaningful in common with them: a female lead vocalist is about where that starts and ends. If anything, the aura reflects more Harakiri for the Sky, Heretoir, or maybe Frayle. Lead vocalist Dimitra Kalavrezou sings with a distinctive, somewhat sweet intonation, and screams with articulate fierceness—impressive considering this is her first record providing harsh vocals. Her voice is joined by that of guitarist Eli Mavrychev and—in a late-album highlight—Sakis Tolis (“I, The Deceit”), often layered and intermingled to lend a chorus-of-many-voices air that can be quite powerful. This sense of solidarity and humanity ties into Héréditaire’s overt emotionality—easily its greatest asset—which revolves around mournful yet uplifting themes that rise from softly resonant notes into the (regrettably blurry) weeping of tremolo and chunky riffs. It’s through the continued swell and fade of each composition that we get to see the greats that Unverkalt is capable of.

    Héréditaire by Unverkalt

    Even as songs tend to repeat the same pattern, most manage to draw the listener in. Synths (“Oath ov Prometheus”), vaguely MENA-style saxophone (“Ænæ Lithi”), and sprinklings of piano (“Penumbrian Lament”), and humming strings (“Maladie de l’Esprit”)1 float in and out, and I only wish they were used more. Harnessing the drama of surging, urgent riffs (“Die Auslöschung,” “Oath ov Prometheus”) and heartfelt group screams and singing (“Death is Forever,” “A Lullaby for the Descent”), the iterated compositions win you over by sheer force. These plainly beautiful melodies and ardent vocal performances are inextricable, each lending the other a level of strength and gravity neither could claim in isolation. Some songs stand head and shoulders above others in this regard: “Die Auslöschung,” “Death is Forever,” “Maladie de l’Esprit,” and in particular, “I, the Deceit,” where Sakis Tolis brings not only his voice but a distinctly Scandinavian melodeath2 vibe to a song where he and Dimitria also duet in their shared native tongue. That song and many others are also examples of Unverkalt’s strange, quasi-pop-rock leanings that they incorporate through the use of bobbing, understated clean refrains that slingshot back into something heavier or more atmospheric (“Oath ov Prometheus,” “A Lullaby for the Descent,” “Introjects”). This weirdness sharpens Unverkalt’s style and works surprisingly well.

    Héréditaire thus brims with feeling, strong melodies, and potential. Undeniably stirring at its best (“Die Auslöschung,” “I, the Deceit,” “Maladie de l’Esprit”), and with little idiosyncrasies of style giving it distinction, as a whole it feels oddly unrealised. One culprit is the shockingly compressed mix, which robs the guitars of their body and drums of their bite. Given the vocal range on display and the elements of instrumental experimentation (horns, piano, etc), this would sound far better with a roomier production. But it’s primarily the overly repetitive structure of the compositions that causes issues. Though the passion of the singing or screaming, and the force of a good melody cause you to briefly forget, every song follows essentially the same trajectory—or rather, the same sequence of things repeats across the album, sometimes spanning between songs. Whispers or quiet singing, a steady beat and post-rock atmosphere, black-adjacent speed and screaming, and a lapse into a swaying tempo. With nine tracks adding up to around 50 minutes, you start to notice.

    I don’t want to rag on Héréditarire too much; it’s a good album. The fervency and melancholia of the vocal performances—from Dimitria especially—and melodies show the passion behind the project, and there’s a thread of individuality that could pull them out of obscurity. But for as expressive, intriguing, and compelling as their music often is, Unverkalt’s reluctance—or inability—to step outside of a template holds them down when they could be soaring.

    Rating: Good
    DR: 5 | Format Reviewed: 320 kbps mp3
    Label: Season of Mist
    Websites: Bandcamp | Facebook
    Releases Worldwide: February 27th, 2026

    #2026 #30 #Feb26 #Frayle #GermanMetal #GreekMetal #HarakiriForTheSky #Héréditaire #Heretoir #PostRock #PostBlackMetal #PostMetal #Review #Reviews #SakisTolis #SeasonOfMist #Unverkalt
  11. Daily old piece 22 (x 2 bc I missed it yesterday)!

    Ref sheet I made for an OC a while ago. They started out as a Black Butler OC that I shamessly ship with Grell but I like to draw them out of context a lot 💙 They are a shapeshifter and like to play around with different body parts and gender presentation :D

    From 2020.


    #eli's-art #art #digital-art #illustration #original-art #own-characters #original-character #oc #character-sheet #demon #old-piece
  12. From: blenderdumbass . org

    17% Rotten Tomatoes score. The movie got to be shit, right? Well when it comes to the Eli Roth's 2018 Death Wish ( the remake of the 1974 film with the same name ) you are not quite correct. In my estimate the film should be no less than 60%, based on its execution. Eli Roth is a good enough director to pull something like this off. And you can see that he is trying. The actors ar...

    Read: blenderdumbass.org/reviews/dea

    #DeathWish #guns #film #review #movies #cinemastodon

  13. Whether it’s driverless tractors, weed-zapping robots, or data-transmitting crops, the future of farming is happening faster than you might think! We’re rapidly transitioning into a world of 24-hour farming, no longer restricted to farming only when the sun is up! This is one of the big issues and big ideas that I've been putting across in my BIG Future series.

    Many people continue to view farming from the sepia-toned photos of the 1940s and 1950s. They don’t realize the technological and scientific advances or the massive opportunities for international growth.

    That's what I've been stressing in the world of agriculture for many years, through dozens of keynotes to most major agricultural organizations. Organizations like Nutrien, FMC Agriculture, Simplot, Eli Lilly, Dupont, Purina, Land O' Lakes, the United Soybean Board, and even the US Department of Agriculture have had me in.

    With that in mind, I've long been keeping a careful eye on the evolution of AI in the agricultural industry - it's been used in various ways for quite some time. The big impact of what we are witnessing with ChatGPT and other technologies is related to the general acceleration of all things AI-related in the industry.

    Where does this take us?

    **#agricultureandfarming** **#farming** **#farmingtechnology** **#ai** **#artificialintelligence** **#precisionfarming** **#agriculture** **#farming**

    jimcarroll.com/2023/04/beyond-

  14. #introduction and #esittely

    International Game Developers Association (IGDA) is non-profit game development organization meant to connect game developers and people interested in game development. IGDA Lahti is organization under IGDA Finland. We organize meetings about once a month with varying topics from stories from game developers or more chill meeting like our summer BBQ events. Goal of IGDA Lahti is to increase interest in game development in Lahti and support local developers.

    International Game Developer Association eli Kansainvälinen pelinkehittäjäjärjestö (IGDA) on pelinkehitysyhdistys, jonka tavoite on yhdistää pelinkehittäjiä ja pelinkehityksestä kiinnostuneita ihmisiä. IGDA Lahti on järjestö IGDA Finlandin alla. Me järjestämme tapahtumia noin kerran kuussa vaihtelevilla aiheilla kuten tarinoita pelinkehittäjiltä tai kesän grillaus ja hengailu. IGDA Lahden tavoite on lisätä kiinnostusta pelinkehitykseen Lahdessa ja tukea paikallisia pelinkehittäjiä.

    #gamedev #peliala #igda #igdafinland #igdalahti #lahti

  15. #introduction and #esittely

    International Game Developers Association (IGDA) is non-profit game development organization meant to connect game developers and people interested in game development. IGDA Lahti is organization under IGDA Finland. We organize meetings about once a month with varying topics from stories from game developers or more chill meeting like our summer BBQ events. Goal of IGDA Lahti is to increase interest in game development in Lahti and support local developers.

    International Game Developer Association eli Kansainvälinen pelinkehittäjäjärjestö (IGDA) on pelinkehitysyhdistys, jonka tavoite on yhdistää pelinkehittäjiä ja pelinkehityksestä kiinnostuneita ihmisiä. IGDA Lahti on järjestö IGDA Finlandin alla. Me järjestämme tapahtumia noin kerran kuussa vaihtelevilla aiheilla kuten tarinoita pelinkehittäjiltä tai kesän grillaus ja hengailu. IGDA Lahden tavoite on lisätä kiinnostusta pelinkehitykseen Lahdessa ja tukea paikallisia pelinkehittäjiä.

    #gamedev #peliala #igda #igdafinland #igdalahti #lahti

  16. #introduction and #esittely

    International Game Developers Association (IGDA) is non-profit game development organization meant to connect game developers and people interested in game development. IGDA Lahti is organization under IGDA Finland. We organize meetings about once a month with varying topics from stories from game developers or more chill meeting like our summer BBQ events. Goal of IGDA Lahti is to increase interest in game development in Lahti and support local developers.

    International Game Developer Association eli Kansainvälinen pelinkehittäjäjärjestö (IGDA) on pelinkehitysyhdistys, jonka tavoite on yhdistää pelinkehittäjiä ja pelinkehityksestä kiinnostuneita ihmisiä. IGDA Lahti on järjestö IGDA Finlandin alla. Me järjestämme tapahtumia noin kerran kuussa vaihtelevilla aiheilla kuten tarinoita pelinkehittäjiltä tai kesän grillaus ja hengailu. IGDA Lahden tavoite on lisätä kiinnostusta pelinkehitykseen Lahdessa ja tukea paikallisia pelinkehittäjiä.

    #gamedev #peliala #igda #igdafinland #igdalahti #lahti

  17. #introduction and #esittely

    International Game Developers Association (IGDA) is non-profit game development organization meant to connect game developers and people interested in game development. IGDA Lahti is organization under IGDA Finland. We organize meetings about once a month with varying topics from stories from game developers or more chill meeting like our summer BBQ events. Goal of IGDA Lahti is to increase interest in game development in Lahti and support local developers.

    International Game Developer Association eli Kansainvälinen pelinkehittäjäjärjestö (IGDA) on pelinkehitysyhdistys, jonka tavoite on yhdistää pelinkehittäjiä ja pelinkehityksestä kiinnostuneita ihmisiä. IGDA Lahti on järjestö IGDA Finlandin alla. Me järjestämme tapahtumia noin kerran kuussa vaihtelevilla aiheilla kuten tarinoita pelinkehittäjiltä tai kesän grillaus ja hengailu. IGDA Lahden tavoite on lisätä kiinnostusta pelinkehitykseen Lahdessa ja tukea paikallisia pelinkehittäjiä.

    #gamedev #peliala #igda #igdafinland #igdalahti #lahti

  18. #introduction and #esittely

    International Game Developers Association (IGDA) is non-profit game development organization meant to connect game developers and people interested in game development. IGDA Lahti is organization under IGDA Finland. We organize meetings about once a month with varying topics from stories from game developers or more chill meeting like our summer BBQ events. Goal of IGDA Lahti is to increase interest in game development in Lahti and support local developers.

    International Game Developer Association eli Kansainvälinen pelinkehittäjäjärjestö (IGDA) on pelinkehitysyhdistys, jonka tavoite on yhdistää pelinkehittäjiä ja pelinkehityksestä kiinnostuneita ihmisiä. IGDA Lahti on järjestö IGDA Finlandin alla. Me järjestämme tapahtumia noin kerran kuussa vaihtelevilla aiheilla kuten tarinoita pelinkehittäjiltä tai kesän grillaus ja hengailu. IGDA Lahden tavoite on lisätä kiinnostusta pelinkehitykseen Lahdessa ja tukea paikallisia pelinkehittäjiä.

    #gamedev #peliala #igda #igdafinland #igdalahti #lahti

  19. #JonathanNez got on my radar at the worst of #pandemic; he was #Navajo Nation president then. They tried their best to protect their elders, keepers of stories and wisdom, so different than USA at large. He's running for Congress in #az02 It's looking to be a #flippable seat, and his perspective & experience would enrich Congress, like when Deb Haaland was elected from NM (now Interior Sec'y.)
    politico.com/live-updates/2024

    1/2

  20. Decades old #LiveMusic venue's existence threatened by inept bankrupt #Oakland city #bureaucracy.

    Eli's #MileHigh club, which was started by late Eli Thornton in 70s (before he was murdered in the joint by his girlfriend ), has hosted live gigs in its late last quarter of the 20th century blues heyday when John Lee Hooker, #CharlieMusselwhite, Etta James, Lowell Fulson, Tommy Castro, James Cotton, Little Charlie & The Night Cats, and even James Brown might make the scene, as patrons feasted on giant burgers, gumbo, andouille sausage and fried shrimp made by the ol' lady in the back. More recently, after it's musician owner Troyce Key passed, new ownership fought for years to regain a #Cabaret permit to begin a 21st century phoenix rising era of mixing emergent #hardrock & punk band bookings including locals like Sleep, #HighOnFire and #Entombed in with local blues and barbq, but now in 2025, those days are over.

    #WestOakland #DiveBar has been forced to cut staff and close their outdoor smoking & bar bq area portion. Long used by Eli's patrons for decades, but apparently a 'non permitted' backyard area (according to city), it has become an issue now after new neighbor complaints, including many from a recent #residential highrise that was built long after the bar was an #EastBay #nightlife fixture .

    Mgmt is asking for support from patrons, and particularly seek photos over a decade old that hopefully show previous outdoor backyard activity.

    kqed.org/arts/13972851/elis-mi

  21. Eureka! 🎉 Now, thanks to Hilbert space, you can treat functions like vectors—because who wouldn't want to add some dimension to their #math misery? 🤯 Finally, a way to get lost in infinite math space, because three dimensions just aren't enough! 🙃
    eli.thegreenplace.net/2025/hil #Eureka #HilbertSpace #InfiniteDimensions #MathFun #MathMisery #HackerNews #ngated

  22. If y'all don't mind I'm gonna post all my old Tumblr art in chronological order until I catch up. When I drew this I was really obssesed with Rick and Morty and spent too much time playing Pocket Mortys. Still, I absolutely hated Miami Morty's design and bio, it really creeped me out 😭 But I liked the basic concept of a beach boy Morty so I kind of designed a Mortysona that was loosely based on him.
    (Just in case, I have a few more RnM pieces but I don't really like the show anymore, so don't expect new art of it from me, I'm just still proud of this silly drawing).

    From 2018.


    #eli's-art #art #digital-art #paint-tool-sai #fanart #rick-and-morty #rnm #pocket-mortys #morty-smith #old-piece
  23. Dem Rep. Joyce Beatty of Ohio, a Black woman, called out GOP Rep. Eli Crane for his use of the term "colored people" while he attempted to defend the amendment during a floor debate in the House this Thursday. #EliCrane
    crooksandliars.com/2023/07/gop

    I captioned this & asked @Karoli to put it up since I didn't want #Twitter to get all the hits followed by #BlueCheckmark #racist trolls "Just asking questions" Like "What about the NAACP?"
    I answered them here:
    letmegooglethat.com/?q=Ask+NAA

  24. Unverkalt – Héréditaire Review By Thus Spoke

    Reviewing albums explicitly labelled post-metal always seems to bring out my inner pedant. I know all genre labels are kind of meaningless, but post-metal specifically seems to simply be slapped onto anything with fewer riffs than your average atmo-black record, but a lot more cleans. Nonetheless, you know what it sounds like, in essence. If that essence had form, it could be Unverkalt on their third LP Héréditaire. Born in Greece and now split between Greece and Germany, Unverkalt’s self-styled avant-garde approach to post-metal takes its “heaviest and most heartfelt” form on this album, which also marks their signing with Season of Mist. Unknown to me beforehand, promotional references to Cut of Luna and Sylvaine in particular caught my eye, along with the art. I’m glad I picked it up because Unverkalt have something that approaches brilliance at many times. But in embodying the vague yet recognisable subgenre—and sounding good whilst doing it—Héréditaire fails to go further than the safety of the minimum required.

    Ignore the artist touchstones in the promo; Unverkalt has little meaningful in common with them: a female lead vocalist is about where that starts and ends. If anything, the aura reflects more Harakiri for the Sky, Heretoir, or maybe Frayle. Lead vocalist Dimitra Kalavrezou sings with a distinctive, somewhat sweet intonation, and screams with articulate fierceness—impressive considering this is her first record providing harsh vocals. Her voice is joined by that of guitarist Eli Mavrychev and—in a late-album highlight—Sakis Tolis (“I, The Deceit”), often layered and intermingled to lend a chorus-of-many-voices air that can be quite powerful. This sense of solidarity and humanity ties into Héréditaire’s overt emotionality—easily its greatest asset—which revolves around mournful yet uplifting themes that rise from softly resonant notes into the (regrettably blurry) weeping of tremolo and chunky riffs. It’s through the continued swell and fade of each composition that we get to see the greats that Unverkalt is capable of.

    Héréditaire by Unverkalt

    Even as songs tend to repeat the same pattern, most manage to draw the listener in. Synths (“Oath ov Prometheus”), vaguely MENA-style saxophone (“Ænæ Lithi”), and sprinklings of piano (“Penumbrian Lament”), and humming strings (“Maladie de l’Esprit”)1 float in and out, and I only wish they were used more. Harnessing the drama of surging, urgent riffs (“Die Auslöschung,” “Oath ov Prometheus”) and heartfelt group screams and singing (“Death is Forever,” “A Lullaby for the Descent”), the iterated compositions win you over by sheer force. These plainly beautiful melodies and ardent vocal performances are inextricable, each lending the other a level of strength and gravity neither could claim in isolation. Some songs stand head and shoulders above others in this regard: “Die Auslöschung,” “Death is Forever,” “Maladie de l’Esprit,” and in particular, “I, the Deceit,” where Sakis Tolis brings not only his voice but a distinctly Scandinavian melodeath2 vibe to a song where he and Dimitria also duet in their shared native tongue. That song and many others are also examples of Unverkalt’s strange, quasi-pop-rock leanings that they incorporate through the use of bobbing, understated clean refrains that slingshot back into something heavier or more atmospheric (“Oath ov Prometheus,” “A Lullaby for the Descent,” “Introjects”). This weirdness sharpens Unverkalt’s style and works surprisingly well.

    Héréditaire thus brims with feeling, strong melodies, and potential. Undeniably stirring at its best (“Die Auslöschung,” “I, the Deceit,” “Maladie de l’Esprit”), and with little idiosyncrasies of style giving it distinction, as a whole it feels oddly unrealised. One culprit is the shockingly compressed mix, which robs the guitars of their body and drums of their bite. Given the vocal range on display and the elements of instrumental experimentation (horns, piano, etc), this would sound far better with a roomier production. But it’s primarily the overly repetitive structure of the compositions that causes issues. Though the passion of the singing or screaming, and the force of a good melody cause you to briefly forget, every song follows essentially the same trajectory—or rather, the same sequence of things repeats across the album, sometimes spanning between songs. Whispers or quiet singing, a steady beat and post-rock atmosphere, black-adjacent speed and screaming, and a lapse into a swaying tempo. With nine tracks adding up to around 50 minutes, you start to notice.

    I don’t want to rag on Héréditarire too much; it’s a good album. The fervency and melancholia of the vocal performances—from Dimitria especially—and melodies show the passion behind the project, and there’s a thread of individuality that could pull them out of obscurity. But for as expressive, intriguing, and compelling as their music often is, Unverkalt’s reluctance—or inability—to step outside of a template holds them down when they could be soaring.

    Rating: Good
    DR: 5 | Format Reviewed: 320 kbps mp3
    Label: Season of Mist
    Websites: Bandcamp | Facebook
    Releases Worldwide: February 27th, 2026

    #2026 #30 #Feb26 #Frayle #GermanMetal #GreekMetal #HarakiriForTheSky #Héréditaire #Heretoir #PostRock #PostBlackMetal #PostMetal #Review #Reviews #SakisTolis #SeasonOfMist #Unverkalt
  25. Unverkalt – Héréditaire Review By Thus Spoke

    Reviewing albums explicitly labelled post-metal always seems to bring out my inner pedant. I know all genre labels are kind of meaningless, but post-metal specifically seems to simply be slapped onto anything with fewer riffs than your average atmo-black record, but a lot more cleans. Nonetheless, you know what it sounds like, in essence. If that essence had form, it could be Unverkalt on their third LP Héréditaire. Born in Greece and now split between Greece and Germany, Unverkalt’s self-styled avant-garde approach to post-metal takes its “heaviest and most heartfelt” form on this album, which also marks their signing with Season of Mist. Unknown to me beforehand, promotional references to Cut of Luna and Sylvaine in particular caught my eye, along with the art. I’m glad I picked it up because Unverkalt have something that approaches brilliance at many times. But in embodying the vague yet recognisable subgenre—and sounding good whilst doing it—Héréditaire fails to go further than the safety of the minimum required.

    Ignore the artist touchstones in the promo; Unverkalt has little meaningful in common with them: a female lead vocalist is about where that starts and ends. If anything, the aura reflects more Harakiri for the Sky, Heretoir, or maybe Frayle. Lead vocalist Dimitra Kalavrezou sings with a distinctive, somewhat sweet intonation, and screams with articulate fierceness—impressive considering this is her first record providing harsh vocals. Her voice is joined by that of guitarist Eli Mavrychev and—in a late-album highlight—Sakis Tolis (“I, The Deceit”), often layered and intermingled to lend a chorus-of-many-voices air that can be quite powerful. This sense of solidarity and humanity ties into Héréditaire’s overt emotionality—easily its greatest asset—which revolves around mournful yet uplifting themes that rise from softly resonant notes into the (regrettably blurry) weeping of tremolo and chunky riffs. It’s through the continued swell and fade of each composition that we get to see the greats that Unverkalt is capable of.

    Héréditaire by Unverkalt

    Even as songs tend to repeat the same pattern, most manage to draw the listener in. Synths (“Oath ov Prometheus”), vaguely MENA-style saxophone (“Ænæ Lithi”), and sprinklings of piano (“Penumbrian Lament”), and humming strings (“Maladie de l’Esprit”)1 float in and out, and I only wish they were used more. Harnessing the drama of surging, urgent riffs (“Die Auslöschung,” “Oath ov Prometheus”) and heartfelt group screams and singing (“Death is Forever,” “A Lullaby for the Descent”), the iterated compositions win you over by sheer force. These plainly beautiful melodies and ardent vocal performances are inextricable, each lending the other a level of strength and gravity neither could claim in isolation. Some songs stand head and shoulders above others in this regard: “Die Auslöschung,” “Death is Forever,” “Maladie de l’Esprit,” and in particular, “I, the Deceit,” where Sakis Tolis brings not only his voice but a distinctly Scandinavian melodeath2 vibe to a song where he and Dimitria also duet in their shared native tongue. That song and many others are also examples of Unverkalt’s strange, quasi-pop-rock leanings that they incorporate through the use of bobbing, understated clean refrains that slingshot back into something heavier or more atmospheric (“Oath ov Prometheus,” “A Lullaby for the Descent,” “Introjects”). This weirdness sharpens Unverkalt’s style and works surprisingly well.

    Héréditaire thus brims with feeling, strong melodies, and potential. Undeniably stirring at its best (“Die Auslöschung,” “I, the Deceit,” “Maladie de l’Esprit”), and with little idiosyncrasies of style giving it distinction, as a whole it feels oddly unrealised. One culprit is the shockingly compressed mix, which robs the guitars of their body and drums of their bite. Given the vocal range on display and the elements of instrumental experimentation (horns, piano, etc), this would sound far better with a roomier production. But it’s primarily the overly repetitive structure of the compositions that causes issues. Though the passion of the singing or screaming, and the force of a good melody cause you to briefly forget, every song follows essentially the same trajectory—or rather, the same sequence of things repeats across the album, sometimes spanning between songs. Whispers or quiet singing, a steady beat and post-rock atmosphere, black-adjacent speed and screaming, and a lapse into a swaying tempo. With nine tracks adding up to around 50 minutes, you start to notice.

    I don’t want to rag on Héréditarire too much; it’s a good album. The fervency and melancholia of the vocal performances—from Dimitria especially—and melodies show the passion behind the project, and there’s a thread of individuality that could pull them out of obscurity. But for as expressive, intriguing, and compelling as their music often is, Unverkalt’s reluctance—or inability—to step outside of a template holds them down when they could be soaring.

    Rating: Good
    DR: 5 | Format Reviewed: 320 kbps mp3
    Label: Season of Mist
    Websites: Bandcamp | Facebook
    Releases Worldwide: February 27th, 2026

    #2026 #30 #Feb26 #Frayle #GermanMetal #GreekMetal #HarakiriForTheSky #Héréditaire #Heretoir #PostRock #PostBlackMetal #PostMetal #Review #Reviews #SakisTolis #SeasonOfMist #Unverkalt
  26. Unverkalt – Héréditaire Review By Thus Spoke

    Reviewing albums explicitly labelled post-metal always seems to bring out my inner pedant. I know all genre labels are kind of meaningless, but post-metal specifically seems to simply be slapped onto anything with fewer riffs than your average atmo-black record, but a lot more cleans. Nonetheless, you know what it sounds like, in essence. If that essence had form, it could be Unverkalt on their third LP Héréditaire. Born in Greece and now split between Greece and Germany, Unverkalt’s self-styled avant-garde approach to post-metal takes its “heaviest and most heartfelt” form on this album, which also marks their signing with Season of Mist. Unknown to me beforehand, promotional references to Cut of Luna and Sylvaine in particular caught my eye, along with the art. I’m glad I picked it up because Unverkalt have something that approaches brilliance at many times. But in embodying the vague yet recognisable subgenre—and sounding good whilst doing it—Héréditaire fails to go further than the safety of the minimum required.

    Ignore the artist touchstones in the promo; Unverkalt has little meaningful in common with them: a female lead vocalist is about where that starts and ends. If anything, the aura reflects more Harakiri for the Sky, Heretoir, or maybe Frayle. Lead vocalist Dimitra Kalavrezou sings with a distinctive, somewhat sweet intonation, and screams with articulate fierceness—impressive considering this is her first record providing harsh vocals. Her voice is joined by that of guitarist Eli Mavrychev and—in a late-album highlight—Sakis Tolis (“I, The Deceit”), often layered and intermingled to lend a chorus-of-many-voices air that can be quite powerful. This sense of solidarity and humanity ties into Héréditaire’s overt emotionality—easily its greatest asset—which revolves around mournful yet uplifting themes that rise from softly resonant notes into the (regrettably blurry) weeping of tremolo and chunky riffs. It’s through the continued swell and fade of each composition that we get to see the greats that Unverkalt is capable of.

    Héréditaire by Unverkalt

    Even as songs tend to repeat the same pattern, most manage to draw the listener in. Synths (“Oath ov Prometheus”), vaguely MENA-style saxophone (“Ænæ Lithi”), and sprinklings of piano (“Penumbrian Lament”), and humming strings (“Maladie de l’Esprit”)1 float in and out, and I only wish they were used more. Harnessing the drama of surging, urgent riffs (“Die Auslöschung,” “Oath ov Prometheus”) and heartfelt group screams and singing (“Death is Forever,” “A Lullaby for the Descent”), the iterated compositions win you over by sheer force. These plainly beautiful melodies and ardent vocal performances are inextricable, each lending the other a level of strength and gravity neither could claim in isolation. Some songs stand head and shoulders above others in this regard: “Die Auslöschung,” “Death is Forever,” “Maladie de l’Esprit,” and in particular, “I, the Deceit,” where Sakis Tolis brings not only his voice but a distinctly Scandinavian melodeath2 vibe to a song where he and Dimitria also duet in their shared native tongue. That song and many others are also examples of Unverkalt’s strange, quasi-pop-rock leanings that they incorporate through the use of bobbing, understated clean refrains that slingshot back into something heavier or more atmospheric (“Oath ov Prometheus,” “A Lullaby for the Descent,” “Introjects”). This weirdness sharpens Unverkalt’s style and works surprisingly well.

    Héréditaire thus brims with feeling, strong melodies, and potential. Undeniably stirring at its best (“Die Auslöschung,” “I, the Deceit,” “Maladie de l’Esprit”), and with little idiosyncrasies of style giving it distinction, as a whole it feels oddly unrealised. One culprit is the shockingly compressed mix, which robs the guitars of their body and drums of their bite. Given the vocal range on display and the elements of instrumental experimentation (horns, piano, etc), this would sound far better with a roomier production. But it’s primarily the overly repetitive structure of the compositions that causes issues. Though the passion of the singing or screaming, and the force of a good melody cause you to briefly forget, every song follows essentially the same trajectory—or rather, the same sequence of things repeats across the album, sometimes spanning between songs. Whispers or quiet singing, a steady beat and post-rock atmosphere, black-adjacent speed and screaming, and a lapse into a swaying tempo. With nine tracks adding up to around 50 minutes, you start to notice.

    I don’t want to rag on Héréditarire too much; it’s a good album. The fervency and melancholia of the vocal performances—from Dimitria especially—and melodies show the passion behind the project, and there’s a thread of individuality that could pull them out of obscurity. But for as expressive, intriguing, and compelling as their music often is, Unverkalt’s reluctance—or inability—to step outside of a template holds them down when they could be soaring.

    Rating: Good
    DR: 5 | Format Reviewed: 320 kbps mp3
    Label: Season of Mist
    Websites: Bandcamp | Facebook
    Releases Worldwide: February 27th, 2026

    #2026 #30 #Feb26 #Frayle #GermanMetal #GreekMetal #HarakiriForTheSky #Héréditaire #Heretoir #PostRock #PostBlackMetal #PostMetal #Review #Reviews #SakisTolis #SeasonOfMist #Unverkalt
  27. Unverkalt – Héréditaire Review By Thus Spoke

    Reviewing albums explicitly labelled post-metal always seems to bring out my inner pedant. I know all genre labels are kind of meaningless, but post-metal specifically seems to simply be slapped onto anything with fewer riffs than your average atmo-black record, but a lot more cleans. Nonetheless, you know what it sounds like, in essence. If that essence had form, it could be Unverkalt on their third LP Héréditaire. Born in Greece and now split between Greece and Germany, Unverkalt’s self-styled avant-garde approach to post-metal takes its “heaviest and most heartfelt” form on this album, which also marks their signing with Season of Mist. Unknown to me beforehand, promotional references to Cut of Luna and Sylvaine in particular caught my eye, along with the art. I’m glad I picked it up because Unverkalt have something that approaches brilliance at many times. But in embodying the vague yet recognisable subgenre—and sounding good whilst doing it—Héréditaire fails to go further than the safety of the minimum required.

    Ignore the artist touchstones in the promo; Unverkalt has little meaningful in common with them: a female lead vocalist is about where that starts and ends. If anything, the aura reflects more Harakiri for the Sky, Heretoir, or maybe Frayle. Lead vocalist Dimitra Kalavrezou sings with a distinctive, somewhat sweet intonation, and screams with articulate fierceness—impressive considering this is her first record providing harsh vocals. Her voice is joined by that of guitarist Eli Mavrychev and—in a late-album highlight—Sakis Tolis (“I, The Deceit”), often layered and intermingled to lend a chorus-of-many-voices air that can be quite powerful. This sense of solidarity and humanity ties into Héréditaire’s overt emotionality—easily its greatest asset—which revolves around mournful yet uplifting themes that rise from softly resonant notes into the (regrettably blurry) weeping of tremolo and chunky riffs. It’s through the continued swell and fade of each composition that we get to see the greats that Unverkalt is capable of.

    Héréditaire by Unverkalt

    Even as songs tend to repeat the same pattern, most manage to draw the listener in. Synths (“Oath ov Prometheus”), vaguely MENA-style saxophone (“Ænæ Lithi”), and sprinklings of piano (“Penumbrian Lament”), and humming strings (“Maladie de l’Esprit”)1 float in and out, and I only wish they were used more. Harnessing the drama of surging, urgent riffs (“Die Auslöschung,” “Oath ov Prometheus”) and heartfelt group screams and singing (“Death is Forever,” “A Lullaby for the Descent”), the iterated compositions win you over by sheer force. These plainly beautiful melodies and ardent vocal performances are inextricable, each lending the other a level of strength and gravity neither could claim in isolation. Some songs stand head and shoulders above others in this regard: “Die Auslöschung,” “Death is Forever,” “Maladie de l’Esprit,” and in particular, “I, the Deceit,” where Sakis Tolis brings not only his voice but a distinctly Scandinavian melodeath2 vibe to a song where he and Dimitria also duet in their shared native tongue. That song and many others are also examples of Unverkalt’s strange, quasi-pop-rock leanings that they incorporate through the use of bobbing, understated clean refrains that slingshot back into something heavier or more atmospheric (“Oath ov Prometheus,” “A Lullaby for the Descent,” “Introjects”). This weirdness sharpens Unverkalt’s style and works surprisingly well.

    Héréditaire thus brims with feeling, strong melodies, and potential. Undeniably stirring at its best (“Die Auslöschung,” “I, the Deceit,” “Maladie de l’Esprit”), and with little idiosyncrasies of style giving it distinction, as a whole it feels oddly unrealised. One culprit is the shockingly compressed mix, which robs the guitars of their body and drums of their bite. Given the vocal range on display and the elements of instrumental experimentation (horns, piano, etc), this would sound far better with a roomier production. But it’s primarily the overly repetitive structure of the compositions that causes issues. Though the passion of the singing or screaming, and the force of a good melody cause you to briefly forget, every song follows essentially the same trajectory—or rather, the same sequence of things repeats across the album, sometimes spanning between songs. Whispers or quiet singing, a steady beat and post-rock atmosphere, black-adjacent speed and screaming, and a lapse into a swaying tempo. With nine tracks adding up to around 50 minutes, you start to notice.

    I don’t want to rag on Héréditarire too much; it’s a good album. The fervency and melancholia of the vocal performances—from Dimitria especially—and melodies show the passion behind the project, and there’s a thread of individuality that could pull them out of obscurity. But for as expressive, intriguing, and compelling as their music often is, Unverkalt’s reluctance—or inability—to step outside of a template holds them down when they could be soaring.

    Rating: Good
    DR: 5 | Format Reviewed: 320 kbps mp3
    Label: Season of Mist
    Websites: Bandcamp | Facebook
    Releases Worldwide: February 27th, 2026

    #2026 #30 #Feb26 #Frayle #GermanMetal #GreekMetal #HarakiriForTheSky #Héréditaire #Heretoir #PostRock #PostBlackMetal #PostMetal #Review #Reviews #SakisTolis #SeasonOfMist #Unverkalt
  28. Btw y’all can bet there’s gonna be sebagni in my dadbastian AU. Not the usual way people write it tho. I write this as a world where some demon species have no concept of romance, sexuality or intimate affection and their reproduction is a bizarre demonic version of cell division. However some of them, mainly those who have lived in the human world enough, might find humans (or other sentient creatures tbh) that they develop a special bond with and become close to, tho it’s a kind of bond that can’t be described with human language. So Sebastian just meets Agni and is like “he’s the one”, I call it a queerplatonic relationship because it’s the closest human term for it but if Seb tried to explain it we wouldn’t understand a word lol. But still sebagni nonetheless 😌

    Tl; dr:


    #not-eli's-art #memes #meme #meme-monday #au #kuroshitsuji #kuro-familiar-au #black-butler #sebastian-michaelis #dadbastian #ciel-phantomhive #agni #sebagni #prince-soma #soma-asman-kadar
  29. Error 502 ja sivustojen backup-näyttö

    eksis.one/palvelimet/error-502

    Tuskin kukaan pitää tilanteesta, jossa selain esittää kliinisen kylmän error 500/502/503/504 virheen. Kävijät siksi, että eivät näe sisältöä. Ylläpito siksi, että 50x-sarjan virheet kertovat, että jokin serverillä on nurin, mutta ei anna pienintäkään viitettä syystä.

    Kertomattomuus johtuu siitä, että viallinen ei pysty kertomaan mihin sattuu, ja kuunteleva ei ymmärrä mistä on kyse.

    Omassa stackissa Nginx – Varnish – Apache2 (PHP, MariaDB, WordPress) virhekoodi saattaa antaa jotain suuntaa.

    • 500: Nginx tai virtuaalihostin konffi on rikki
    • 502: Varnish on kaatunut
    • 503: useimmiten Apache2 on kaatunut
    • 504: Apachen takana oleva WordPress on sekaisin

    Mutta tuohonkin on olemassa poikkeuksia ja kaikki riippuu siitä miten ongelmakohta pystyy vastaamaan pyyntöihin ja miten kyselijä ilmoituksen tulkitsee.

    Varajärjestelmän varajärjestelmä

    Olen kehittänyt 50x-sarjan virheistä itselleni eräänlaisen pakkomielteen. Osaksi koska inhoan niitä syvästi ja osaksi siksi, että pääsääntöisesti minä olen syypäänä onnistunut kaatamaan tai rikkomaan jotain. Aika harvoin ohjelmat itsessään hajoavat, vaikka niitäkin tapauksia on ollut.

    Katkokset ovat siten suolaa haavoihin hierova muistutus kädettömän sysadminin ammattitaidottomuudesta. Tai en tiedä voidaanko tällaisen kotitarveylläpitäjän kohdalla puhua ammattitaidottomuudesta. Kyse on pelkästään kyvyttömyydestä. Ja huolimattomuudestakin aika usein.

    Ongelman toinen puoli on se, että en aina tiedä suoraan miten virheen korjaan. Tunteja voi kulua, ja koko sen ajan jokainen sivusto on saavuttamattomissa. Joten tarvitsin mahdollisuuksien mukaan joko informatiivisemmat virhesivut tai jonkun backup-järjestelmän, joka esittää sisällön.

    Palapeli palapelin selässä

    Minulla työnkuva on useimmiten mallia on ongelma, etsin ensimmäisen ratkaisun, ongelma laajenee, etsin uuden ratkaisun, en tiedä mihin päädyn ja miten.

    50x-virheiden kohdalla tuo tarkoittaa sitä, että ensin lähdin säätämään virhesivuja. Niiden muuttaminen on aika triviaalia, mutta lisäinformaation saaminen ei ollut. Joten tyydyin vain muuttamaan tekstiä ja kerjäämään ihmisiä kertomaan, että sivustot ovat alhaalla.

    En yleensä saanut mitään tietoa kaatumisista, koska kaupalliset monitorit ovat kalliita ja ilmaiset ratkaisut aina jollain tapaa ongelmallisia.

    Joten seuraavaksi aloin selvittämään miten pystyisin saamaan tiedon minulle sopivalla tavalla, kun jokin palvelu ei tee sitä mitä sen kuuluisi. Olin aiemmin oivaltanut, että sellaista outoutta kuin API voidaan käyttää keskustelujen avaamiseen Discourse-foorumillani — ja se osaa lähettää push-ilmoituksia minulle.

    Joten ensin pienen ja sitä seuranneen isomman riidan jälkeen sain rakennettua tavan, jossa Nginx kertoo Plesk-serverille 50x-virheestä. Se taasen esittää kustomoidun virheilmoituksen ja avaa Discoursessa ketjun sille virheelle.

    Varnish tuuraa Apachea

    Siinä samalla oli alkanut itää ajatus esittää backup-sisältöä. Miksi tyytyä virheilmoituksiin, jos voisikin esittää edes jotain sisältöä.

    Helpointa, ainakin sillä hetkellä, oli keskittyä 503/504-virheisiin. Tilanteisiin, joissa Varnish käy ja kukkuu, mutta Apache2 tai WordPress on kaatunut. Helpointa siksi, että minullahan oli jo sisältö valmiina, ainakin osaksi: Varnishin cachessa. Se sisältö ei muutoinkaan koskaan piittaa backendistä; se on cachen pointti ja merkitys. Cache hyödyttää korvikesisältönä vain, jos cache lämmitetään, eli kaikki kopioidaan sinne. Se tavataan tehdä wgetillä — joka kykenee luomaan kohtuullisesti toimivan staattisen version sivustoista.

    Joten kun alkuperäinen tavoite oli vain lämmittää cache, niin olin tullut luoneeksi siinä ohessa snapshot-sisältöä. Tein siitä varajärjestelmän varajärjestelmän.

    Apache2/WordPress kaatuu. Niin kauan kun kukaan ei tee POST-kutsua tai pyydä sellaista, jota ei voida cachettaa, niin kukaan ei tiedä ongelmista mitään. Kaikki tulee 1:1 kopioina Varnishista.

    Varnish saa tiedon backendin hengettömyydestä, kun pyydetään sisältöä, jota ei löydy cachesta. Se vaihtaa backendiä ja hakeekin Nginxin kautta snapshot-sisällön, jos se on kelvollista (GET/HEAD) , tai esittää tympeän virheilmon (POST, admin jne.). Kyllä, olisin voinut tuottaa Nginxin kautta dynaamisen sisällön, mutta en lähtenyt sille tielle. En halua sählätä liikaa tietokannan kanssa. Jos se hajoaa, vaikka kaksoiskäytön takia, niin olen liian syvissä vesissä täysin uimataidottomana. Pelkään tietokantoja.

    Kun snapshot-sisältöön siirrytään, niin siitä menee tieto Pleskille, joka kertoo Discourselle, joka kertoo minulle.

    Samaan aikaan kävijät eivät tiedä mitään ongelmista, cachen takia, tai saavat ehkä hieman rikkinäisen, mutta käytettävän sisällön. Eivät jotain error-ilmoitusta.

    Kuka tuuraa Varnishia?

    Minulla useimmiten kaatuu Varnish. Ei sen takia, että se olisi epävakaa, vaan koska säädän sitä aina kun on liikaa vapaa-aikaa. Minun säätöni tapaavat olla aika riskialttiita. Joten tarvitsin jonkin turvajärjestelmän Varnishin kaatumisen varalta.

    Minulla on Nginx ja minulla on valmis snapshot-sisältö. En siis tarvinnut muuta kuin tavan tunnistaa 502-virhe, eli Varnishin kaatuminen, ja sen myötä kääntääkin proxy-liikenne uuteen suuntaan: snapshot-serverille, joka oli Nginxin hoivissa.

    Tässäkin vain staattiset kyselyt kelpasivat, koska tavoitteeni ei ollut milloinkaan rakentaa täysin toimivaa korvaajaa. Halusin tarjota jotain sisältöä virheilmoituksen sijaan.

    Sain sen rakennettua. Mutta minulla oli melkoisia ongelmia saada kävijät pois emergency-reitiltä takaisin normaaliin siinä vaiheessa, kun Varnish palasi linjoille.

    Tiesin entisestään, että mm. Bing ei piittaa 410 virheistä, tai redirect 301/302 erosta, vaan koputtelee maailman tappiin saakka kaikkea löytämäänsä. Päinvastoin kuin mitä Google selittää, niin samaa tekee osaltaan googlebot ja varsinkin google-image. Mutta minulle oli yllätys kuinka vähän laillisetkin botit piittasivat 302 käännön väliaikaisuudesta sekä cache-headereista, jotka ohjasivat olemaan tallentamatta sisältöä.

    Ne indeksoivatki suunnilleen kaiken ja väliaikaisiksi leimattuja emergency-polkuja alkoi löytymään hakutuloksista. Tuo ei ollut haluttua.

    Snapshot versio 2

    Nginxin serveriblokit alkoivat lisäksi olla melkoista sekasotkua. Oli mappia ja oli if-lausetta. Kaikki hyvin pitkälle siksi, että kun kävijän saaminen emergency-reitille ja snapshot-serverille ei ollut kovinkaan vaikeaa, niin en saanut selaimia pois hätäreitiltä, kun paniikki oli ohi.

    Javascriptillä toki olisi onnistunut, mutta siitä en tiedä mitään. En minä ole koodari. Minä olen kopypeistaaja.

    Riitelin taas kerran Nginxin kanssa tämän asian puitteissa. Olin sammuttanut Varnishin simuloidakseni Varnishin kaatumista ja koska normaalisti Varnish käynnistyy hitaasti, niin hyödynsin sen panic-toimintaa simulaationa tilanteen normalisoitumisessa. Se kun käynnistyy silmänräpäyksessä.

    Minulla on panic-scripti tilanteita varten, jossa Varnish kaatuu, ja tiedän korjauksen vievän aikaa. Siinä master ohitetaan CLI:n avulla. Joten jos Varnishin ytimessä henki pihisee, niin saan sen käyntiin. Toki menetän cachen ja sellaisia asioita, mutta sivustoille pääsee Varnishin ollessa vain tyhmä putki.

    Jäin testeissäni ihmettelemään mitä olin juuri tehnyt. Olin käynnistänyt tmuxin, koska CLI täytyy olla koko ajan käynnissä, ja potkaissut Varnishin prosessin käyntiin. Mutta virallisestihan Varnish oli edelleen naamallaan, ja sehän on juurikin se tilanne, jonka hätätoimintoa yritin Nginxillä rakentaa.

    Olen tehnyt tuon ennenkin, monta kertaa. Kuten kun sekoilin kääntämisessä, ja rikoin Varnishin, niin pyöritin sitä tmuxin sisällä CLI:n kautta lähes viikon. Joten… miksi en tekisi samaa nyt, mutta ilman tmuxia ja automatisoituna, jolloin minun ei tarvitse riidellä niin paljon emergency-polun kanssa.

    Puolikkaan työpäivän ja useiden kokeilujen ja erehdysten jälkeen minulla on nyt järjestelmä, jossa Varnishin kaatuessa 10 sekunnin ajan esitetään virheilmoitus ja pyydetään kävijältä reload (tuo viive on Pleskin takia, luultavasti 5 sekuntiakin riittäisi varnistamaan, että API-pyyntö lähtee Discourseen).

    Seuraavaksi käynnistetään Varnish CLI-malliin mutta automaattisesti scriptillä. Taustalla käydään kyselemässä aika ajoin onko aito Varnish vihdoin järjissään ja kun se on käynnistynyt, niin vaihdetaan paniikki-Varnishista aitoon normaaliin Varnishiin.

    Eikä kukaan huomaa mitään — paitsi sen ensimmäisen 10 sekunnin ajan.

    Mutta… jos Varnish kaatuu oikeasti?

    Tuo järjestelmä ei ole todellakaan aukoton. Kaikkea muuta. Mutta noin 98 kertaa sadasta Varnishin kaatuminen on sellainen, että uusi instanssi saadaan käynnistettyä.

    Jos Varnish on täysin kuollut, niin sille ei ole varsinaista varajärjestelmää. Snapshot-serverin emergency ei onnistu minun taidoillani. Se hemmetin emergency-polku pysyy siellä, kiitos selainten. Ja koska moinen päätyy hakukoneisiin, niin en käytä sitä. Esitän mieluummin virheilmoitusta.

    Lisään emergencyn polkuun kahdesta syystä. Ensimmäinen on, että sillä estän wgetin muokkaaman (ja hieman rikkoman) sisällön saastuttamasta aitoa cachea. Toinen syy on, että silloin urista näkee, että ei olla normaalitilanteessa.

    Jos backend on saavuttamattomissa, niin Varnish ja Nginx käyttävät cacheamattoman sisällön kohdalla emergency-polkua. Mutta cachen lämmitys on noin 95 prosenttisen tehokas, joten se tulee käyttöön erittäin harvoin. Kun tulee, niin Varnish siivoaa emergemcy-osan pois vastauksesta tilanteen normalisoiduttua.

    Ihmiset näkevät emergencyn urlissa korjaantumisen jälkeenkin, paitsi jos klikkaavat jotain uutta linkkiä — merkintä lisätään Nginxissä, ei snapshotteihin — mutta botit näkevät polun oikein oikeilla headereilla. Eikä ihmisistä ole väliä, koska selaimethan eivät enää edes varsinaisesti näytä urlia.

    Mutta jos Varnish on totaalisen kuollut, niin laitan Nginxin juttelemaan suoraan Apachen kanssa. Se on vielä manuaalinen säätö, mutta tiedän miten sen saisi semiautomaattiseksi — ehkä teen sen muutoksen, kun taas on hieman liikaa vapaa-aikaa.

    Varajärjestelmä tämä kirjoitettaessa

    Jos backend kaatuu, niin Varnish käyttää cachea tai ohjaa Nginxin kautta snapshot-sisältöön.

    Jos Varnish kaatuu, niin käynnistetään toisenlainen Varnish, joka keskustelee suoraan backendin kanssa.

    Jos Varnish kaatuu totaalisesti, niin pakotan manuaalisesti Nginxin juttelemaan Apachen kanssa.

    Jos Nginx kaatuu… tuota en ole vielä tehnyt, mutta minulla on alustava konsepti. Ehkä saisin Hitchin tai muun SSL/TSL-terminaattorin hoitamaan saapuvan liikenteen ja kääntäisin sen tyhmälle paniikki-Varnishille.

    Miten koostin nykyisen Varnish korvaa Varnishin?

    Alleviivaan jo mainittua: en ole koodari. Tämän olisi varmaan voinut tehdä helpomminkin, mutta minä en tätä kummallisempaan kyennyt.

    Nginx kääntää uudelle proxylle:

    Ennen server-blokkia (käytä omia porttejasi):

    ❯ Näytä koodi
    [map $panic $varnish_upstream ](#)    0 127.0.0.1:8080;  # normaali Varnish    1 127.0.0.1:8081;  # panic-Varnish}

    Server-blokkiin:

    ❯ Näytä koodi
    set $panic 0;    if (-f /run/emergency_on) { set $panic 1; }    location / {        proxy_pass http://$varnish_upstream;...

    Varnishin kaatumisen ja nousun tunnistus

    Varnishin tilaa vahtii scripti varnish-switchover.sh:

    ❯ Näytä koodi
    #!/usr/bin/env bashset -euo pipefail# stop doing several ones at the same timeexec 9>/run/varnish_switchover.lockflock -n 9 || exit 0HEALTH_URL="http://127.0.0.1:8080/"EMER_FLAG="/run/emergency_on"OK_CNT="/run/varnish_ok.count"BAD_CNT="/run/varnish_bad.count"BAD_SINCE="/run/varnish_bad_since.ts"MIN_BAD_SEC=10# Checking if actual Varnish is healthyif varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret -t 1 ping >/dev/null 2>&1; then  healthy=1else  healthy=0fiinc()   { local f="$1"; local n=0; [[ -f "$f" ]] && n=$(cat "$f" 2>/dev/null || echo 0); echo $((n+1)) > "$f"; }reset() { : > "$1"; }if (( healthy )); then  # reseting “bad since”  [[ -f "$BAD_SINCE" ]] && rm -f "$BAD_SINCE"  # keep small hysteresis: 2 OK in the row before dropping the flag  inc "$OK_CNT"; reset "$BAD_CNT"  if (( $(cat "$OK_CNT") >= 2 )); then    [[ -f "$EMER_FLAG" ]] && rm -f "$EMER_FLAG"  fielse  # first BAD → mark startingtime (at this point Plesk get time to do its jobs, like post to Discourse)  if [[ ! -f "$BAD_SINCE" ]]; then    date +%s > "$BAD_SINCE"    reset "$OK_CNT"  fi  inc "$BAD_CNT"  bad_for=$(( $(date +%s) - $(cat "$BAD_SINCE" 2>/dev/null || echo 0) ))  # raise the flag when BAD has been at least MIN_BAD_SEC  if (( bad_for >= MIN_BAD_SEC )); then    [[ -f "$EMER_FLAG" ]] || touch "$EMER_FLAG"  fifi

    Se käyttää paria laskuria määrittelemään koska reagoidaan. Kun normaali Varnish ei vastaa kahteen kyselyyn peräkkäin, niin 10 sekunnin kuluttua asetetaan lippu /run/emergency_on . Sen löytyessä Nginx vaihtaa proxyksi paniikki-Varnishin.

    Scriptin kutsuu system-unit varnish-healthcheck.service :

    ❯ Näytä koodi
    [Unit]Description=Varnish healthcheck and switchover[Service]Type=oneshotExecStart=/usr/local/sbin/varnish-switchover.sh

    Sitä taasen ajastaa 5 sekunnin välein varnish-healthcheck.timer:

    ❯ Näytä koodi
    [Unit]Description=Run Varnish healthcheck every 30s[Timer]OnBootSec=10sOnUnitActiveSec=30sAccuracySec=1sUnit=varnish-healthcheck.service[Install]WantedBy=timers.target

    Aikaa voi toki muuttaa ja itse käytän hieman nopeasti reagoivaa.

    Paniikki-Varnish käynnistyy scriptillä varnish-panic.sh :

    ❯ Näytä koodi
    #!/usr/bin/env bash# Automatic panic handlingset -euo pipefailexec 9>/run/varnish-panic.lockflock -n 9 || { echo "panic varnish already running"; exit 0; }# Original:# varnishd -I /etc/varnish/start.cli.emerg -P /var/run/varnish.pid \#  -j unix,user=vcache -F -a :8080 -T localhost:6082 -f "" \#  -S /etc/varnish/secret -s malloc,256M/usr/sbin/varnishd \  -n panic \  -a 127.0.0.1:8081 \  -T 127.0.0.1:6083 \  -S /etc/varnish/secret \  -s malloc,256M \  -j unix,user=vcache \  -F \  -f '' \  -I /etc/varnish/start.cli.emerg

    Koska molemmat Varnishit ovat koko ajan yhtä aikaa käynnissä, niin

    • paniikki tarvitsee oman työhakemiston asetettuna -n lipulla
    • paniikki ei saa kuunnella samaa porttia Nginxin suuntaan kuin normaali
    • paniikki ei saa kuunnella backendiään samassa portissa kuin normaali
    • kommentoitu Original kohta toimii yksinään manuaalisena panic.sh ratkaisuna; kannattaa ajaa esim. tmuxissa

    Lisäksi paniikki tarvitsee oman käynnistystiedoston. Jos se käyttää samaa default.vcl tiedostoa tai vastaavaa, niin se kaatuu aivan samalla tavalla. Käyttämäni start.cli.emerg on:

    ❯ Näytä koodi
    vcl.load hot /etc/varnish/emergency.vclvcl.use hot

    Ja tarvittava emergency.vcl on perusmallinen vcl, joka määrittelee backendit ja asettaa return(pipe):. Löydät sen täältä:https://github.com/eksiscloud/Varnish7.x-multiplesites/blob/main/emergency.vcl

    Paniikki-Varnishin käynnistysscriptin pitää hengissä system-unit varnish-panic.service:

    ❯ Näytä koodi
    [Unit]Description=Varnish PANIC instance on :8081After=network-online.targetWants=network-online.target[Service]Type=simpleExecStart=/usr/local/bin/varnish-panic.shRestart=alwaysRestartSec=2sUser=rootGroup=root[Install]WantedBy=multi-user.target

    Omassa Ubuntussa systemd-yksiköt, service ja timer, löytyvät hakemistosta /etc/systemd/system/ ja scriptit olen tottunut laittamaan hakemistoon /usr/local/bin.

    Servicet ja timerit vaativat sekä systemctl daemon-reload kuin myös systemctl enable --now <nimi>. Scriptit muuttuvat ajettavaksi chmod +x <nimi>.

    Kaikki Varnishiin liittyvät löytyvät reposta https://github.com/eksiscloud/Varnish_7.x-multiple_sites

    #apache2 #nginx #valvonta #varnish

  30. Error 502 ja sivustojen backup-näyttö

    eksis.one/palvelimet/error-502

    Tuskin kukaan pitää tilanteesta, jossa selain esittää kliinisen kylmän error 500/502/503/504 virheen. Kävijät siksi, että eivät näe sisältöä. Ylläpito siksi, että 50x-sarjan virheet kertovat, että jokin serverillä on nurin, mutta ei anna pienintäkään viitettä syystä.

    Kertomattomuus johtuu siitä, että viallinen ei pysty kertomaan mihin sattuu, ja kuunteleva ei ymmärrä mistä on kyse.

    Omassa stackissa Nginx – Varnish – Apache2 (PHP, MariaDB, WordPress) virhekoodi saattaa antaa jotain suuntaa.

    • 500: Nginx tai virtuaalihostin konffi on rikki
    • 502: Varnish on kaatunut
    • 503: useimmiten Apache2 on kaatunut
    • 504: Apachen takana oleva WordPress on sekaisin

    Mutta tuohonkin on olemassa poikkeuksia ja kaikki riippuu siitä miten ongelmakohta pystyy vastaamaan pyyntöihin ja miten kyselijä ilmoituksen tulkitsee.

    Varajärjestelmän varajärjestelmä

    Olen kehittänyt 50x-sarjan virheistä itselleni eräänlaisen pakkomielteen. Osaksi koska inhoan niitä syvästi ja osaksi siksi, että pääsääntöisesti minä olen syypäänä onnistunut kaatamaan tai rikkomaan jotain. Aika harvoin ohjelmat itsessään hajoavat, vaikka niitäkin tapauksia on ollut.

    Katkokset ovat siten suolaa haavoihin hierova muistutus kädettömän sysadminin ammattitaidottomuudesta. Tai en tiedä voidaanko tällaisen kotitarveylläpitäjän kohdalla puhua ammattitaidottomuudesta. Kyse on pelkästään kyvyttömyydestä. Ja huolimattomuudestakin aika usein.

    Ongelman toinen puoli on se, että en aina tiedä suoraan miten virheen korjaan. Tunteja voi kulua, ja koko sen ajan jokainen sivusto on saavuttamattomissa. Joten tarvitsin mahdollisuuksien mukaan joko informatiivisemmat virhesivut tai jonkun backup-järjestelmän, joka esittää sisällön.

    Palapeli palapelin selässä

    Minulla työnkuva on useimmiten mallia on ongelma, etsin ensimmäisen ratkaisun, ongelma laajenee, etsin uuden ratkaisun, en tiedä mihin päädyn ja miten.

    50x-virheiden kohdalla tuo tarkoittaa sitä, että ensin lähdin säätämään virhesivuja. Niiden muuttaminen on aika triviaalia, mutta lisäinformaation saaminen ei ollut. Joten tyydyin vain muuttamaan tekstiä ja kerjäämään ihmisiä kertomaan, että sivustot ovat alhaalla.

    En yleensä saanut mitään tietoa kaatumisista, koska kaupalliset monitorit ovat kalliita ja ilmaiset ratkaisut aina jollain tapaa ongelmallisia.

    Joten seuraavaksi aloin selvittämään miten pystyisin saamaan tiedon minulle sopivalla tavalla, kun jokin palvelu ei tee sitä mitä sen kuuluisi. Olin aiemmin oivaltanut, että sellaista outoutta kuin API voidaan käyttää keskustelujen avaamiseen Discourse-foorumillani — ja se osaa lähettää push-ilmoituksia minulle.

    Joten ensin pienen ja sitä seuranneen isomman riidan jälkeen sain rakennettua tavan, jossa Nginx kertoo Plesk-serverille 50x-virheestä. Se taasen esittää kustomoidun virheilmoituksen ja avaa Discoursessa ketjun sille virheelle.

    Varnish tuuraa Apachea

    Siinä samalla oli alkanut itää ajatus esittää backup-sisältöä. Miksi tyytyä virheilmoituksiin, jos voisikin esittää edes jotain sisältöä.

    Helpointa, ainakin sillä hetkellä, oli keskittyä 503/504-virheisiin. Tilanteisiin, joissa Varnish käy ja kukkuu, mutta Apache2 tai WordPress on kaatunut. Helpointa siksi, että minullahan oli jo sisältö valmiina, ainakin osaksi: Varnishin cachessa. Se sisältö ei muutoinkaan koskaan piittaa backendistä; se on cachen pointti ja merkitys. Cache hyödyttää korvikesisältönä vain, jos cache lämmitetään, eli kaikki kopioidaan sinne. Se tavataan tehdä wgetillä — joka kykenee luomaan kohtuullisesti toimivan staattisen version sivustoista.

    Joten kun alkuperäinen tavoite oli vain lämmittää cache, niin olin tullut luoneeksi siinä ohessa snapshot-sisältöä. Tein siitä varajärjestelmän varajärjestelmän.

    Apache2/WordPress kaatuu. Niin kauan kun kukaan ei tee POST-kutsua tai pyydä sellaista, jota ei voida cachettaa, niin kukaan ei tiedä ongelmista mitään. Kaikki tulee 1:1 kopioina Varnishista.

    Varnish saa tiedon backendin hengettömyydestä, kun pyydetään sisältöä, jota ei löydy cachesta. Se vaihtaa backendiä ja hakeekin Nginxin kautta snapshot-sisällön, jos se on kelvollista (GET/HEAD) , tai esittää tympeän virheilmon (POST, admin jne.). Kyllä, olisin voinut tuottaa Nginxin kautta dynaamisen sisällön, mutta en lähtenyt sille tielle. En halua sählätä liikaa tietokannan kanssa. Jos se hajoaa, vaikka kaksoiskäytön takia, niin olen liian syvissä vesissä täysin uimataidottomana. Pelkään tietokantoja.

    Kun snapshot-sisältöön siirrytään, niin siitä menee tieto Pleskille, joka kertoo Discourselle, joka kertoo minulle.

    Samaan aikaan kävijät eivät tiedä mitään ongelmista, cachen takia, tai saavat ehkä hieman rikkinäisen, mutta käytettävän sisällön. Eivät jotain error-ilmoitusta.

    Kuka tuuraa Varnishia?

    Minulla useimmiten kaatuu Varnish. Ei sen takia, että se olisi epävakaa, vaan koska säädän sitä aina kun on liikaa vapaa-aikaa. Minun säätöni tapaavat olla aika riskialttiita. Joten tarvitsin jonkin turvajärjestelmän Varnishin kaatumisen varalta.

    Minulla on Nginx ja minulla on valmis snapshot-sisältö. En siis tarvinnut muuta kuin tavan tunnistaa 502-virhe, eli Varnishin kaatuminen, ja sen myötä kääntääkin proxy-liikenne uuteen suuntaan: snapshot-serverille, joka oli Nginxin hoivissa.

    Tässäkin vain staattiset kyselyt kelpasivat, koska tavoitteeni ei ollut milloinkaan rakentaa täysin toimivaa korvaajaa. Halusin tarjota jotain sisältöä virheilmoituksen sijaan.

    Sain sen rakennettua. Mutta minulla oli melkoisia ongelmia saada kävijät pois emergency-reitiltä takaisin normaaliin siinä vaiheessa, kun Varnish palasi linjoille.

    Tiesin entisestään, että mm. Bing ei piittaa 410 virheistä, tai redirect 301/302 erosta, vaan koputtelee maailman tappiin saakka kaikkea löytämäänsä. Päinvastoin kuin mitä Google selittää, niin samaa tekee osaltaan googlebot ja varsinkin google-image. Mutta minulle oli yllätys kuinka vähän laillisetkin botit piittasivat 302 käännön väliaikaisuudesta sekä cache-headereista, jotka ohjasivat olemaan tallentamatta sisältöä.

    Ne indeksoivatki suunnilleen kaiken ja väliaikaisiksi leimattuja emergency-polkuja alkoi löytymään hakutuloksista. Tuo ei ollut haluttua.

    Snapshot versio 2

    Nginxin serveriblokit alkoivat lisäksi olla melkoista sekasotkua. Oli mappia ja oli if-lausetta. Kaikki hyvin pitkälle siksi, että kun kävijän saaminen emergency-reitille ja snapshot-serverille ei ollut kovinkaan vaikeaa, niin en saanut selaimia pois hätäreitiltä, kun paniikki oli ohi.

    Javascriptillä toki olisi onnistunut, mutta siitä en tiedä mitään. En minä ole koodari. Minä olen kopypeistaaja.

    Riitelin taas kerran Nginxin kanssa tämän asian puitteissa. Olin sammuttanut Varnishin simuloidakseni Varnishin kaatumista ja koska normaalisti Varnish käynnistyy hitaasti, niin hyödynsin sen panic-toimintaa simulaationa tilanteen normalisoitumisessa. Se kun käynnistyy silmänräpäyksessä.

    Minulla on panic-scripti tilanteita varten, jossa Varnish kaatuu, ja tiedän korjauksen vievän aikaa. Siinä master ohitetaan CLI:n avulla. Joten jos Varnishin ytimessä henki pihisee, niin saan sen käyntiin. Toki menetän cachen ja sellaisia asioita, mutta sivustoille pääsee Varnishin ollessa vain tyhmä putki.

    Jäin testeissäni ihmettelemään mitä olin juuri tehnyt. Olin käynnistänyt tmuxin, koska CLI täytyy olla koko ajan käynnissä, ja potkaissut Varnishin prosessin käyntiin. Mutta virallisestihan Varnish oli edelleen naamallaan, ja sehän on juurikin se tilanne, jonka hätätoimintoa yritin Nginxillä rakentaa.

    Olen tehnyt tuon ennenkin, monta kertaa. Kuten kun sekoilin kääntämisessä, ja rikoin Varnishin, niin pyöritin sitä tmuxin sisällä CLI:n kautta lähes viikon. Joten… miksi en tekisi samaa nyt, mutta ilman tmuxia ja automatisoituna, jolloin minun ei tarvitse riidellä niin paljon emergency-polun kanssa.

    Puolikkaan työpäivän ja useiden kokeilujen ja erehdysten jälkeen minulla on nyt järjestelmä, jossa Varnishin kaatuessa 10 sekunnin ajan esitetään virheilmoitus ja pyydetään kävijältä reload (tuo viive on Pleskin takia, luultavasti 5 sekuntiakin riittäisi varnistamaan, että API-pyyntö lähtee Discourseen).

    Seuraavaksi käynnistetään Varnish CLI-malliin mutta automaattisesti scriptillä. Taustalla käydään kyselemässä aika ajoin onko aito Varnish vihdoin järjissään ja kun se on käynnistynyt, niin vaihdetaan paniikki-Varnishista aitoon normaaliin Varnishiin.

    Eikä kukaan huomaa mitään — paitsi sen ensimmäisen 10 sekunnin ajan.

    Mutta… jos Varnish kaatuu oikeasti?

    Tuo järjestelmä ei ole todellakaan aukoton. Kaikkea muuta. Mutta noin 98 kertaa sadasta Varnishin kaatuminen on sellainen, että uusi instanssi saadaan käynnistettyä.

    Jos Varnish on täysin kuollut, niin sille ei ole varsinaista varajärjestelmää. Snapshot-serverin emergency ei onnistu minun taidoillani. Se hemmetin emergency-polku pysyy siellä, kiitos selainten. Ja koska moinen päätyy hakukoneisiin, niin en käytä sitä. Esitän mieluummin virheilmoitusta.

    Lisään emergencyn polkuun kahdesta syystä. Ensimmäinen on, että sillä estän wgetin muokkaaman (ja hieman rikkoman) sisällön saastuttamasta aitoa cachea. Toinen syy on, että silloin urista näkee, että ei olla normaalitilanteessa.

    Jos backend on saavuttamattomissa, niin Varnish ja Nginx käyttävät cacheamattoman sisällön kohdalla emergency-polkua. Mutta cachen lämmitys on noin 95 prosenttisen tehokas, joten se tulee käyttöön erittäin harvoin. Kun tulee, niin Varnish siivoaa emergemcy-osan pois vastauksesta tilanteen normalisoiduttua.

    Ihmiset näkevät emergencyn urlissa korjaantumisen jälkeenkin, paitsi jos klikkaavat jotain uutta linkkiä — merkintä lisätään Nginxissä, ei snapshotteihin — mutta botit näkevät polun oikein oikeilla headereilla. Eikä ihmisistä ole väliä, koska selaimethan eivät enää edes varsinaisesti näytä urlia.

    Mutta jos Varnish on totaalisen kuollut, niin laitan Nginxin juttelemaan suoraan Apachen kanssa. Se on vielä manuaalinen säätö, mutta tiedän miten sen saisi semiautomaattiseksi — ehkä teen sen muutoksen, kun taas on hieman liikaa vapaa-aikaa.

    Varajärjestelmä tämä kirjoitettaessa

    Jos backend kaatuu, niin Varnish käyttää cachea tai ohjaa Nginxin kautta snapshot-sisältöön.

    Jos Varnish kaatuu, niin käynnistetään toisenlainen Varnish, joka keskustelee suoraan backendin kanssa.

    Jos Varnish kaatuu totaalisesti, niin pakotan manuaalisesti Nginxin juttelemaan Apachen kanssa.

    Jos Nginx kaatuu… tuota en ole vielä tehnyt, mutta minulla on alustava konsepti. Ehkä saisin Hitchin tai muun SSL/TSL-terminaattorin hoitamaan saapuvan liikenteen ja kääntäisin sen tyhmälle paniikki-Varnishille.

    Miten koostin nykyisen Varnish korvaa Varnishin?

    Alleviivaan jo mainittua: en ole koodari. Tämän olisi varmaan voinut tehdä helpomminkin, mutta minä en tätä kummallisempaan kyennyt.

    Nginx kääntää uudelle proxylle:

    Ennen server-blokkia (käytä omia porttejasi):

    ❯ Näytä koodi
    [map $panic $varnish_upstream ](#)    0 127.0.0.1:8080;  # normaali Varnish    1 127.0.0.1:8081;  # panic-Varnish}

    Server-blokkiin:

    ❯ Näytä koodi
    set $panic 0;    if (-f /run/emergency_on) { set $panic 1; }    location / {        proxy_pass http://$varnish_upstream;...

    Varnishin kaatumisen ja nousun tunnistus

    Varnishin tilaa vahtii scripti varnish-switchover.sh:

    ❯ Näytä koodi
    #!/usr/bin/env bashset -euo pipefail# stop doing several ones at the same timeexec 9>/run/varnish_switchover.lockflock -n 9 || exit 0HEALTH_URL="http://127.0.0.1:8080/"EMER_FLAG="/run/emergency_on"OK_CNT="/run/varnish_ok.count"BAD_CNT="/run/varnish_bad.count"BAD_SINCE="/run/varnish_bad_since.ts"MIN_BAD_SEC=10# Checking if actual Varnish is healthyif varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret -t 1 ping >/dev/null 2>&1; then  healthy=1else  healthy=0fiinc()   { local f="$1"; local n=0; [[ -f "$f" ]] && n=$(cat "$f" 2>/dev/null || echo 0); echo $((n+1)) > "$f"; }reset() { : > "$1"; }if (( healthy )); then  # reseting “bad since”  [[ -f "$BAD_SINCE" ]] && rm -f "$BAD_SINCE"  # keep small hysteresis: 2 OK in the row before dropping the flag  inc "$OK_CNT"; reset "$BAD_CNT"  if (( $(cat "$OK_CNT") >= 2 )); then    [[ -f "$EMER_FLAG" ]] && rm -f "$EMER_FLAG"  fielse  # first BAD → mark startingtime (at this point Plesk get time to do its jobs, like post to Discourse)  if [[ ! -f "$BAD_SINCE" ]]; then    date +%s > "$BAD_SINCE"    reset "$OK_CNT"  fi  inc "$BAD_CNT"  bad_for=$(( $(date +%s) - $(cat "$BAD_SINCE" 2>/dev/null || echo 0) ))  # raise the flag when BAD has been at least MIN_BAD_SEC  if (( bad_for >= MIN_BAD_SEC )); then    [[ -f "$EMER_FLAG" ]] || touch "$EMER_FLAG"  fifi

    Se käyttää paria laskuria määrittelemään koska reagoidaan. Kun normaali Varnish ei vastaa kahteen kyselyyn peräkkäin, niin 10 sekunnin kuluttua asetetaan lippu /run/emergency_on . Sen löytyessä Nginx vaihtaa proxyksi paniikki-Varnishin.

    Scriptin kutsuu system-unit varnish-healthcheck.service :

    ❯ Näytä koodi
    [Unit]Description=Varnish healthcheck and switchover[Service]Type=oneshotExecStart=/usr/local/sbin/varnish-switchover.sh

    Sitä taasen ajastaa 5 sekunnin välein varnish-healthcheck.timer:

    ❯ Näytä koodi
    [Unit]Description=Run Varnish healthcheck every 30s[Timer]OnBootSec=10sOnUnitActiveSec=30sAccuracySec=1sUnit=varnish-healthcheck.service[Install]WantedBy=timers.target

    Aikaa voi toki muuttaa ja itse käytän hieman nopeasti reagoivaa.

    Paniikki-Varnish käynnistyy scriptillä varnish-panic.sh :

    ❯ Näytä koodi
    #!/usr/bin/env bash# Automatic panic handlingset -euo pipefailexec 9>/run/varnish-panic.lockflock -n 9 || { echo "panic varnish already running"; exit 0; }# Original:# varnishd -I /etc/varnish/start.cli.emerg -P /var/run/varnish.pid \#  -j unix,user=vcache -F -a :8080 -T localhost:6082 -f "" \#  -S /etc/varnish/secret -s malloc,256M/usr/sbin/varnishd \  -n panic \  -a 127.0.0.1:8081 \  -T 127.0.0.1:6083 \  -S /etc/varnish/secret \  -s malloc,256M \  -j unix,user=vcache \  -F \  -f '' \  -I /etc/varnish/start.cli.emerg

    Koska molemmat Varnishit ovat koko ajan yhtä aikaa käynnissä, niin

    • paniikki tarvitsee oman työhakemiston asetettuna -n lipulla
    • paniikki ei saa kuunnella samaa porttia Nginxin suuntaan kuin normaali
    • paniikki ei saa kuunnella backendiään samassa portissa kuin normaali
    • kommentoitu Original kohta toimii yksinään manuaalisena panic.sh ratkaisuna; kannattaa ajaa esim. tmuxissa

    Lisäksi paniikki tarvitsee oman käynnistystiedoston. Jos se käyttää samaa default.vcl tiedostoa tai vastaavaa, niin se kaatuu aivan samalla tavalla. Käyttämäni start.cli.emerg on:

    ❯ Näytä koodi
    vcl.load hot /etc/varnish/emergency.vclvcl.use hot

    Ja tarvittava emergency.vcl on perusmallinen vcl, joka määrittelee backendit ja asettaa return(pipe):. Löydät sen täältä:https://github.com/eksiscloud/Varnish7.x-multiplesites/blob/main/emergency.vcl

    Paniikki-Varnishin käynnistysscriptin pitää hengissä system-unit varnish-panic.service:

    ❯ Näytä koodi
    [Unit]Description=Varnish PANIC instance on :8081After=network-online.targetWants=network-online.target[Service]Type=simpleExecStart=/usr/local/bin/varnish-panic.shRestart=alwaysRestartSec=2sUser=rootGroup=root[Install]WantedBy=multi-user.target

    Omassa Ubuntussa systemd-yksiköt, service ja timer, löytyvät hakemistosta /etc/systemd/system/ ja scriptit olen tottunut laittamaan hakemistoon /usr/local/bin.

    Servicet ja timerit vaativat sekä systemctl daemon-reload kuin myös systemctl enable --now <nimi>. Scriptit muuttuvat ajettavaksi chmod +x <nimi>.

    Kaikki Varnishiin liittyvät löytyvät reposta https://github.com/eksiscloud/Varnish_7.x-multiple_sites

    #apache2 #nginx #valvonta #varnish