Managing Distributed Systems with Chef


Published on

My "Managing Distributed Systems with Chef" deck from Ricon 2012.

Published in: Technology

Managing Distributed Systems with Chef

  1. 1. Managing Distributed Systems with Chef Mandi Walls RiCon 2012 October 10, 2012
  2. 2. whoami• Senior Technical Evangelist (Consultant) at Opscode• @lnxchk•
  3. 3. Chef• Configuration management system built with the cloud in mind•
  4. 4. Chef is a Tool
  5. 5. Quick Chef Bits• Resources: things you manage (files, directories, services)• Nodes: hosts you manage, run chef-client• Recipes: collections of resources• Templates: dynamically generate configuration• Cookbooks: packages for recipes, usually a functional piece of software• Chef Server: stores info, cookbooks, runs an API and a search engine
  6. 6. What is a Distributed System“A distributed system is a collection of independent computers thatappears to its users as a single coherent system” ~ Tanenbaum and van Steen, Distributed Systems, 2002
  7. 7. What Do You Distribute?• Hits: with a load balancer• Reads: with some slaves• Workload: with some compute nodes• Storage: with some storage nodes
  8. 8. Infrastructure Management• Complex distributed systems require the proper tools to configure them to meet their goals• Distributed systems are built by connecting bricks together in pleasing landscapes
  9. 9. How Do You Distribute?• Client-Server N:1• Master-Slave-Client: 1:N:M• Mesh or Cluster: N!• omg science
  10. 10. Goals• Create system topologies that are as complex as needed to meet the requirements of my architecture• Allow configurations to dynamically update when nodes join or disappear
  11. 11. N:1 Client Server• Basic examples • Load balancer finding web nodes • Application servers finding a datastore
  12. 12. example: Load Balancer• Using Chef roles• Roles are essentially used to create types of nodes • I want a webserver, I create a webserver role that includes stuff like Apache, or nginx, or php, or whatever I need • The webserver I build today using the role will be the same as the one I build next week or next month • Roles are searchable!
  13. 13. Chef Roles
  14. 14. example: Load Balancer
  15. 15. example: App Servers and Data• Maybe I don’t want my servers to dynamically go looking for an element• I want to be able to tell them where to find it• Use Chef attributes
  16. 16. Chef Attributes
  17. 17. example: App Servers and Data
  18. 18. example: App Servers and Data
  19. 19. Master:Slaves:Clients• Services in complex topologies have more than one access pattern• Combinations of Chef Roles and Attributes create more interesting relationships
  20. 20. Master Role
  21. 21. Slave Role
  22. 22. Client Role
  23. 23. What Was All That?
  24. 24. Clusters• Complex topologies in which every component should know about all or most of the other components
  25. 25. Clusters Using Environments• Chef Environments allow you to logically partition your infrastructure• Canonical example is a Dev/Test/Stage/Prod model• But!• Create a logical group dedicated to your cluster
  26. 26. Chef Environments
  27. 27. Environments in Recipes• Nodes belonging to the mob environment will have tony as their boss• Nodes belonging to the herd environment will have cowboy as their boss• The same software can be used to manage these two clusters, and their environments keep them together
  28. 28. Chef Databags• “Bags of Holding”• Whatever random kind of stuff you need to share, in JSON• Not limited to cookbooks, roles, recipes: global data• Usually you want them to be saved in your source repository• Set of directories and files like data_bags/clusters/herd.json and data_bags/clusters/mob.json
  29. 29. Writing to Databags from Nodes• Little bit dangerous• Little bit racy
  30. 30. Clusters Using Databags• Update the cluster’s databag in real time from the nodes• Let’s say the herd cluster elected sheepdog as its boss instead of cowboy• We could write a piece of node data and search, or we could abuse a databag
  31. 31. Write a Databag Item• Write out a new value in the clusters databag, herd item
  32. 32. Read Databag Items• The rest of the herd will get the new value by reading it out of the databag• The convergence interval is as long as you wait between chef-client executions on the nodes
  33. 33. Things to Consider• Your nodes converge by running the chef-client agent• chef-client can be run on an interval, or on demand
  34. 34. Other Chefy Things• Start, Report, and Error Handlers• Lightweight Resources and Providers•
  35. 35. Thanks!••• @lnxchk•