Multi-Server Load Balancing¶
To spread a database across multiple servers the database must first be appropriately chunked. A ShapeDatabaseServer.py is started on each host with its corresponding database chunk. ShapeDatabaseProxy.py is then used to tie all the servers together to appear like a single shape database service to client applications. Theoretically, there is no need for the client to know whether it is querying one or many servers.
The general work-flow is as follows:
Split up database into 2 servers
ShapeDatabaseChunker.py database.oeb.gz database_shapedb.oeb.gz 2
Start a shape database server on each host.
# host1 ShapeDatabaseServer.py database_shapedb_1.oeb.gz # host2: ShapeDatabaseServer.py database_shapedb_2.oeb.gz
Start a proxy server to point to all the hosts. Note, a different port number like 8081 may need to be specified if the proxy server is being started on a host that already has a ShapeDatabaseServer.py started on it.
# proxy ShapeDatabaseProxy.py host1:8080 host2:8080 8081
Query the proxy server
ShapeDatabaseClient.py proxy:8081 query.sdf overlays.oeb