Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
November 3, 2009
Atomic Upgrading of
Distributed Systems
HotSWUp'08
Sander van der Burg, Eelco Dolstra, Merijn de Jonge
SE...
Introduction
• Nix deployment system
• Disnix deployment system
• Atomic upgrading
Distributed systems
• Distributed systems
– Consists of multiple autonomous computers
– Components work together to reach ...
Dependency relationships
Upgrading distributed systems
• Upgrading distributed systems is complex:
• Usually a semi automatic process
• Requires up...
Upgrading distributed systems
• Upgrading distributed systems should be a simple
process
• Automatic process
• Configurati...
Nix Deployment System
• Is a package manager, like RPM
• Builds packages from Nix expressions
• Stores components in isola...
Nix store and Nix profile
Nix expression
rec {
HelloService = derivation {
name = "HelloService-1.0";
src = fetchurl {
url = http://nixos.org/.../He...
Disnix Deployment System
• Extends the Nix deployment system with support for
distributed systems
• Provides remote access...
Disnix overview
Services model
rec {
pkgs = import ./pkgs.nix;
HelloService = {
pkg = pkgs.HelloService;
dependsOn = [];
};
HelloWorldServ...
Infrastructure model
{
itchy = {
hostname = "itchy";
targetEPR = http://itchy/.../DisnixService;
};
scratchy = {
hostname ...
Distribution model
{services, infrastructure}:
[
{ service = services.HelloService;
target = infrastructure.itchy; }
{ ser...
Distribution export
<?xml version="1.0" encoding="utf-8"?>
<expr>
<list>
<attrs>
<attr name="service">
<string value="/nix...
Atomic commits
• Commit-request phase:
– Build all services on the coordinator machine
– Transfer the services and intra-d...
Concluding remarks
• We have demonstrated that we can extend the Nix
approach of upgrading single systems to distributed
s...
Upcoming SlideShare
Loading in …5
×

of

Atomic Upgrading of Distributed Systems Slide 1 Atomic Upgrading of Distributed Systems Slide 2 Atomic Upgrading of Distributed Systems Slide 3 Atomic Upgrading of Distributed Systems Slide 4 Atomic Upgrading of Distributed Systems Slide 5 Atomic Upgrading of Distributed Systems Slide 6 Atomic Upgrading of Distributed Systems Slide 7 Atomic Upgrading of Distributed Systems Slide 8 Atomic Upgrading of Distributed Systems Slide 9 Atomic Upgrading of Distributed Systems Slide 10 Atomic Upgrading of Distributed Systems Slide 11 Atomic Upgrading of Distributed Systems Slide 12 Atomic Upgrading of Distributed Systems Slide 13 Atomic Upgrading of Distributed Systems Slide 14 Atomic Upgrading of Distributed Systems Slide 15 Atomic Upgrading of Distributed Systems Slide 16 Atomic Upgrading of Distributed Systems Slide 17
Upcoming SlideShare
Presentation1
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

Atomic Upgrading of Distributed Systems

Download to read offline

Presentation given at HotSWUp 2008 workshop (co located with OOPSLA 2008) in Nashville, Tennessee, USA.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Atomic Upgrading of Distributed Systems

  1. 1. November 3, 2009 Atomic Upgrading of Distributed Systems HotSWUp'08 Sander van der Burg, Eelco Dolstra, Merijn de Jonge SERG
  2. 2. Introduction • Nix deployment system • Disnix deployment system • Atomic upgrading
  3. 3. Distributed systems • Distributed systems – Consists of multiple autonomous computers – Components work together to reach a common goal – Appear to a user as one logical system – Components have intra-dependencies and inter- dependencies
  4. 4. Dependency relationships
  5. 5. Upgrading distributed systems • Upgrading distributed systems is complex: • Usually a semi automatic process • Requires up-to-date documentation • Requires people with skills • Tedious and error prone • Is not an atomic operation
  6. 6. Upgrading distributed systems • Upgrading distributed systems should be a simple process • Automatic process • Configurations should be captured in models • Upgrading should be an atomic operation
  7. 7. Nix Deployment System • Is a package manager, like RPM • Builds packages from Nix expressions • Stores components in isolation in a Nix store • Nix profiles which abstracts over store components • Upgrading is atomic • Deals with single systems
  8. 8. Nix store and Nix profile
  9. 9. Nix expression rec { HelloService = derivation { name = "HelloService-1.0"; src = fetchurl { url = http://nixos.org/.../HelloService.tar.gz; md5 = "de3187eac06baf5f0506c06935a1fd29"; }; buildInputs = [ant jdk axis2]; builder = ./builder.sh; }; HelloWorldService = derivation { ... }; stdenv = ... firefox = import ... ... # other package definitions }
  10. 10. Disnix Deployment System • Extends the Nix deployment system with support for distributed systems • Provides remote access to the Nix stores and Nix profiles trough a webservice interface • Introduces three model types to model a distributed system • Uses a variant of the two-phase commit algorithm to allow distributed atomic commits
  11. 11. Disnix overview
  12. 12. Services model rec { pkgs = import ./pkgs.nix; HelloService = { pkg = pkgs.HelloService; dependsOn = []; }; HelloWorldService = { pkg = pkgs.HelloWorldService; dependsOn = [ HelloService ]; }; }
  13. 13. Infrastructure model { itchy = { hostname = "itchy"; targetEPR = http://itchy/.../DisnixService; }; scratchy = { hostname = "scratchy"; targetEPR = http://scratchy/.../DisnixService; }; }
  14. 14. Distribution model {services, infrastructure}: [ { service = services.HelloService; target = infrastructure.itchy; } { service = services.HelloWorldService; target = infrastructure.scratchy; } ]
  15. 15. Distribution export <?xml version="1.0" encoding="utf-8"?> <expr> <list> <attrs> <attr name="service"> <string value="/nix/store/bw7dnw...-HelloService-0.1"/> </attr> <attr name="target"> <string value="http://itchy:8080/axis2/services/DisnixService"/> </attr> </attrs> <attrs> <attr name="service"> <string value="/nix/store/2490znhi8...-HelloWorldService-0.1"/> </attr> <attr name="target"> <string value="http://scratchy:8080/axis2/services/DisnixService"/> </attr> </attrs> </list> </expr>
  16. 16. Atomic commits • Commit-request phase: – Build all services on the coordinator machine – Transfer the services and intra-dependencies to the cohort machines through the webservice interface • Request phase, on each cohort: – Deactivate the old components – Uninstall old components in profile – Install new component in profile – Activate new the components – All connections to the services are blocked
  17. 17. Concluding remarks • We have demonstrated that we can extend the Nix approach of upgrading single systems to distributed systems • Upgrading can be done from a declarative specification • Upgrading is an atomic operation • Distribution of services is still a static process • We are developing a dynamic approach based on quality of service models • http://www.nixos.org

Presentation given at HotSWUp 2008 workshop (co located with OOPSLA 2008) in Nashville, Tennessee, USA.

Views

Total views

355

On Slideshare

0

From embeds

0

Number of embeds

4

Actions

Downloads

2

Shares

0

Comments

0

Likes

0

×