Как установить Anchor CMS на CentOS 7 LAMP VPS
Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.
RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Он широко используется в корпоративных приложениях и современных архитектурах микросервисов, где он выступает в качестве асинхронного канала передачи сообщений между разными микросервисами. В этом руководстве будет описано, как можно кластеризовать RabbitMQ на нескольких серверах CentOS 7 для формирования брокера сообщений высокой доступности. В этом руководстве один сервер будет действовать как главный сервер, а другие серверы будут действовать как зеркальные серверы в случае, если главный сервер станет недоступным.
Брандмауэр CentOS ( firewalld
) по умолчанию не разрешает входящий трафик. Чтобы сделать RabbitMQ доступным для других систем в сети и за ее пределами, и чтобы мы могли получить доступ к консоли управления, мы должны сначала открыть некоторые порты.
Консоль управления веб-интерфейсом RabbitMQ по умолчанию прослушивает порт 15672
. Мы хотели бы сделать консоль управления общедоступной, чтобы иметь к ней доступ с нашего компьютера. Поэтому мы дадим указание firewalld
постоянно открывать порт 15672
в публичной зоне (которая является активной и активной зоной в экземпляре Vultr).
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
Узлы RabbitMQ должны иметь возможность общаться друг с другом. Мы хотели бы открыть необходимые порты, но только через внутреннюю сеть. Мы не хотим, чтобы кто-либо в Интернете мог администрировать или напрямую связываться с нашими серверами. Следующие команды предполагают, что наши серверы находятся в 192.168.0.100/24
подсети.
Первая служба - это epmd
служба обнаружения пиров, которая по умолчанию прослушивает порт 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'
Для междоузлия и CLI связи, RabbitMQ должен быть в состоянии общаться через порт 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'
Инструменты CLI взаимодействуют через диапазон портов 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'
Если вашим приложениям нужен протокол AMQP, вам также необходимо открыть порты 5671
и 5672
. Если вам нужно иметь возможность общаться по другому протоколу, вы можете найти необходимую информацию о сетевых требованиях RabbitMQ в официальной документации 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'
Теперь, когда firewalld
это настроено, нам нужно дать ему команду перезагрузить конфигурацию.
sudo firewall-cmd --reload
Повторите шаги из этого раздела на всех серверах.
rabbitmqadmin
Плагин управления поставляется с инструментом Python, rabbitmqadmin
который можно легко установить в системе после включения плагина управления.
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Вы должны использовать имена хостов сервера для идентификации серверов при кластеризации. По умолчанию серверам не назначена запись DNS, и соединение не будет установлено. Чтобы быстро преодолеть это, добавьте имя главного и зеркального хоста в /etc/hosts
файл, используя ваш любимый редактор.
Например, файл hosts вашего мастера может выглядеть следующим образом. Обратите внимание на последние две записи, которые позволяют серверам идентифицировать друг друга по имени хоста. Обязательно измените IP-адреса на свои.
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
Обязательным условием импорта, позволяющим узлам соединяться друг с другом, является то, что файл cookie Erlang всех узлов идентичен. По умолчанию каждому узлу будет присвоен уникальный файл cookie Erlang, поэтому вы должны перенастроить его на всех узлах.
Следующая команда установит для файла cookie Erlang значение « WE<3COOKIES
», но вы можете сменить его по своему вкусу. Сделайте это на всех серверах.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Перезапустите RabbitMQ на всех серверах, чтобы убедиться, что файл cookie Erlang правильно загружен.
sudo systemctl restart rabbitmq-server.service
Выполните следующие команды на всех серверах, кроме главного. Это позволит узлам присоединиться к главному серверу и сформировать кластер.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Убедитесь, что узлы присоединились к кластеру, выполнив следующую команду.
sudo rabbitmqctl cluster_status
Все ваши узлы будут отображаться в nodes
и running_nodes
разделе продукции. Отныне вам больше не нужно повторять шаги на каждом сервере, конфигурация будет автоматически отражаться на других узлах.
Теперь, когда у нас есть кластер узлов RabbitMQ, мы можем использовать это для создания очередей и обменов высокой доступности путем настройки новой политики. Эту политику можно добавить через консоль управления RabbitMQ или с помощью интерфейса командной строки.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
Следующий список объяснит, что означает каждая часть команды.
-p "/"
: Используйте эту политику на "/"
vhost (по умолчанию после установки)--priority 1
: Порядок применения политик --apply-to "all"
: Может быть "queues"
, "exchanges"
или"all"
ha
: Название, которое мы даем нашей политике ".*"
: Регулярное выражение, которое используется для определения того, к каким очередям или обменам применяется эта политика. ".*"
будет соответствовать чему угодно'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: Представление политики в формате JSON. Этот документ описывает, что мы хотим - ровно 2 узла, на которых данные автоматически синхронизируютсяКороче говоря, эта политика гарантирует, что у нас всегда будет 2 копии данных в очереди или при обмене, если у нас есть хотя бы 2 узла. Если у вас есть больше узлов, вы можете увеличить значение ha-params
. Рекомендуется кворум ( N/2 + 1
) узлов. Наличие большего количества копий ваших данных приведет к увеличению использования диска, ввода-вывода и сети, что может привести к снижению производительности.
Если вы хотите отразить данные на всех узлах кластера, вы можете использовать следующий документ JSON.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Если вы хотите отразить данные только для определенных узлов (например: node-1
и node-2
), вы можете использовать следующее.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Вы можете изменить регулярное выражение для назначения разных политик разным очередям. Скажем, у нас есть следующие три узла:
Затем мы можем создать две политики, которые приведут к тому, что очереди с именем, начинающимся с «клиента», будут зеркально отображаться на rabbit@client-ha
узле, а все очереди с именем, начинающимся с «продукта», будут зеркально отображаться на 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"}
Небольшое замечание: исключительные очереди никогда не отражаются и не являются долговечными в RabbitMQ, даже если эта политика будет соответствовать таким очередям. Исключительные очереди автоматически уничтожаются, когда клиент отключается, и, следовательно, будет бесполезно копировать его на другой сервер. В случае сбоя сервера клиент отключится от него, и очередь будет автоматически уничтожена. Зеркальные экземпляры также будут уничтожены.
Чтобы протестировать кластерную настройку, мы можем создать новую очередь, используя интерфейс командной строки через консоль управления.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Это создаст долговременную очередь на /
vhost по умолчанию с именем my-ha-queue
.
Выполните следующую команду и убедитесь в том, что для очереди назначена наша политика 'ha' и pid на главном и зеркальном узле.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Теперь мы можем опубликовать сообщение в очередь от главного узла и остановить RabbitMQ на главном узле.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Теперь верните его, подключившись к зеркальному узлу.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
Наконец, мы можем перезапустить наш главный узел.
sudo systemctl start rabbitmq-server.service
Как упоминалось ранее, RabbitMQ автоматически создает гостевого пользователя с гостевым паролем по умолчанию. Было бы плохой практикой оставлять этого пользователя по умолчанию в общедоступной системе.
sudo rabbitmqctl delete_user guest
Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.
При настройке нового сервера Linux рекомендуется обновить ядро системы и другие пакеты до последней стабильной версии. В этой статье
Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам
Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья
Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания
OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через
OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в
Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я
MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns
Используете другую систему? Netdata - восходящая звезда в области мониторинга показателей системы в режиме реального времени. По сравнению с другими инструментами того же рода, Netdata:
Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе
Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия
Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и
Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.
Традиционные подходы к анализу данных невозможно использовать, когда наборы данных достигают определенного размера. Современная альтернатива анализу огромных массивов данных, которые я
Elasticsearch - популярный движок полнотекстового поиска и аналитики с открытым исходным кодом. Благодаря своей универсальности, масштабируемости и простоте использования, Elasticsearch широко используется
Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на
Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер
Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше