Comment installer MODX Revolution sur un VPS CentOS 7 LAMP
Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i
RabbitMQ est un courtier de messages open source qui prend en charge AMQP, STOMP et d'autres technologies de communication. Il est largement utilisé dans les applications d'entreprise et les architectures de micro-services modernes où il agit comme un canal de message asynchrone entre différents micro-services. Ce guide décrira comment vous pouvez regrouper RabbitMQ sur plusieurs serveurs CentOS 7 pour former un courtier de messages à haute disponibilité. Dans ce didacticiel, un serveur agira comme serveur maître et les autres serveurs agiront comme serveurs miroir au cas où le serveur maître deviendrait indisponible.
Le pare-feu CentOS, ( firewalld
), n'autorise aucun trafic entrant par défaut. Pour rendre RabbitMQ disponible pour d'autres systèmes à l'intérieur et à l'extérieur du réseau, et pour nous permettre d'accéder à la console de gestion, nous devons d'abord ouvrir certains ports.
La console de gestion de l'interface Web de RabbitMQ écoute par défaut sur le port 15672
. Nous souhaitons rendre la console de gestion accessible au public afin de pouvoir y accéder depuis notre ordinateur. Nous allons donc demander firewalld
d'ouvrir définitivement le port 15672
dans la zone publique (qui est la zone par défaut et active sur une instance Vultr).
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
Les nœuds RabbitMQ doivent pouvoir communiquer entre eux. Nous aimerions ouvrir les ports nécessaires, mais uniquement sur le réseau interne. Nous ne voulons pas que quiconque sur Internet puisse administrer ou contacter directement nos serveurs. Les commandes suivantes supposent que nos serveurs sont sur le 192.168.0.100/24
sous - réseau.
Le premier service est le epmd
service de découverte d'homologue qui écoute par défaut sur le port 4369
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="4369" accept'
Pour les communications entre nœuds et CLI, RabbitMQ doit pouvoir communiquer sur le port 25672
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="25672" accept'
Les outils CLI communiquent sur la plage de ports 35672-35682
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="35672-35682" accept'
Si vos applications ont besoin du protocole AMQP, vous devrez également ouvrir les ports 5671
et 5672
. Si vous devez pouvoir communiquer via un autre protocole, vous pouvez trouver les informations nécessaires sur les exigences de mise en réseau de RabbitMQ sur la documentation officielle de RabbitMQ .
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="5672" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="5671" accept'
Maintenant qu'il firewalld
est configuré, nous devons lui demander de recharger la configuration.
sudo firewall-cmd --reload
Répétez les étapes de cette section sur tous les serveurs.
rabbitmqadmin
Le plugin de gestion est livré avec un outil Python appelé rabbitmqadmin
qui peut être facilement installé sur le système une fois le plugin de gestion activé.
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Vous devez utiliser les noms d'hôte du serveur pour identifier les serveurs lors du clustering. Par défaut, aucun enregistrement DNS n'est attribué aux serveurs et la connexion échoue. Pour surmonter rapidement cela, ajoutez le nom d'hôte maître et miroir au /etc/hosts
fichier à l'aide de votre éditeur préféré.
Par exemple, le fichier d'hôtes de votre maître peut ressembler à ceci. Remarquez les deux derniers enregistrements, qui permettent aux serveurs de s'identifier par leur nom d'hôte. Assurez-vous de changer les adresses IP pour les vôtres.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 guest
::1 guest
127.0.0.1 YOUR_MASTER_SERVER_HOST_NAME
::1 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.101 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.102 YOUR_MIRROR_SERVER_HOST_NAME
Une condition préalable à l'importation pour permettre aux nœuds de se rejoindre est que le cookie Erlang de tous les nœuds est identique. Par défaut, chaque nœud se verra attribuer un cookie Erlang unique, vous devez donc le reconfigurer sur tous les nœuds.
La commande suivante définira le cookie Erlang sur " WE<3COOKIES
", mais n'hésitez pas à le modifier à votre guise. Faites cela sur tous les serveurs.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Redémarrez RabbitMQ sur tous les serveurs pour vous assurer que le cookie Erlang est correctement rechargé.
sudo systemctl restart rabbitmq-server.service
Exécutez les commandes suivantes sur tous les serveurs sauf sur le serveur maître. Cela permettra aux nœuds de rejoindre le serveur maître et de former un cluster.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Vérifiez que les nœuds ont rejoint le cluster en exécutant la commande suivante.
sudo rabbitmqctl cluster_status
Tous vos nœuds apparaîtront dans la section nodes
et running_nodes
de la sortie. Désormais, vous n'avez plus besoin de répéter les étapes sur chaque serveur, la configuration sera automatiquement mise en miroir sur les autres nœuds.
Maintenant que nous avons un cluster de nœuds RabbitMQ, nous pouvons l'utiliser pour créer des files d'attente et des échanges à haute disponibilité en configurant une nouvelle stratégie. Cette stratégie peut être ajoutée via la console de gestion RabbitMQ ou à l'aide de l'interface de ligne de commande.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
La liste suivante explique ce que signifie chaque partie de la commande.
-p "/"
: Utilisez cette stratégie sur le "/"
vhost (la valeur par défaut après l'installation)--priority 1
: L'ordre dans lequel appliquer les politiques --apply-to "all"
: Peut être "queues"
, "exchanges"
ou"all"
ha
: Le nom que nous donnons à notre politique ".*"
: Expression régulière utilisée pour décider à quelles files d'attente ou échanges cette politique est appliquée. ".*"
correspondra à tout'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: Représentation JSON de la stratégie. Ce document décrit ce que nous voulons - exactement 2 nœuds sur lesquels les données sont automatiquement synchroniséesEn bref, cette politique garantira que nous aurons toujours 2 copies des données dans une file d'attente ou un échange tant que nous aurons au moins 2 nœuds opérationnels. Si vous avez plus de nœuds, vous pouvez augmenter la valeur de ha-params
. Un quorum, ( N/2 + 1
), de nœuds est conseillé. Avoir plus de copies de vos données entraînerait une augmentation de l'utilisation du disque, des E / S et du net, ce qui pourrait entraîner une dégradation des performances.
Si vous souhaitez mettre en miroir les données sur tous les nœuds du cluster, vous pouvez utiliser le document JSON suivant.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Si vous souhaitez mettre en miroir les données uniquement sur des nœuds spécifiques (par exemple: node-1
et node-2
), vous pouvez utiliser ce qui suit.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Vous pouvez modifier l'expression régulière pour affecter différentes stratégies à différentes files d'attente. Disons que nous avons les trois nœuds suivants:
Nous pouvons ensuite créer deux stratégies qui entraîneront la mise en miroir du rabbit@client-ha
nœud du nom des files d'attente commençant par "client" et la mise en miroir du nœud de toutes les files d'attente dont le nom commence par "produit" rabbit@product-ha
.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-client "client.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@client-ha"], "ha-sync-mode": "automatic"}
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-product "product.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@product-ha"], "ha-sync-mode": "automatic"}
Une petite remarque ici: les files d'attente exclusives ne sont jamais mises en miroir ou durables dans RabbitMQ, même si cette stratégie correspondrait à ces files d'attente. Les files d'attente exclusives sont automatiquement détruites une fois qu'un client se déconnecte et, en tant que tel, il serait inutile de le répliquer sur un autre serveur. Si le serveur venait à tomber en panne, le client s'en déconnecterait et la file d'attente serait automatiquement détruite. Les instances en miroir seraient également détruites.
Afin de tester la configuration en cluster, nous pouvons créer une nouvelle file d'attente à l'aide de l'interface de ligne de commande via la console de gestion.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Cela créera une file d'attente durable sur le /
vhost par défaut avec le nom my-ha-queue
.
Exécutez la commande suivante et vérifiez dans la sortie que la file d'attente a notre stratégie «ha» affectée et a des pid sur le maître et sur un nœud miroir.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Nous pouvons maintenant publier un message dans la file d'attente à partir du nœud maître et arrêter RabbitMQ sur le nœud maître.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Maintenant, récupérez-le en vous connectant au nœud miroir.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
Enfin, nous pouvons redémarrer notre nœud maître.
sudo systemctl start rabbitmq-server.service
Comme mentionné précédemment, RabbitMQ crée automatiquement un utilisateur invité avec un mot de passe invité par défaut. Ce serait une mauvaise pratique de laisser cet utilisateur par défaut sur un système exposé publiquement.
sudo rabbitmqctl delete_user guest
Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i
Vultr vous offre une connectivité réseau privée impressionnante pour les serveurs fonctionnant au même endroit. Mais parfois, vous voulez deux serveurs dans des pays différents
Vous utilisez un système différent? Introduction CyberPanel est lun des premiers panneaux de contrôle du marché à la fois open source et utilisant OpenLiteSpeed. Quest-ce que
Vous utilisez un système différent? ESpeak peut générer des fichiers audio de synthèse vocale (TTS). Ceux-ci peuvent être utiles pour de nombreuses raisons, telles que la création de votre propre Turin
Vous utilisez un système différent? Thelia est un outil open source pour la création de sites Web de commerce électronique et la gestion de contenu en ligne, écrit en PHP. Code source Thelia i
BBR (Bottleneck Bandwidth and RTT) est un nouvel algorithme de contrôle de congestion qui est contribué à la pile TCP du noyau Linux par Google. Avec BBR en place,
YOURLS (Your Own URL Shortener) est une application open source de raccourcissement dURL et danalyse de données. Dans cet article, nous couvrirons le processus dinstallation
Vous utilisez un système différent? RTMP est idéal pour diffuser du contenu en direct. Lorsque RTMP est associé à FFmpeg, les flux peuvent être convertis en différentes qualités. Vultr i
LimeSurvey est un outil de sondage en ligne gratuit et open source qui est largement utilisé pour publier des sondages en ligne et recueillir des commentaires sur les sondages. Dans cet article, je vais
Introduction Java est une plate-forme logicielle populaire qui vous permet de développer et dexécuter des applications et des applets Java dans divers environnements matériels. Il y a
Vous utilisez un système différent? Le forum Vanilla est une application de forum open source écrite en PHP. Il est entièrement personnalisable, facile à utiliser et prend en charge externa
Vous utilisez un système différent? Netdata est une étoile montante dans le domaine de la surveillance des métriques système en temps réel. Par rapport à dautres outils du même type, Netdata:
Dans ce didacticiel, découvrez comment configurer un serveur multijoueur Just Cause 2. Prérequis Veuillez vous assurer que le système est entièrement mis à jour avant de commencer
Vous utilisez un système différent? Dans ce tutoriel, je vais vous expliquer comment configurer un serveur Starbound sur CentOS 7. Prérequis Vous devez posséder ce jeu sur vous
ZNC est un videur IRC gratuit et open-source qui reste connecté en permanence à un réseau afin que les clients puissent recevoir des messages envoyés lorsquils sont hors ligne. Thi
Django est un framework Python populaire pour lécriture dapplications Web. Avec Django, vous pouvez créer des applications plus rapidement, sans réinventer la roue. Si tu veux
ionCube Loader est une extension PHP qui permet à un serveur Web dexécuter des fichiers PHP qui ont été encodés à laide dionCube Encoder et qui est requis pour exécuter e
Vous utilisez un système différent? Reader Self 3.5 est un lecteur RSS auto-hébergé simple et flexible, gratuit et open source et une alternative à Google Reader. Reader Sel
Introduction Dans ce tutoriel, installez bien PufferPanel sur notre Vultr VPS. PufferPanel est un panneau de contrôle open source et gratuit pour vous gérer
Vous utilisez un système différent? Introduction BoltWire est un système de gestion de contenu gratuit et léger écrit en PHP. Comparé à la plupart des autres gestionnaires de contenu
Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau
ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.
Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+
Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.
Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus
13 outils commerciaux d'extraction de données de Big Data
Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true
Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.
Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1
L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.