haproxy-cluster 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,7 +3,9 @@ haproxy-cluster
3
3
 
4
4
  > "Can we survive a rolling restart?"
5
5
  >
6
- > "How many concurrent connections right now across all load balancers?"
6
+ > "How many transactions per second am I seeing?"
7
+ >
8
+ > "What's my session backlog?"
7
9
 
8
10
  While there are already a handfull of [HA Proxy](http://haproxy.1wt.edu) abstraction layers on RubyGems, I wanted to be able to answer questions like those above and more, quickly, accurately, and easily. So here's one more for the pile.
9
11
 
@@ -1,3 +1,3 @@
1
1
  class HAProxyCluster
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haproxy-cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &70251272059180 !ruby/object:Gem::Requirement
16
+ requirement: &70189121153160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,44 +21,11 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70251272059180
25
- description: ! "haproxy-cluster\n===============\n\n> \"Can we survive a rolling restart?\"\n>\n>
26
- \"How many concurrent connections right now across all load balancers?\"\n\nWhile
27
- there are already a handfull of [HA Proxy](http://haproxy.1wt.edu) abstraction layers
28
- on RubyGems, I wanted to be able to answer questions like those above and more,
29
- quickly, accurately, and easily. So here's one more for the pile.\n\n`HAProxyCluster::Member`
30
- provides an ORM for HA Proxy's status page.\n\n`HAProxyCluster` provides a simple
31
- map/reduce-inspired framework on top of `HAProxyCluster::Member`.\n\n`haproxy_cluster`
32
- provides a shell scripting interface for `HAProxyCluster`. Exit codes are meaningful
33
- and intended to be useful from Nagios.\n\nDo you deploy new code using a sequential
34
- restart of application servers? Using this common pattern carelessly can result
35
- in too many servers being down at the same time, and cutomers seeing errors. `haproxy_cluster`
36
- can prevent this by ensuring that every load balancer agrees that the application
37
- is up at each stage in the deployment. In the example below, we will deploy a new
38
- WAR to three Tomcat instances which are fronted by two HA Proxy instances. HA Proxy
39
- has been configured with `option httpchk /check`, a path which only returns an affirmative
40
- status code when the application is ready to serve requests.\n\n```bash\n#!bin/bash\nset
41
- -o errexit\nservers=\"server1.example.com server2.example.com server3.example.com\"\nload_balancers=\"https://lb1.example.com:8888
42
- http://lb2.example.com:8888\"\n\nfor server in $servers ; do\n haproxy_cluster
43
- --timeout=300 --eval \"wait_until(true){ myapp.rolling_restartable? }\" $load_balancers\n
44
- \ scp myapp.war $server:/opt/tomcat/webapps\ndone\n```\n\nThe code block passed
45
- to `--eval` will not return until every load balancer reports that at least 80%
46
- of the backend servers defined for \"myapp\" are ready to serve requests. If this
47
- takes more than 5 minutes (300 seconds), the whole deployment is halted.\n\nMaybe
48
- you'd like to know how many transactions per second your whole cluster is processing.\n\n
49
- \ $ haproxy_cluster --eval 'poll{ puts members.map{|m|m.myapp.rate}.inject(:+)
50
- }' $load_balancers\n\nInstallation\n------------\n\n`gem install haproxy-cluster`\n\nRequires
51
- Ruby 1.9.2 and depends on RestClient.\n\nNon-Features\n------------\n\n* Doesn't
52
- try to modify configuration files. Use [haproxy-tools](https://github.com/subakva/haproxy-tools),
53
- [rhaproxy](https://github.com/jjuliano/rhaproxy), [haproxy_join](https://github.com/joewilliams/haproxy_join),
54
- or better yet, [Chef](http://www.opscode.com/chef) for that.\n* Doesn't talk to
55
- sockets, yet. Use [haproxy-ruby](https://github.com/inkel/haproxy-ruby) for now
56
- if you need this. I intend to add support for this using `Net::SSH` and `socat(1)`
57
- but for now HTTP is enough for my needs.\n\nProTip\n------\n\nHA Proxy's awesome
58
- creator Willy Tarrreau loves [big text files](http://haproxy.1wt.eu/download/1.5/doc/configuration.txt)
59
- and [big, flat web pages](http://haproxy.1wt.eu/). If smaller, hyperlinked documents
60
- are more your style, you should know about the two alternative documentation sources:\n\n*
61
- http://code.google.com/p/haproxy-docs/\n* http://cbonte.github.com/haproxy-dconv/configuration-1.5.html\n\n"
24
+ version_requirements: *70189121153160
25
+ description: ! " Ruby Gem and command line tool for quickly answering questions like,
26
+ \"Can we\n survive a rolling restart?\", \"How many transactions per second am
27
+ I seeing?\",\n \"What's my session backlog?\". Inteded for use within continuous
28
+ deployment\n and monitoring solutions.\n"
62
29
  email:
63
30
  - jacob.elder@gmail.com
64
31
  executables: