PyBal

From Wikitech
(Difference between revisions)
Jump to: navigation, search
(oops, not old)
Line 13: Line 13:
  
 
== Setup ==
 
== Setup ==
PyBal is currently installed on [[Pascal]], in directory <tt>/usr/local/pybal/</tt>, and runs in a ''screen'' using the command:
+
PyBal is currently installed on our [[lvs]] hosts, in directory <tt>/usr/sbin</tt>.  Start or stop it by
# python /usr/local/pybal/pybal.py
+
  /etc/init.d/pybal start|stop
(but it will be a proper daemon soon)
+
  
Configuration is in <tt>/etc/pybal/</tt>. <tt>pybal.conf</tt> defines the LVS service parameters, <tt>squids</tt> defines the list of real Squid servers. The format should be fairly self explanatory; they're both more or less using Python assignment / dictionary syntax.
+
Configuration is in <tt>/etc/pybal/</tt>. <tt>pybal.conf</tt> defines the LVS service parameters, <tt>text-squids</tt> defines the list of text squid servers, upload-squids contains the list of upload squids, and >tt>apaches</tt> contains the list of all apaches. Attributes for servers:
 +
 
 +
*weight: a larger number means that more requests get sent to this server in comparison with others
 +
*enabled: either True or False, depnding on whether you want requests to be sent to this server
 +
 
 +
The format should be fairly self explanatory; the files more or less use Python assignment / dictionary syntax.
  
 
PyBal supports multiple LVS services through a single instance and configuration file <tt>pybal.conf</tt>, e.g.:
 
PyBal supports multiple LVS services through a single instance and configuration file <tt>pybal.conf</tt>, e.g.:
Line 33: Line 37:
 
port = 80
 
port = 80
 
scheduler = wlc
 
scheduler = wlc
config = file:///etc/pybal/img-squids
+
config = file:///etc/pybal/upload-squids
 
</pre>
 
</pre>
  
 
'''Beware''', the code as checked out from Subversion has '''<tt>DryRun = True</tt>''' set in <tt>ipvs.py</tt>, meaning that it will not modify any actual IPVS state but only show the commands for debugging. This should be changed to a commandline option, but for now edit that file to <tt>DryRun = False</tt>.
 
'''Beware''', the code as checked out from Subversion has '''<tt>DryRun = True</tt>''' set in <tt>ipvs.py</tt>, meaning that it will not modify any actual IPVS state but only show the commands for debugging. This should be changed to a commandline option, but for now edit that file to <tt>DryRun = False</tt>.
  
The configuration is backed up in <tt>/home/wikipedia/conf/pybal</tt>.  
+
The configuration files are (manually) backed up in <tt>/home/wikipedia/conf/pybal</tt>.  
  
 
== Howto ==
 
== Howto ==

Revision as of 17:25, 11 August 2009

PyBal is a LVS monitoring script quite similar to lvsmon. It's written in Python using the Twisted framework.

At this moment, just a few features distinguish it from lvsmon:

  • It's using asynchronous communication, and thus runs all checks in parallel instead of sequentially
  • It has an extra monitoring method called IdleConnection, which keeps an idle connection open to all squids, and therefore notices immediately when the Squid processes are shut down / crashing
  • It can fetch server lists over HTTP as well as from the local filesystems

...but I intend to polish it more, and extend it with useful things.

The script is in MediaWiki CVS, module pybal.

-- Mark

Setup

PyBal is currently installed on our lvs hosts, in directory /usr/sbin. Start or stop it by

 /etc/init.d/pybal start|stop

Configuration is in /etc/pybal/. pybal.conf defines the LVS service parameters, text-squids defines the list of text squid servers, upload-squids contains the list of upload squids, and >tt>apaches</tt> contains the list of all apaches. Attributes for servers:

  • weight: a larger number means that more requests get sent to this server in comparison with others
  • enabled: either True or False, depnding on whether you want requests to be sent to this server

The format should be fairly self explanatory; the files more or less use Python assignment / dictionary syntax.

PyBal supports multiple LVS services through a single instance and configuration file pybal.conf, e.g.:

[text]
protocol = tcp
ip = 145.97.39.155
port = 80
scheduler = wlc
config = file:///etc/pybal/text-squids

[images]
protocol = tcp
ip = 145.97.39.156
port = 80
scheduler = wlc
config = file:///etc/pybal/upload-squids

Beware, the code as checked out from Subversion has DryRun = True set in ipvs.py, meaning that it will not modify any actual IPVS state but only show the commands for debugging. This should be changed to a commandline option, but for now edit that file to DryRun = False.

The configuration files are (manually) backed up in /home/wikipedia/conf/pybal.

Howto

Depool a server

Either:

  • Set 'enabled': False, in which case PyBal keeps monitoring it, but keeps it unpooled, or
  • Comment the entire line in the config file, in which case PyBal doesn't even know about it

PyBal rereads its realserver config files every minute, so there's no need to restart it.

Personal tools
Namespaces

Variants
Actions
Navigation
Ops documentation
Wiki
Toolbox