diff --git a/.gitignore b/.gitignore index 1cc2fe8..8a6c0d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,36 @@ # generated by jekyll /html/*.html /html/*.txt /html/assets/ /html/doc/ +/html/feed.xml /html/pacemaker/index.html /html/pacemaker/*/index.php /html/polls/index.html /src/.*-cache/ /src/.jekyll-metadata # generated by pacemaker make targets /html/pacemaker/abi/*/ /html/pacemaker/doc/*/ /html/pacemaker/doc/acls.* /html/pacemaker/doc/build-[0-9].[0-9].txt /html/pacemaker/doc/crm_fencing.* /html/pacemaker/doxygen/*/ /html/pacemaker/global/*/ /html/pacemaker/man/*.[78].html # bugzilla and mediawiki source /bugzilla /bugzilla*/ /mediawiki /mediawiki*/ # not version-controlled *~ *.swp /build.clusterlabs.org /ci.kronosnet.org/ /html/doc/Two-Stacks.pdf /html/images/ /include/wiki.clusterlabs.org/secrets.php diff --git a/README.md b/README.md index 6ebf129..f7a8053 100644 --- a/README.md +++ b/README.md @@ -1,98 +1,101 @@ # ClusterLabs.org website ## Installing Jekyll ClusterLabs,org is partially generated by jekyll. Installing jekyll requires the following dependencies: * nodejs * npm * ruby * ruby-devel * rubygems * rubygem-bundler * rubygem-rdiscount Once you have those, change to the `src` directory and run `bundle install`. ## Using Jekyll ClusterLabs.org's jekyll source is under the `src` directory. Jekyll will generate static content to the html directory. To generate content in a checkout for development and testing, change to the `src` directory and run `bundle exec jekyll build` (to merely generate content) or `bundle exec jekyll serve` (to generate and test via a local server). To generate content on the production site, run `JEKYLL_ENV=production jekyll build` (which will enable such things as site analytics and asset digests). If `src/Gemfile` changes, re-run `bundle install` afterward. ## Images, stylesheets and JavaScripts We use the jekyll-assets plugin to manage "assets" such as images, stylesheets, and JavaScript. One advantage is that digest hashes are automatically added to the generated filenames when in production mode. This allows "cache busting" when an asset changes, so we can use long cache times on the server end. Another advantage is that sources are minified when in production mode. How CSS is managed: -* `src/_assets/css/main.scss` is just a list of imports -* `src/_assets/css/_*.scss` contain the CSS to be imported by `main.scss` +* CSS is generated from SASS sources +* `src/_assets/stylesheets/main.scss` is just a list of imports +* all other *.scss files beneath `src/_assets/stylesheets` contain the SASS to + be imported by `main.scss` * jekyll will generate `html/assets/main.css` (or `main-_HASH_.css`) as the combination of all imports -* web pages can reference the stylesheet via `{% css main %}` +* web pages can reference the stylesheet via `{% stylesheet main %}` JavaScript is managed similarly: -* `src/_assets/js/main.js` is just a list of requires -* `src/_assets/js/*.js` contain the JavaScript to be required by `main.js` +* `src/_assets/javascripts/main.js` is just a list of requires +* `src/_assets/javascripts/*.js` contain the JavaScript to be required by + `main.js` * jekyll will copy these to `html/assets` * jekyll will generate `html/assets/main.js` (or `main-_HASH_.js`) as the combination of all JavaScript -* web pages can reference the script via `{% js main %}` +* web pages can reference the script via `{% javascript main %}` How images are managed: * `src/_assets/images/*` are our images -* web pages can add an img tag using `{% img _NAME_._EXT_ %}` +* web pages can add an img tag using `{% image _NAME_._EXT_ %}` * web pages can reference a path to an image (e.g. in a link's href) using `{% asset_path _NAME_._EXT_ %}` * CSS can reference a path to an image using `url(asset_path("_NAME_._EXT_"))` * only images that are referenced in one of these ways will be deployed to the website, so `_assets` may contain image sources such as SVGs that do not need to be deployed * Tip: http://compresspng.com/ can often compress PNGs extremely well ## Site icons Site icons used to be easy, right? `favicon.ico` seems downright traditional. Unfortunately, site icons have become an ugly mess of incompatible proprietary extensions. Even `favicon.ico` is just a proprietary extension (and obsolete, as well). Now, there are also `apple-touch-icon[-NxN][-precomposed].png` (with at least _12_ different sizes!), `browserconfig.xml`, `manifest.json`, link tags with `rel=(icon|shortcut icon|apple-touch-icon-*)`, and Windows Phone tile overlay divs. If you want to be discouraged and confused, see: * http://stackoverflow.com/questions/23849377/html-5-favicon-support * https://mathiasbynens.be/notes/touch-icons * https://css-tricks.com/favicon-quiz/ There is no way to handle the mess universally. In particular, some devices do much better when different icon sizes are provided and listed in the HTML as link tags, and will pick the size needed, whereas other devices will download every single icon listed in those link tags, crippling page performance -- not to mention the overhead that listing two dozen icon sizes adds to the HTML. We've chosen a simple approach: provide two site icons, a 16x16 `favicon.ico`, and a 180x180 `apple-touch-icon.png`, both listed in link tags in the HTML. Most browsers/devices will choose one of these and scale it as needed. ## Web server configuration The clusterlabs.org web server is configured to redirect certain old URLs to their new locations, so be careful about renaming files. diff --git a/src/404.html b/src/404.html index f083aea..77170db 100644 --- a/src/404.html +++ b/src/404.html @@ -1,25 +1,25 @@ --- layout: default title: Not Found --- diff --git a/src/Gemfile b/src/Gemfile index 9734b71..afc5081 100644 --- a/src/Gemfile +++ b/src/Gemfile @@ -1,36 +1,35 @@ source "https://rubygems.org" ruby RUBY_VERSION # Hello! This is where you manage which Jekyll version is used to run. # When you want to use a different version, change it below, save the # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: # # bundle exec jekyll serve # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -gem "jekyll", "3.3.0" +gem "jekyll" # This is the default theme for new Jekyll sites. You may change this to anything you like. gem "minima", "~> 2.0" # Needed by jekyll-assets -# (Force versions compatible with ruby 2.0) group :jekyll_assets_deps do - gem "public_suffix", "< 3.0" - gem "ruby_dep", "< 1.4" - gem "rb-inotify", "< 0.10" - gem "listen", "< 3.1" - gem "jekyll-watch", "< 1.5.1" + gem "public_suffix" + gem "ruby_dep" + gem "rb-inotify" + gem "listen" + gem "jekyll-watch" gem "json" end # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. # gem "github-pages", group: :jekyll_plugins # If you have any plugins, put them here! group :jekyll_plugins do gem "jekyll-assets" gem "font-awesome-sass" end diff --git a/src/Gemfile.lock b/src/Gemfile.lock index 1a9a85e..c455eed 100644 --- a/src/Gemfile.lock +++ b/src/Gemfile.lock @@ -1,78 +1,119 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.6.0) - public_suffix (>= 2.0.2, < 4.0) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) colorator (1.1.0) - concurrent-ruby (1.1.5) - extras (0.3.0) - forwardable-extended (~> 2.5) - fastimage (2.1.5) - ffi (1.11.1) - font-awesome-sass (4.7.0) - sass (>= 3.2) + concurrent-ruby (1.1.6) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + fastimage (1.8.1) + addressable (~> 2.3, >= 2.3.5) + ffi (1.12.2) + font-awesome-sass (5.12.0) + sassc (>= 1.11) forwardable-extended (2.6.0) - jekyll (3.3.0) + hike (1.2.3) + http_parser.rb (0.6.0) + i18n (1.8.2) + concurrent-ruby (~> 1.0) + jekyll (4.0.0) addressable (~> 2.4) colorator (~> 1.0) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) + em-websocket (~> 0.5) + i18n (>= 0.9.5, < 2) + jekyll-sass-converter (~> 2.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) - rouge (~> 1.7) + rouge (~> 3.0) safe_yaml (~> 1.0) - jekyll-assets (2.4.0) - concurrent-ruby (~> 1.0) - extras (~> 0.2) - fastimage (~> 2.0, >= 1.8) - jekyll (~> 3.1, >= 3.0) - pathutil (>= 0.8) - rack (~> 1.6) - sprockets (~> 3.3, < 3.8) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-watch (1.5.0) - listen (~> 3.0, < 3.1) - json (2.2.0) - kramdown (1.17.0) - liquid (3.0.6) - listen (3.0.8) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) + terminal-table (~> 1.8) + jekyll-assets (1.0.0) + fastimage (~> 1.6) + jekyll (>= 2) + mini_magick (~> 4.1) + sass (~> 3.2) + sprockets (~> 2.10) + sprockets-helpers + sprockets-sass + jekyll-feed (0.13.0) + jekyll (>= 3.7, < 5.0) + jekyll-sass-converter (2.1.0) + sassc (> 2.0.1, < 3.0) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.3.0) + kramdown (2.1.0) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.2.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - minima (2.0.0) + mini_magick (4.10.1) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + multi_json (1.14.1) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (2.0.5) + public_suffix (4.0.4) rack (1.6.13) rb-fsevent (0.10.3) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rouge (1.11.1) - ruby_dep (1.3.1) + rb-inotify (0.10.1) + ffi (~> 1.0) + rouge (3.18.0) + ruby_dep (1.5.0) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sprockets (3.7.2) - concurrent-ruby (~> 1.0) - rack (> 1, < 3) + sassc (2.2.1) + ffi (~> 1.9) + sprockets (2.12.5) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sprockets-helpers (1.2.3) + sprockets (>= 2.2) + sprockets-sass (1.3.1) + sprockets (~> 2.0) + tilt (~> 1.1) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + tilt (1.4.1) + unicode-display_width (1.7.0) PLATFORMS ruby DEPENDENCIES font-awesome-sass - jekyll (= 3.3.0) + jekyll jekyll-assets - jekyll-watch (< 1.5.1) + jekyll-watch json - listen (< 3.1) + listen minima (~> 2.0) - public_suffix (< 3.0) - rb-inotify (< 0.10) - ruby_dep (< 1.4) + public_suffix + rb-inotify + ruby_dep + +RUBY VERSION + ruby 2.5.5p157 + +BUNDLED WITH + 1.16.1 diff --git a/src/_assets/js/html5up.js b/src/_assets/javascripts/html5up.js similarity index 100% rename from src/_assets/js/html5up.js rename to src/_assets/javascripts/html5up.js diff --git a/src/_assets/js/ie/html5shiv.js b/src/_assets/javascripts/ie/html5shiv.js similarity index 100% rename from src/_assets/js/ie/html5shiv.js rename to src/_assets/javascripts/ie/html5shiv.js diff --git a/src/_assets/js/ie/respond.min.js b/src/_assets/javascripts/ie/respond.min.js similarity index 100% rename from src/_assets/js/ie/respond.min.js rename to src/_assets/javascripts/ie/respond.min.js diff --git a/src/_assets/js/jquery.min.js b/src/_assets/javascripts/jquery.min.js similarity index 100% rename from src/_assets/js/jquery.min.js rename to src/_assets/javascripts/jquery.min.js diff --git a/src/_assets/js/lib.js b/src/_assets/javascripts/lib.js similarity index 100% rename from src/_assets/js/lib.js rename to src/_assets/javascripts/lib.js diff --git a/src/_assets/js/main.js b/src/_assets/javascripts/main.js similarity index 100% rename from src/_assets/js/main.js rename to src/_assets/javascripts/main.js diff --git a/src/_assets/js/pcmk_versions.js b/src/_assets/javascripts/pcmk_versions.js similarity index 100% rename from src/_assets/js/pcmk_versions.js rename to src/_assets/javascripts/pcmk_versions.js diff --git a/src/_assets/js/plugins.js b/src/_assets/javascripts/plugins.js similarity index 100% rename from src/_assets/js/plugins.js rename to src/_assets/javascripts/plugins.js diff --git a/src/_assets/js/retina.min.js b/src/_assets/javascripts/retina.min.js similarity index 100% rename from src/_assets/js/retina.min.js rename to src/_assets/javascripts/retina.min.js diff --git a/src/_assets/js/skel.min.js b/src/_assets/javascripts/skel.min.js similarity index 100% rename from src/_assets/js/skel.min.js rename to src/_assets/javascripts/skel.min.js diff --git a/src/_assets/js/util.js b/src/_assets/javascripts/util.js similarity index 100% rename from src/_assets/js/util.js rename to src/_assets/javascripts/util.js diff --git a/src/_assets/js/vendor/jquery-1.8.2.min.js b/src/_assets/javascripts/vendor/jquery-1.8.2.min.js similarity index 100% rename from src/_assets/js/vendor/jquery-1.8.2.min.js rename to src/_assets/javascripts/vendor/jquery-1.8.2.min.js diff --git a/src/_assets/js/vendor/modernizr-2.6.2.min.js b/src/_assets/javascripts/vendor/modernizr-2.6.2.min.js similarity index 100% rename from src/_assets/js/vendor/modernizr-2.6.2.min.js rename to src/_assets/javascripts/vendor/modernizr-2.6.2.min.js diff --git a/src/_assets/js/versions.js b/src/_assets/javascripts/versions.js similarity index 100% rename from src/_assets/js/versions.js rename to src/_assets/javascripts/versions.js diff --git a/src/_assets/css/_h5bp-after.scss b/src/_assets/stylesheets/_h5bp-after.scss similarity index 100% rename from src/_assets/css/_h5bp-after.scss rename to src/_assets/stylesheets/_h5bp-after.scss diff --git a/src/_assets/css/_h5bp-before.scss b/src/_assets/stylesheets/_h5bp-before.scss similarity index 100% rename from src/_assets/css/_h5bp-before.scss rename to src/_assets/stylesheets/_h5bp-before.scss diff --git a/src/_assets/css/_layout.scss b/src/_assets/stylesheets/_layout.scss similarity index 100% rename from src/_assets/css/_layout.scss rename to src/_assets/stylesheets/_layout.scss diff --git a/src/_assets/css/_normalize.scss b/src/_assets/stylesheets/_normalize.scss similarity index 100% rename from src/_assets/css/_normalize.scss rename to src/_assets/stylesheets/_normalize.scss diff --git a/src/_assets/css/base/_page.scss b/src/_assets/stylesheets/base/_page.scss similarity index 100% rename from src/_assets/css/base/_page.scss rename to src/_assets/stylesheets/base/_page.scss diff --git a/src/_assets/css/base/_typography.scss b/src/_assets/stylesheets/base/_typography.scss similarity index 100% rename from src/_assets/css/base/_typography.scss rename to src/_assets/stylesheets/base/_typography.scss diff --git a/src/_assets/css/components/_box.scss b/src/_assets/stylesheets/components/_box.scss similarity index 100% rename from src/_assets/css/components/_box.scss rename to src/_assets/stylesheets/components/_box.scss diff --git a/src/_assets/css/components/_boxes.scss b/src/_assets/stylesheets/components/_boxes.scss similarity index 100% rename from src/_assets/css/components/_boxes.scss rename to src/_assets/stylesheets/components/_boxes.scss diff --git a/src/_assets/css/components/_button.scss b/src/_assets/stylesheets/components/_button.scss similarity index 100% rename from src/_assets/css/components/_button.scss rename to src/_assets/stylesheets/components/_button.scss diff --git a/src/_assets/css/components/_features.scss b/src/_assets/stylesheets/components/_features.scss similarity index 100% rename from src/_assets/css/components/_features.scss rename to src/_assets/stylesheets/components/_features.scss diff --git a/src/_assets/css/components/_form.scss b/src/_assets/stylesheets/components/_form.scss similarity index 100% rename from src/_assets/css/components/_form.scss rename to src/_assets/stylesheets/components/_form.scss diff --git a/src/_assets/css/components/_icon.scss b/src/_assets/stylesheets/components/_icon.scss similarity index 100% rename from src/_assets/css/components/_icon.scss rename to src/_assets/stylesheets/components/_icon.scss diff --git a/src/_assets/css/components/_image.scss b/src/_assets/stylesheets/components/_image.scss similarity index 100% rename from src/_assets/css/components/_image.scss rename to src/_assets/stylesheets/components/_image.scss diff --git a/src/_assets/css/components/_list.scss b/src/_assets/stylesheets/components/_list.scss similarity index 100% rename from src/_assets/css/components/_list.scss rename to src/_assets/stylesheets/components/_list.scss diff --git a/src/_assets/css/components/_mini-posts.scss b/src/_assets/stylesheets/components/_mini-posts.scss similarity index 100% rename from src/_assets/css/components/_mini-posts.scss rename to src/_assets/stylesheets/components/_mini-posts.scss diff --git a/src/_assets/css/components/_posts.scss b/src/_assets/stylesheets/components/_posts.scss similarity index 100% rename from src/_assets/css/components/_posts.scss rename to src/_assets/stylesheets/components/_posts.scss diff --git a/src/_assets/css/components/_section.scss b/src/_assets/stylesheets/components/_section.scss similarity index 100% rename from src/_assets/css/components/_section.scss rename to src/_assets/stylesheets/components/_section.scss diff --git a/src/_assets/css/components/_table.scss b/src/_assets/stylesheets/components/_table.scss similarity index 100% rename from src/_assets/css/components/_table.scss rename to src/_assets/stylesheets/components/_table.scss diff --git a/src/_assets/css/font-awesome.min.css b/src/_assets/stylesheets/font-awesome.min.css similarity index 100% rename from src/_assets/css/font-awesome.min.css rename to src/_assets/stylesheets/font-awesome.min.css diff --git a/src/_assets/css/ie8.scss b/src/_assets/stylesheets/ie8.scss similarity index 100% rename from src/_assets/css/ie8.scss rename to src/_assets/stylesheets/ie8.scss diff --git a/src/_assets/css/ie9.scss b/src/_assets/stylesheets/ie9.scss similarity index 100% rename from src/_assets/css/ie9.scss rename to src/_assets/stylesheets/ie9.scss diff --git a/src/_assets/css/layout/_banner.scss b/src/_assets/stylesheets/layout/_banner.scss similarity index 100% rename from src/_assets/css/layout/_banner.scss rename to src/_assets/stylesheets/layout/_banner.scss diff --git a/src/_assets/css/layout/_footer.scss b/src/_assets/stylesheets/layout/_footer.scss similarity index 100% rename from src/_assets/css/layout/_footer.scss rename to src/_assets/stylesheets/layout/_footer.scss diff --git a/src/_assets/css/layout/_header.scss b/src/_assets/stylesheets/layout/_header.scss similarity index 100% rename from src/_assets/css/layout/_header.scss rename to src/_assets/stylesheets/layout/_header.scss diff --git a/src/_assets/css/layout/_main.scss b/src/_assets/stylesheets/layout/_main.scss similarity index 100% rename from src/_assets/css/layout/_main.scss rename to src/_assets/stylesheets/layout/_main.scss diff --git a/src/_assets/css/layout/_menu.scss b/src/_assets/stylesheets/layout/_menu.scss similarity index 100% rename from src/_assets/css/layout/_menu.scss rename to src/_assets/stylesheets/layout/_menu.scss diff --git a/src/_assets/css/layout/_sidebar.scss b/src/_assets/stylesheets/layout/_sidebar.scss similarity index 100% rename from src/_assets/css/layout/_sidebar.scss rename to src/_assets/stylesheets/layout/_sidebar.scss diff --git a/src/_assets/css/layout/_wrapper.scss b/src/_assets/stylesheets/layout/_wrapper.scss similarity index 100% rename from src/_assets/css/layout/_wrapper.scss rename to src/_assets/stylesheets/layout/_wrapper.scss diff --git a/src/_assets/css/libs/_functions.scss b/src/_assets/stylesheets/libs/_functions.scss similarity index 100% rename from src/_assets/css/libs/_functions.scss rename to src/_assets/stylesheets/libs/_functions.scss diff --git a/src/_assets/css/libs/_mixins.scss b/src/_assets/stylesheets/libs/_mixins.scss similarity index 100% rename from src/_assets/css/libs/_mixins.scss rename to src/_assets/stylesheets/libs/_mixins.scss diff --git a/src/_assets/css/libs/_skel.scss b/src/_assets/stylesheets/libs/_skel.scss similarity index 100% rename from src/_assets/css/libs/_skel.scss rename to src/_assets/stylesheets/libs/_skel.scss diff --git a/src/_assets/css/libs/_util.scss b/src/_assets/stylesheets/libs/_util.scss similarity index 100% rename from src/_assets/css/libs/_util.scss rename to src/_assets/stylesheets/libs/_util.scss diff --git a/src/_assets/css/libs/_vars.scss b/src/_assets/stylesheets/libs/_vars.scss similarity index 100% rename from src/_assets/css/libs/_vars.scss rename to src/_assets/stylesheets/libs/_vars.scss diff --git a/src/_assets/css/main.scss b/src/_assets/stylesheets/main.scss similarity index 100% rename from src/_assets/css/main.scss rename to src/_assets/stylesheets/main.scss diff --git a/src/_assets/css/oldmain.scss b/src/_assets/stylesheets/oldmain.scss similarity index 100% rename from src/_assets/css/oldmain.scss rename to src/_assets/stylesheets/oldmain.scss diff --git a/src/_includes/head.html b/src/_includes/head.html index 7916112..6612f63 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -1,18 +1,18 @@ {{ site.title | escape }}{% if page.title %} > {{ page.title | escape }}{% endif %} - {% css main %} + {% stylesheet main %} {% if jekyll.environment == "production" and site.google_analytics %} {% include google-analytics.html %} {% endif %} diff --git a/src/_includes/sidebar.html b/src/_includes/sidebar.html index 2a561f1..3485f89 100644 --- a/src/_includes/sidebar.html +++ b/src/_includes/sidebar.html @@ -1,49 +1,49 @@ diff --git a/src/_layouts/default.html b/src/_layouts/default.html index 8075746..ed6a5bd 100644 --- a/src/_layouts/default.html +++ b/src/_layouts/default.html @@ -1,30 +1,30 @@ {% include head.html %}
{% include header.html %} {{ content }}
{% include sidebar.html %}
-{% js jquery.min %} -{% js skel.min %} -{% js util %} -{% js main %} +{% javascript jquery.min %} +{% javascript skel.min %} +{% javascript util %} +{% javascript main %} diff --git a/src/_layouts/home.html b/src/_layouts/home.html index 63b6b06..94f78ab 100644 --- a/src/_layouts/home.html +++ b/src/_layouts/home.html @@ -1,207 +1,207 @@ --- layout: clusterlabs ---

Quick Overview

- {% img Deploy-small.png %} + {% image Deploy-small.png %}

Deploy

We support many deployment scenarios, from the simplest 2-node standby cluster to a 32-node active/active configuration. We can also dramatically reduce hardware costs by allowing several active/passive clusters to be combined and share a common backup node.

- {% img Monitor-small.png %} + {% image Monitor-small.png %}

Monitor

We monitor the system for both hardware and software failures. In the event of a failure, we will automatically recover your application and make sure it is available from one of the remaning machines in the cluster.

- {% img Recover-small.png %} + {% image Recover-small.png %}

Recover

After a failure, we use advanced algorithms to quickly determine the optimum locations for services based on relative node preferences and/or requirements to run with other cluster services (we call these "constraints").

Why clusters

At its core, a cluster is a distributed finite state machine capable of co-ordinating the startup and recovery of inter-related services across a set of machines.

System HA is possible without a cluster manager, but you save many headaches using one anyway

Even a distributed and/or replicated application that is able to survive the failure of one or more components can benefit from a higher level cluster:

While SYS-V init replacements like systemd can provide deterministic recovery of a complex stack of services, the recovery is limited to one machine and lacks the context of what is happening on other machines - context that is crucial to determine the difference between a local failure, clean startup or recovery after a total site failure.

Features

The ClusterLabs stack, incorporating Corosync and Pacemaker defines an Open Source, High Availability cluster offering suitable for both small and large deployments.

Components

"The definitive open-source high-availability stack for the Linux platform builds upon the Pacemaker cluster resource manager."
-- LINUX Journal, "Ahead of the Pack: the Pacemaker High-Availability Stack"

A Pacemaker stack is built on five core components:

We describe each of these in more detail as well as other optional components such as CLIs and GUIs.

Background

Pacemaker has been around since 2004 and is primarily a collaborative effort between Red Hat and SUSE, however we also receive considerable help and support from the folks at LinBit and the community in general.

Corosync also began life in 2004 but was then part of the OpenAIS project. It is primarily a Red Hat initiative, with considerable help and support from the folks in the community.

The core ClusterLabs team is made up of full-time developers from Australia, Austria, Canada, China, Czech Repulic, England, Germany, Sweden and the USA. Contributions to the code or documentation are always welcome.

The ClusterLabs stack ships with most modern enterprise distributions and has been deployed in many critical environments including Deutsche Flugsicherung GmbH (DFS) which uses Pacemaker to ensure its air traffic control systems are always available.

diff --git a/src/corosync.html b/src/corosync.html index 69878ca..8fc7042 100644 --- a/src/corosync.html +++ b/src/corosync.html @@ -1,56 +1,56 @@ --- layout: default title: Corosync ---

Virtual synchrony

A closed process group communication model with virtual synchrony guarantees for creating replicated state machines.

Availability

A simple availability manager that restarts the application process when it has failed.

Information

A configuration and statistics in-memory database that provide the ability to set, retrieve, and receive change notifications of information.

Quorum

A quorum system that notifies applications when quorum is achieved or lost.

diff --git a/src/developers.html b/src/developers.html index 5ae8e5f..e8393b2 100644 --- a/src/developers.html +++ b/src/developers.html @@ -1,44 +1,44 @@ --- layout: pacemaker title: Developers ---

Pre-built Packages

Recent versions of all major Linux distributions provide Pacemaker as part of their usual repositories, so you can usually just launch your favorite package manager.

Release History

- {% js pcmk_versions %} + {% javascript pcmk_versions %}
diff --git a/src/pacemaker/index.html b/src/pacemaker/index.html index 4dda160..b290ed1 100644 --- a/src/pacemaker/index.html +++ b/src/pacemaker/index.html @@ -1,88 +1,88 @@ --- layout: default title: Pacemaker ---
"The definitive open-source high-availability stack for the Linux platform builds upon the Pacemaker cluster resource manager." -- LINUX Journal, "Ahead of the Pack: the Pacemaker High-Availability Stack"

Features

Background

Black Duck Open Hub project report for pacemaker

Pacemaker has been around since 2004 and is primarily a collaborative effort between Red Hat and SuSE. However, we also receive considerable help and support from the folks at LinBit and the community in general.

The core Pacemaker team is made up of full-time developers from Australia, the Czech Republic, the USA, and Germany. Contributions to the code or documentation are always welcome.

Pacemaker ships with most modern Linux distributions and has been deployed in many critical environments including Deutsche Flugsicherung GmbH (DFS) which uses Pacemaker to ensure its air traffic control systems are always available.

Currently Andrew Beekhof is the project lead for Pacemaker.