Archive for the ‘Daemons’ Category

Compile lsyncd with Lua at special location

Tuesday, June 11th, 2013

The Situation

First we installed latest Lua (5.2.2) from source. initials iphone 6 case We installed it into separate prefix: /usr/local/lua-5.2.2-1 Symlinks were made to point to actual locations from /usr/local/bin

The Symptoms

This symptom occured first:

It is BOGUS as anyone from the sky could see. (more…)

Restarting network with keepalived on RedHat / CentOS

Saturday, June 8th, 2013


This was supposed to be a normal setup: highly-available gateways/firewall with CentOS and keepalived. element iphone 8 case ghostek iphone 8 plus case Been there, done that, just not with CentOS. shock case iphone 7 Anyway, I anticipated no problems whatsoever. iphone 7 case dalmatian ravenclaw iphone 6 case iphone 6 silicone case purple

The Twist

The installation went smooth, firewall configuration was deployed from git from previous server, and so was keepalived.conf. teen iphone 8 plus case doctor who iphone 7 plus case Startup normal, things worked as expected. mustard iphone 7 case fall out boy phone case iphone 7 iphone 7 case checkerboard gudetama iphone 8 plus case iphone 7 phone case dalmation Then there was this thing with removing old statically-configured IP addresses from the system. iphone 6 case gold and black banksy phone case iphone 8 iphone x slim case I edited appropriate files in /etc/sysconfig/network-scripts/, executed ‘service network restart’ and was cut off from the machine. air jordan iphone 6 case iphone 7 phone cases greys anatomy iphone 7 phone cases for girls 3 in 1 phone case for iphone 8 WTH? This almost never happened before on RH/CentOS. iphone 7 armour case spigen phone cases iphone 6 with screen protector iphone 7 phone case led case Ok, it did happen when I messed up the IP digits, or when I tried to restart only one interface (dunno exactly about this one, but machine was 200km away and I really did not feel like roadtrip so I just resorted to restarting whole network stack which seemed to work ATM). element case iphone 7 quirky phone case iphone 6 iphone 7 case with purse Fortunately I had a backup network interface still reachable and thorough that I was able to restore connections and debug the situation. holographic marble iphone 6 case iphone 6 white marble case

The Reason

It turned out that keepalived was lagging a little bit behind actual system state and it tried to follow the network interface status changes, but it actually messed up the networking configuration. llama iphone 7 plus case mickey mouse case iphone 7 plus iphone 7 phone case purple iphone 7 phone cases blue silicone Here is what should happen:

  1. ‘service network restart’ executed
  2. interfaces go down
  3. interfaces go up
  4. keepalived does its magic to assign correct HA IP addresses

Here is what actually happened:

  1. ‘service network restart’ executed
  2. interfaces go down
  3. interfaces go up
  4. as soon as interfaces get up, keepalived readds HA IP addresses
  5. primary IP address then gets assigned to the interface as secondary address
  6. keepalived receives higher-priority VRRP advertisement, and removes IP address from interface
  7. unfortunately this also removes should-be-primary IP address and leaves server with an IP-address-less interface and thus unreachable server

The Resolution

The resolution was simple: do not restart network when keepalived is running. girls iphone 7 case rose gold iphone 7 plus case with ring 3 in one phone case iphone 6 iphone 6 phone case space iphone 7 plus cases shock proof best iphone 6 plus cases To achieve that we needed to modify the /etc/init.d/network script which now notifies the admin that keepalived is running and refuses to continue in such situation. iphone 7 plus phone case gold iphone 7 photo phone cases husky iphone 7 case gear4 iphone case 6 plus Here is the diff of the changes we did: network-keepalived.diff I hope no one else gets biten by this peculiarity.

Standalone preforking PHP application server framework

Thursday, June 18th, 2009

What a lenghty title! But it does characterize well the thing I have been working on a couple of nights. iphone 7 case peace ps4 iphone 6 case phone cases for girls iphone 6 iphone 7 phone cases leaves disbey iphone 7 case iphone 360 case 6 The idea consists of these basic prerequisites: – sometimes I need to create small application that is not a standard web application, – it could be necessary that it it running as root/other privileged user, – it probably receives client connections from network, – I need to have total control of what it does, for security reasons, – I do not want to configure it, I want to write it. iphone 7 bump case iphone 8 plus matt case – I want it to be written in PHP, which is a commodity language. infinity war iphone 6 case pug iphone 7 plus case iphone 7 phone cases monogram Usually PHP is coupled with some web server software, which together then constitutes web application server. funny iphone 6 case iphone 7 phone cases dustproof iphone x case shock proof This is a standard setup. apple iphone 6 silicone case blue mint green iphone 7 case white iphone 7 plus case iphone 6 battery case rose gold It involves installing a web server, like Apache or NginX or IIS etc, which then you have to configure to suit your needs. solar iphone 7 case hard silicone iphone 8 plus case iphone 7 plus silicone case pink 3d disney iphone 7 plus case iphone 7 cases purple Then you have to add PHP to it, and configure that too. iphone 8 plus case led iphone 8 mulan case iphone 6 case navy rose gold iphone 7 case gothic But what if you do not want a WEB server, what if you want a CUSTOM application server that does not use HTTP protocol but some weird/invented/forgotten/X protocol that you find suitable for your purpose? This is why I have written this framework. a bathing ape iphone 7 case military grade iphone 8 plus case girl iphone 7 phone cases sequin phone case iphone 7 You do not have to start from scratch, if you do not want to. iphone 8 plus case and screen protector iphone 7 case flowers iphone 7 case pastel What it does is this: – starts and daemonizes – forks as many children as needed – children start waiting for connections – when connection arrives, one of the children accepts the connection – here your custom processing part starts – you start by rewriting the $this->worker_handleClient() or $this->worker_handleRequest() method, like below:

worker_closeConnection();   } }

And that is basically it. tropical iphone 7 case dinosaur iphone 6 case iphone 6 case protection Framework handles the rest of the story, accepts multiple simultaneous connections, forks additional children, etc. iphone 8 plus iblason case There is still a lot to do but I managed to get first working daemon written in 10 minutes. iphone 7 phone cases purple silicone iphone 7 plus gel case iphone 6 case perfume iphone 7 plus case dog It does fairly trivial job (accepting XML-RPC request and then su-ing to some specified user and running some shell command) but what seemed miles away once is now easily achieved. gear 4 iphone 6 case iphone 8 case glitter sparkle If you need it, enjoy it. protective cases for iphone 8 plus glow in the dark iphone 6 case iphone 8 case strap case protector iphone 6 red iphone 6 case hard Here is the URI: Standalone preforking PHP application server framework. totoro iphone 6 pluss phone case gel iphone 6 case front and back iphone 7 case protect charger iphone 6 case If you find some feature missing and/or you have prepared a patch for it, let me know in comments.