Установите сервер Linux в кластер высокой доступности

{title}

Сколько раз нам требовалось, чтобы наши службы или, вернее, наши службы оставались всегда доступными, и сколько раз нам случалось, что жесткий диск нашего сервера был поврежден, и у нас нет резервной копии, ну, подумав в этих обстоятельствах, я решил создать этот учебник чтобы наши серверы или, вернее, наши сервисы были всегда онлайн .

Принимая во внимание, что руководство предназначено для опытных людей в Linux, я не буду касаться таких вопросов, как установка базовой системы, на этот раз я буду использовать CentOS 6 64 бит в своем последнем обновлении. Кроме того, я только упомяну, что строго необходимо для работы кластера (серверы высокой доступности).

Я также комментирую, что это руководство направлено на то, чтобы веб-сервис всегда оставался активным, хотя я успешно использовал его с другими сервисами, я думаю, что для начала, а точнее для инициации, самое простое - создать сервер. веб-кластер.

Без дальнейших церемоний давайте перейдем к хорошему.

Системные требования

1. ОЗУ 1 ГБ
2. Жесткий диск 80 ГБ
3. Celeron процессор
4. Разделение данных для кластера (размер, который вы хотите создать)
5. Операционная система CentOS 6 (в ее последнем обновлении)

Если вы соответствуете требованиям, давайте начнем установку кластера Linux .

Далее необходимо установить DRBD для синхронизации разделов на обоих серверах, для этого необходимо выполнить следующие инструкции в Shell :

1. Добавьте ELRepo в список системных репозиториев.

 [ ~] rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm 

2. Установите утилиты drbd (распределенное реплицированное блочное устройство) и пакеты kmod

 [ ~] yum install -y kmod-drbd83 drbd83-utils 
(Лично я использую 8.3, так как 8.4 дал мне проблемы с некоторыми дистрибутивами)

3. drbd добавляется или вставляется в ядро ​​системы

 [ ~] modprobe drbd 

4. Файл ресурса для drbd должен быть создан
Он находится по адресу /etc/drbd.d/mydrbd.res; mydrbd.res - это имя файла, и оно может быть изменено любым пользователем, если мы сохраняем расширение .res; этот файл должен быть создан на обоих серверах или, если файл настроен правильно, он копируется на второй узел; конфигурация будет более или менее следующей:

 ресурс mydrbd {# это имя протокола ресурса C; запуск {wfc-timeout 180; degr-wfc-timeout 120;} # 180 секунд ожидания ведомого устройства, 120 секунд, если оно не отвечает, оно ухудшается и остается в качестве дополнительного диска {on-io-error detach; } net {cram-hmac-alg "sha1"; shared-secret "секретный ключ";} # В этой части указан ключ с шифрованием sha1, этот ключ предназначен для связи между двумя узлами. syncer {скорость 100M;} # скорость синхронизации, не имеет значения, если у нас есть гигабитная сетевая карта, она не работает на 1000M, максимальная рекомендуемая скорость составляет 100M (я установил ее с 10M, и она отлично работает, первая синхронизация немного медленная, но после того как разница не видна) на node1 {device / dev / drbd0; # Здесь мы указываем, какое устройство зарезервировано для drbd, у нас может быть несколько устройств для разных данных или разные сервисы, такие как SAMBA, MySQL, среди прочего disk / dev / md2; # указан раздел, который будет использоваться для адреса drbd 172.16.0.1:7788; # Мы указываем IP-адрес вне диапазона нашей сети, следует отметить, что сетевой кабель должен быть подключен напрямую между серверами, без прохождения через коммутатор или концентратор, если они являются сетевыми картами последних моделей, перекрестный кабель не требуется. мета-диск внутренний; } на узле 2 {# спецификации второго должны совпадать с первыми, просто измените IP-адрес, это должен быть один и тот же порт, потому что если у нас есть 2 кластера вместе, они будут конфликтовать и не будут работать правильно, если мы хотим иметь несколько кластеров, рекомендуется использовать несколько портов, стоит отметить, что эти порты должны быть одинаковыми на обоих узлах. устройство / dev / drbd0; диск / dev / md2; адрес 172.16.0.2:7788; мета-диск внутренний; }} 

{title}

5. Ниже приведена конфигурация файла хоста.

Это делается для того, чтобы серверы просматривались через ip синхронизации, а не через ip локальной сети, и, таким образом, избегали конфликтов с сервисами:

 / etc / hosts 192.168.1.1 узел1 # имя узла1 в сегменте локальной сети 192.168.1.2 узел2 # имя узла2 в сегменте локальной сети 172.16.0.1 узел1 # имя узла 1 в сегменте сети синхронизации 172.16.0.2 узел2 # имя узла 2 в сегменте синхронизации сети 

6. Блок памяти для drbd инициализирован

 [ ~] drbdadm create-md disk1 

7. Служба Drbd или Deamon запускается

 /etc/init.d/drbd start 

8. На узле, который мы хотим быть основным, мы выполняем следующую команду

 drbdadm - - перезаписать первичный диск data-of-peer1 

9. Контролируем синхронизацию обоих узлов
Для этого мы выполним:

 cat / proc / drbd 
Ответ предыдущей команды выглядит примерно так:
 версия: 8.3.15 (api: 88 / proto: 86-97) GIT-хеш: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by, 2012-12-20 20:23:49 1: cs: SyncSource ro: Primary / Secondary ds: UpToDate / Inconsistent Cr - n-ns: 1060156 nr: 0 dw: 33260 dr: 1034352 al: 14 bm: 62 lo: 9 pe: 78 ua: 64 ap: 0 ep: 1 wo: f oos: 31424 [== ================>.] синхронизировано: 97, 3% (31424/1048508) K финиш: 0:00:01 скорость: 21 240 (15, 644) К / с # Здесь можно обратите внимание, что синхронизация идет до 97, 3%, и указано, что это основной узел, а дополнительный - несогласованный, поскольку синхронизация еще не завершена. # После завершения мы снова запускаем cat / proc / drbd и получаем следующее: версия: 8.3.15 (api: 88 / proto: 86-97) GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by, 2012-12-20 20:23:49 1: cs: Подключено ro: Primary / Secondary ds: UpToDate / UpToDate C r–– ns: 1081628 nr: 0 dw: 33260 dr: 1048752 al: 14 bm: 64 lo: 0 pe: 0 ua: 0 ap: 0 ep: 1 wo: f oos: 0 # После возврата сообщения UpToDate мы знаем, что синхронизация завершена и разделы drbd точно такие же. 

$config[ads_text5] not found

10. Далее нужно отформатировать наше устройство drbd.

Для этого мы выполняем:

 mkfs.ext3 / dev / drbd1 
Я использую ext3, потому что он дал мне хорошую стабильность, но мы могли бы также использовать ext4, я не рекомендую использовать любой тип раздела ниже ext3.

На данный момент мы уже можем монтировать раздел / dev / drbd1 вручную в любой точке монтирования системы, в моем случае я использую / home для монтирования, поскольку каждый из пользователей, зарегистрированных в обоих узлах, имеет свои собственные каталоги для веб-страниц. Поэтому я выполняю:

 mount –t ext3 / dev / drbd1 / home 
И я начинаю создавать пользователей для репликации данных на обоих серверах, ниже приводится установка heartbeat, приложения, используемого для мониторинга серверов, и кто будет отвечать за внесение соответствующих изменений, если основной сервер по каким-то причинам падает и преобразует вторичный в первичном для обеспечения функциональности Системы.

Для установки сердцебиения должны быть выполнены только следующие шаги. Репозиторий для загрузки устанавливается с помощью следующей команды:

 rpm –ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
Отредактируйте файл:
 epel.repo /etc/yum.repos.d/epel.repo 
измените строку # 6 'enable = 1 для enable = 0'; При желании вы можете использовать редакторы vi или nano.
 [epel] name = Дополнительные пакеты для Enterprise Linux 6 - $ basearch # baseurl = http: //download.fedoraproject.org/pub/epel/6/$basearch mirrorlist = http: //mirrors.fedoraproject.org/metalink? repo = epel-6 & arch = $ basearch failovermethod = priority enabled = 0 # Это строка, которую мы должны отредактировать Установите heartbeat с помощью следующей команды: yum –enablerepo = epel install heartbeat После завершения установки он сообщит нам нечто похожее на: Installed: heartbeat .i686 0: 3.0.4-1.el6 Завершено! 
Как только процесс установки будет завершен, необходимо отредактировать 3 основных файла для операции пульса; находится в /etc/ha.d
  • authkeys
  • ha.cf
  • haresources

Мы открываем файл authkeys следующей командой:

 vi /etc/ha.d/authkeys 
Добавлены следующие строки:
 auth 1 1 sha1 claveparaconexionentreheartbeats # В этой строке мы определяем, что будет ключом для обмена друг с другом сердцебиением каждого узла, он может быть таким же, как и используемый в drbd, или другим. 
Мы изменили права доступа к файлу authkeys, чтобы он мог быть прочитан только пользователем root:
 chmod 600 /etc/ha.d/authkeys 
Теперь мы редактируем второй файл:
 vi /etc/ha.d/ha.cf 
Мы добавляем следующие строки:
 logfile / var / log / ha-log # системный журнал включен для будущих ошибок локальный logfacility 0 keepalive 2 deadtime 30 # Система ждет 30 секунд, чтобы объявить узел 1 неработоспособным initdead 120 # Система ждет 120 секунд при запуске узла Ждать другого. bcast eth0 # Карта Ethernet указывается, по какой связи между серверами будет передаваться, очень важно обратить внимание, так как здесь мы определяем, какая сетевая карта идет в локальную сеть, а какая - к прямой синхронизации 694 # указан порт синхронизации Так как в drbd у нас может быть несколько серверов, и каждая пара с соответствующим портом определена как auto_failback off #, отметив его, мы предотвращаем повреждение узла 1 и его ухудшение, чтобы он возвращался как основной или пытался вернуться, создавая конфликт с другим узлом узел узел1 узел2 # Мы указываем имена обоих узлов. 

{title}

Чтобы завершить настройку, мы должны отредактировать файл haresources с помощью команды:

 vi /etc/ha.d/haresources 
Добавьте следующие строки:
 node1 192.168.1.10/24/eth0 drbddisk :: mydrbd Файловая система :: / dev / drbd0 :: / home :: ext3 # эта строка отвечает за монтирование раздела данных на узле, на который ссылается основной узел1 192.168.1.10/24/ eth0 httpd # эта строка отвечает за определение службы Apache или веб-сервера для указанного узла в качестве основного 

{title}

Эти 3 файла должны быть скопированы на узел 2, об этом позаботится следующая команда:

 scp -r /etc/ha.d/ : / etc / 
Файл httpd.conf должен быть отредактирован для прослушивания виртуальных ip-запросов, в данном случае 192.168.1.10:
 vi /etc/httpd/conf/httpd.conf 
Добавлена ​​или изменена строка Listen 192.168.1.10:80
Измененный файл копируется на второй сервер:
 scp /etc/httpd/conf/httpd.conf : / etc / httpd / conf / 
Мы запускаем службу сердцебиения на обоих узлах:
 /etc/init.d/heartbeat start 
После этого мы подготовили наш сервер высокой доступности, достаточно лишь зайти в наш интернет-браузер и настроить IP 192.168.1.10 или установить панель по вашему выбору для администрирования домена и создать соответствующих пользователей для доступа к страницы или домены, зарегистрированные на сервере.

$config[ads_text5] not found

Сервер высокой доступности можно использовать, как я уже упоминал в начале этого урока, как: почтовый сервер, веб-сервер, сервер базы данных, сервер samba и другие; Кроме того, это помогает нам предотвратить потерю информации из-за аппаратных сбоев, и мы можем еще больше усилить ее с помощью рейдов на дисках, как аппаратных, так и программных, и никогда не будет иметь рейдовых дисков для обслуживания системы.

Тем не менее, сервер высокой доступности не без проблем или ошибок, когда узел ухудшается, мы можем перейти в журнал пульса, чтобы увидеть, что произошло, это достигается путем доступа к файлу, назначенному в конфигурации haresources в / etc / ha.d

$config[ads_text6] not found

Точно так же может случиться так, что при перезапуске обоих серверов по какой-то причине они не запускаются как первичные / вторичные, а начинаются как первичные / неизвестные и неизвестные / вторичные.

$config[ads_text5] not found

{title}

Чтобы решить эту проблему, мы должны выполнить следующие шаги.

В командной консоли отброшенного узла мы набираем:

 вторичный ресурс drbdadm 
позже:
 drbdadm отключить ресурс 
А потом:
 drbdadm - --discard-my-data connect resource 
Наконец, в уцелевшем узле или первичном мы набираем:
 drbdadm подключить ресурс 
Теперь вы начнете ресинхронизацию узлов из выжившего узла в удаленный узел, начиная сразу же, нажав клавишу «Ввод» в инструкции 4.

То, что здесь произошло, называется разделенным мозгом, это происходит, когда по какой-то причине первичный узел выходит из строя и ухудшается, как только это произойдет, настоятельно рекомендуется тщательно проанализировать и проанализировать отброшенный узел, а затем снова включить его в кластер. При любой существующей проблеме может также потребоваться переустановить всю операционную систему этого узла, и без каких-либо проблем включить ее в кластер в качестве дополнительного для синхронизации и, если необходимо, после синхронизации изменить его на основной.

$config[ads_text6] not found

Наконец, я хотел бы сделать небольшой акцент на периодическом обзоре работоспособности кластера, который, как мы хорошо знаем, для высокой производительности всегда хорошо быть на шаг впереди компьютерных катастроф; Поскольку в качестве ИТ-персонала на нас ложится ответственность за заботу о данных компании или компаний, к которым мы принадлежим, в качестве дополнительного примечания, я думаю, что не рекомендуется всегда иметь резервную копию в альтернативном узле для узлов и, таким образом, иметь гарантированную информационную безопасность

Установите и настройте Ubuntu Server

  • 0