24.6. Configuration d'un cluster de haute disponibilité avec des contraintes de ressources
La procédure suivante utilise le rôle système ha_cluster
pour créer un cluster de haute disponibilité qui inclut des contraintes d'emplacement des ressources, des contraintes de colocation des ressources, des contraintes d'ordre des ressources et des contraintes de ticket des ressources.
Conditions préalables
ansible-core
est installé sur le nœud à partir duquel vous souhaitez exécuter le playbook.NoteIl n'est pas nécessaire que
ansible-core
soit installé sur les nœuds membres du cluster.-
Le paquetage
rhel-system-roles
est installé sur le système à partir duquel vous souhaitez exécuter le playbook. - Les systèmes que vous utiliserez comme membres de votre cluster disposent d'une couverture d'abonnement active pour RHEL et RHEL High Availability Add-On.
Le rôle de système ha_cluster
remplace toute configuration de cluster existante sur les nœuds spécifiés. Tous les paramètres non spécifiés dans le rôle seront perdus.
Procédure
- Créez un fichier d'inventaire spécifiant les nœuds de la grappe, comme décrit dans la section Spécification d'un inventaire pour le rôle de système ha_cluster.
Créez un fichier playbook, par exemple
new-cluster.yml
.NoteLors de la création de votre fichier playbook pour la production, le coffre-fort crypte le mot de passe, comme décrit dans Cryptage du contenu avec Ansible Vault.
L'exemple de fichier playbook suivant configure un cluster exécutant les services
firewalld
etselinux
. Le cluster comprend des contraintes de localisation des ressources, des contraintes de colocation des ressources, des contraintes d'ordre des ressources et des contraintes de ticket des ressources.- hosts: node1 node2 vars: ha_cluster_cluster_name: my-new-cluster ha_cluster_hacluster_password: password ha_cluster_manage_firewall: true ha_cluster_manage_selinux: true # In order to use constraints, we need resources the constraints will apply # to. ha_cluster_resource_primitives: - id: xvm-fencing agent: 'stonith:fence_xvm' instance_attrs: - attrs: - name: pcmk_host_list value: node1 node2 - id: dummy-1 agent: 'ocf:pacemaker:Dummy' - id: dummy-2 agent: 'ocf:pacemaker:Dummy' - id: dummy-3 agent: 'ocf:pacemaker:Dummy' - id: dummy-4 agent: 'ocf:pacemaker:Dummy' - id: dummy-5 agent: 'ocf:pacemaker:Dummy' - id: dummy-6 agent: 'ocf:pacemaker:Dummy' # location constraints ha_cluster_constraints_location: # resource ID and node name - resource: id: dummy-1 node: node1 options: - name: score value: 20 # resource pattern and node name - resource: pattern: dummy-\d+ node: node1 options: - name: score value: 10 # resource ID and rule - resource: id: dummy-2 rule: '#uname eq node2 and date in_range 2022-01-01 to 2022-02-28' # resource pattern and rule - resource: pattern: dummy-\d+ rule: node-type eq weekend and date-spec weekdays=6-7 # colocation constraints ha_cluster_constraints_colocation: # simple constraint - resource_leader: id: dummy-3 resource_follower: id: dummy-4 options: - name: score value: -5 # set constraint - resource_sets: - resource_ids: - dummy-1 - dummy-2 - resource_ids: - dummy-5 - dummy-6 options: - name: sequential value: "false" options: - name: score value: 20 # order constraints ha_cluster_constraints_order: # simple constraint - resource_first: id: dummy-1 resource_then: id: dummy-6 options: - name: symmetrical value: "false" # set constraint - resource_sets: - resource_ids: - dummy-1 - dummy-2 options: - name: require-all value: "false" - name: sequential value: "false" - resource_ids: - dummy-3 - resource_ids: - dummy-4 - dummy-5 options: - name: sequential value: "false" # ticket constraints ha_cluster_constraints_ticket: # simple constraint - resource: id: dummy-1 ticket: ticket1 options: - name: loss-policy value: stop # set constraint - resource_sets: - resource_ids: - dummy-3 - dummy-4 - dummy-5 ticket: ticket2 options: - name: loss-policy value: fence roles: - linux-system-roles.ha_cluster
- Enregistrer le fichier.
Exécutez le playbook en indiquant le chemin d'accès au fichier d'inventaire inventory que vous avez créé à l'étape 1.
# ansible-playbook -i inventory new-cluster.yml