Pages

Wednesday 22 January 2014

Understand Chef-Server Components (Erchef, bookshelf, webui, nginx-load balanceer, rabbitMQ, postregSQL)

Chef-server:


  1. The server acts as a hub for configuration data
  2. The server stores cookbooks, the policies that are applied to nodes, and metadata that describes each registered node that is being managed by the chef-client
  3. front-end is written in erlang and hence the name Erchef




ComponentDescription
Bookshelf
Bookshelf is used to store cookbook content—files, templates, and so on—that have been uploaded to the server as part of a cookbook version. Cookbook content is stored by content checksum. If two different cookbooks or different versions of the same cookbook include the same file or template, Bookshelf will store that file only once. The cookbook content managed by Bookshelf is stored in flat files and is separated from the server and search index repositories.
All cookbooks are stored in a dedicated repository.
WebUIchef-server-webui is a Ruby on Rails 3.0 application that hosts the web interface for the server.
Erchef
Erchef is a complete rewrite of the core API for the server, which allows it to be faster and more scalable than previous versions. The API itself is still compatible with the original Ruby-based server, which means that cookbooks and recipes that were authored for the Ruby-based server will continue to work on the Erlang-based server. The chef-client is still written in Ruby.
Note
Even though Chef 11.x is authored in Erlang, writing code in Erlang is NOT a requirement for using Chef 11.x.
Message Queues
Messages are sent to the Search Index using the following components:
  1. RabbitMQ is used as the message queue for the server. All items that will be added to the search index repository are first added to a queue.
  2. chef-expander is used to pull messages from the RabbitMQ queue, process them into the required format, and then post them to chef-solr for indexing.
  3. chef-solr wraps Apache Solr and exposes its REST API for indexing and search.
All messages are added to a dedicated search index repository.
NginxNginx is an open-source HTTP and reverse proxy server that is used as the front-end load balancer for the server. All requests to the Chef Server API are routed through Nginx.
PostgreSQLPostgreSQL is the data storage repository for the server.



References:

  1. http://docs.opscode.com/server_components.html

No comments:

Post a Comment