I wonder how big aplications (with several appliacation servers and loadbalancers) are hot update to actual version without takeing offline for users. Skipping database shema here - only application layer.
For example there is several glassfish servers balanced by haproxy and We want to update application which is on several servers.
What is used in this case? I know this may by co开发者_JS百科mplicated but please enlight me about methods.
Rails websites frequently use Capistrano to deploy code. The code is updated on each server and the webserver (apache or nginx mostly ) usually uses a plugin like passenger. Passenger restarts and reloads the code base which was updated (accomplished by touch tmp/restart in the rails root directory ). The next web request will be sent to Passenger which is using the updated code.
Much of Twitter (from what I hear the backend processing is in Erlang) and I believe almost all of Hulu use techniques similar to this.
The classical way of doing this in an >1-server-shared-nothing-configuration is to take one server offline, i.e. instructing the front end web servers or load balancers to direct traffic to the other servers only.
The offline server can then be upgraded and started again. Then the front-ends are re-configured to didtribute traffic to the upgraded server.
Doing this with all servers eventually results in a complete umgrade.
精彩评论