HAProxy Operations¶
Get some information about the running processes
>>> hap.processids
[871, 870, 869, 868]
>>>
>>> hap.description
'Test server'
>>>
>>> hap.releasedate
'2014/10/31'
>>>
>>> hap.version
'1.5.8'
>>>
>>> hap.uptime
'2d 0h55m09s'
>>>
>>> hap.uptimesec
176112
>>>
>>> hap.nodename
'test.foo.com'
>>>
>>> hap.totalrequests
796
Note
totalrequests
returns the total number of requests that are processed
by HAProxy. It counts requests for frontends and backends. Don’t forget that
a single client request passes HAProxy twice.
Dynamically change the specified global maxconn setting.
>>> print(hap.maxconn)
40000
>>> hap.setmaxconn(5000)
True
>>> print(hap.maxconn)
20000
>>>
Note
New setting is applied per process and the sum is returned.
Get a list of Frontend
objects for all frontends
>>> frontends = hap.frontends()
>>> for f in frontends:
... print(f.name)
...
frontend_proc1
haproxy
frontend1_proc34
frontend2_proc34
frontend_proc2
Get a Frontend
object for a single frontend
>>> frontend1 = hap.frontend('frontend1_proc34')
>>> frontend1.name, frontend1.process_nb
('frontend1_proc34', [4, 3])
Get a list of Backend
objects for all backends
>>> backends = hap.backends()
>>> for b in backends:
... print(b.name)
...
haproxy
backend1_proc34
backend_proc2
backend_proc1
backend2_proc34
Get a Backend
object for a single backend
>>> backend1 = hap.backend('backend1_proc34')
>>> backend1.name, backend1.process_nb
('backend1_proc34', [4, 3])
Get a list of Server
objects for each server
>>> servers = hap.servers()
>>> for s in servers:
... print(s.name, s.backendname)
...
bck1_proc34_srv1 backend1_proc34
bck1_proc34_srv2 backend1_proc34
bck_all_srv1 backend1_proc34
bck_proc2_srv3_proc2 backend_proc2
bck_proc2_srv1_proc2 backend_proc2
bck_proc2_srv4_proc2 backend_proc2
bck_proc2_srv2_proc2 backend_proc2
member1_proc1 backend_proc1
bck_all_srv1 backend_proc1
member2_proc1 backend_proc1
bck2_proc34_srv1 backend2_proc34
bck_all_srv1 backend2_proc34
bck2_proc34_srv2 backend2_proc34
Note
if a server is member of more than 1 backends then muliple
Server
objects for the server is returned
Limit the list of server for a specific pool
>>> servers = hap.servers(backend='backend1_proc34')
>>> for s in servers:
... print(s.name, s.backendname)
...
bck1_proc34_srv1 backend1_proc34
bck1_proc34_srv2 backend1_proc34
bck_all_srv1 backend1_proc34
Work on specific server across all backends
>>> s1 = hap.server(hostname='bck_all_srv1')
>>> for x in s1:
... print(x.name, x.backendname, x.status)
... x.setstate(haproxy.STATE_DISABLE)
... print(x.status)
...
bck_all_srv1 backend1_proc34 DOWN
True
MAINT
bck_all_srv1 backend_proc1 DOWN
True
MAINT
bck_all_srv1 backend2_proc34 no check
True
MAINT
Examples for ACLs
>>> from pprint import pprint
>>> pprint(hap.show_acl())
['# id (file) description',
"0 (/etc/haproxy/wl_stats) pattern loaded from file '/etc/haproxy/wl_stats' "
"used by acl at file '/etc/haproxy/haproxy.cfg' line 53",
"1 () acl 'src' file '/etc/haproxy/haproxy.cfg' line 53",
"3 () acl 'ssl_fc' file '/etc/haproxy/haproxy.cfg' line 85",
'4 (/etc/haproxy/bl_frontend) pattern loaded from file '
"'/etc/haproxy/bl_frontend' used by acl at file '/etc/haproxy/haproxy.cfg' "
'line 97',
"5 () acl 'src' file '/etc/haproxy/haproxy.cfg' line 97",
"6 () acl 'path_beg' file '/etc/haproxy/haproxy.cfg' line 99",
"7 () acl 'req.cook' file '/etc/haproxy/haproxy.cfg' line 114",
"8 () acl 'req.cook' file '/etc/haproxy/haproxy.cfg' line 115",
"9 () acl 'req.cook' file '/etc/haproxy/haproxy.cfg' line 116",
'']
>>> hap.show_acl(6)
['0x12ea940 /static/css/', '']
>>> hap.add_acl(6, '/foobar')
True
>>> hap.show_acl(6)
['0x12ea940 /static/css/', '0x13a38b0 /foobar', '']
>>> hap.add_acl(6, '/foobar')
True
>>> hap.show_acl(6)
['0x12ea940 /static/css/', '0x13a38b0 /foobar', '0x13a3930 /foobar', '']
>>> hap.del_acl(6, '/foobar')
True
>>> hap.show_acl(6)
['0x12ea8a0 /static/js/', '0x12ea940 /static/css/', '']
Examples for MAPs
>>> from haproxyadmin import haproxy
>>> hap = haproxy.HAProxy(socket_dir='/run/haproxy')
>>> hap.show_map(map=6)
['# id (file) description',
"0 (/etc/haproxy/v-m1-bk) pattern loaded ...... line 82",
'']
>>> hap.show_map(0)
['0x1a78ab0 0 www.foo.com-0', '0x1a78b20 1 www.foo.com-1', '']
Manage MAPs
>>> hap.show_map(0)
['0x1a78b20 1 www.foo.com-1', '']
>>> hap.add_map(0, '9', 'foo')
True
>>> hap.show_map(0)
['0x1a78b20 1 www.foo.com-1', '0x1b15c80 9 foo', '']
>>> hap.show_map(0)
['0x1b15cd0 9 foo', '0x1a78980 11 bar', '']
>>> hap.del_map(0, '0x1b15cd0')
True
>>> hap.show_map(0)
['0x1a78980 11 bar', '']
>>> hap.add_map(0, '22', 'bar22')
True
>>> hap.show_map(0)
['0x1a78980 11 bar', '0x1b15c00 22 bar22', '']
>>> hap.del_map(0, '22')
True
>>> hap.show_map(0)
['0x1a78980 11 bar', '']