Qu'est-ce qu'un cluster?

Son rôle principal est de permettre d'avoir dans un seul indicateur l'état agrégé d'autres états. Cet indicateur propose une vue unique pour des utilisateurs jouant différents rôles.

Rôles typiques:

  • Service delivery Management
  • Business Management
  • Engineering
  • IT support

Prenons l'exemple d'un rôle de service delivery pour une application ERP . Il est principalement constitué de:

  • 2 databases, en haute disponibilité, donc avec une seule base active, le service est considéré comme rendu
  • 2 web servers, en partage de charge, donc avec un web server actif, le service est considéré comme rendu
  • 2 load balancers, encore en haute disponibilité

Ces composants (Hôtes dans cet exemple) seront la base de ce service ERP .

Avec des règles métier, vous pouvez avoir une vue agrégée de l'indicateur représentant l'état du service ERP !

Shinken Enterprise vérifie chaque composant un par un pour l'analyse de problème source. .

Accéder à la configuration du Cluster

Accès par le menu principal "Elements".

Comment définri les Clusters

Exemple de configuration d'une règle ERP :

 

(srv-oracle-1 | srv-oracle-2) & (srv-http-1 | srv-http-2) & (srv-loadbalancer-1 | srv-loadbalancer-2)

Logique de notification

Un Cluster a la même logique de notification que les hôtes. 

Avec "nécessite au moins " X éléments" clusters

Dans certains cas, un cluster de N éléments nécessite d'avoir au moins X d'entre eux en état OK pour tourner. C'est facilement paramétrable, il suffit d'utiliser l'opérateur "X of:" .

Voici un exemple avec 3 http web servers, et au moins 2 d'entre eux en état OK :

(srv-oracle-1 | srv-oracle-2) & (2 of: srv-http-1 & srv-http-2 & srv-http-3) & (srv-loadbalancer-1 | srv-loadbalancer-2)
 

Possible values of X in X of: expressions

The X of: expression may be configured different values depending on the needs.

The supported expressions are described below:

  • A positive integer, which means "at least X host should be up"
  • A positive percentage, which means "at least X percents of hosts should be up".
    It may be combined with Groupping expression expansion to build expressions
    such as "95 percents of the web front ends shoud be up".
  • This way, adding hosts in the web frontend hostgroup is sufficient, and the QoS remains the same.
  • A negative integer, which means "at most X host may be down"
  • A negative percentage, which means "at most X percents of hosts should may be down".
    It may be combined with Groupping expression expansion to build expressions
    such as "5 percents of the web front ends may be down".
    This way, adding hosts in the web frontend hostgroup is sufficient, and the QoS remains the same.

 

(srv-oracle-1 | srv-oracle-2) & (srv-loadbalancer-1 | srv-loadbalancer-2) & 95% of: g:frontend

The NOT rule

You can define a not state rule. It can be useful for active/passive setups for example. You just need to add a ! before your element name.

Aggregated state will be ok if database1 is UP and database2 DOWN on this example.

(srv-oracle-1 & !srv-oracle-2)

Grouping expression expansion

Sometimes, you do not want to specify explicitly the hosts contained in a business rule,
but prefer use a grouping expression such as *hosts from the hostgroup xxx*.

To do so, it is possible to use a *grouping expressionwhich is expanded into hosts or services. The supported expressions use the following syntax:

flag:expression

The flag is a single character qualifying the expansion type.
The supported types (and associated flags) are described in theses tables.

Host flags

FlagExpansionExampleEquivalent to
gContent of the hostgroupg:websweb-srv1 & web-srv2 & ...
rHosts which name
matches regex
r:^webweb-srv1 & web-srv2 & ...
tHosts which are holding
a host template
t:httpweb-srv1 & web-srv2 & ...

Check flags

FlagExpansionExampleEquivalent to
rChecks which description
matches regex
regex r:^HTTPS?web-srv1,HTTP & db-srv2,
HTTPS & ...
tChecks which are
holding templates
t:httpweb-srv1,HTTP & db-srv2,
HTTPS & ...

 Examples of combined expansion expression

You want to build a business rule including all web servers composing the application frontend.

l:front,r:HTTPS?

which is equivalent to:

web-srv1,HTTP & web-srv3,HTTPS

You may obviously combine expression expansion with standard expressions.

l:front,h:HTTPS? & db-srv1,MySQL

which is equivalent to:

(web-srv1,HTTP & web-srv3,HTTPS) & db-srv1,MySQL