Rate this post

Обеспечение отказоустойчивости с помощью репликации хранилища средствами GlusterFS.nnЯ хочу поделиться своим  DocumentRoot /var/www/html/ между двумя веб серверами Apache. Оба моих веб-сервера стоят за балансировщиком распределения нагрузки прокси сервера Nginx. Как настроить и установить GlusterFS ( «распределенное хранилище»), которая является масштабируемой сетевой файловой системой на Ubuntu Linux 16.04 LTS сервер?nnGlusterFS является сетевой файловой системой распределенного хранения с свободным и открытым исходным кодом. Сеть распределенных файловых систем хранения очень популярна среди веб-сайтов для интеренет торговли с свысокой нагрузкой, облачных вычислений, потоковых медиа-услуг, (сети доставки контента) CDN и многое другое. Этот статья покажет вам , как установить GlusterFS на Ubuntu Linux 16.04 LTS сервер и настроить 2 узла хранения высокой доступности для вашего вебсервера.n

Пример установки

кластерная файловая системаnn nnОблако или физический сервер будет единственной точкой отказа. Например /var/www/html/ может быть точкой отказа?  Мы используем два веб-сервера Apache. Тем не менее, как обечпечитьт, чтобы /var/www/html/ синхронизируются на обоих серверах Apache? Вы не хотите, чтобы данные и страницы для клиентов с разных серверов отличались. Чтобы сохранить /var/www/html/ в синхронизации вам нужен кластерная система хранения. Даже если один узел выходит из строя другой продолжает работать. Более того, когда вышедший из строя узел подключается обратно, он должен синхронизировать отсутствующие файлы с другого сервера в /var/www/html/.n

Как настроить репликацию в GlusterFS для обеспечения высокой доступности хранения?

  • Минимум два отдельных хранилища (может быть облако или физический сервер)
  • Каждый сервер должен иметь отдельный раздел или диск для GlusterFS. Для примера будем использовать /dev/vdb1 раздел.
  • Частная сеть (LAN / VLAN) между серверами
  • Ubuntu Linux 16.04 LTS на обоих серверах

Хватить говорить, приступим к работе с установкой GlusterFS и конфигурацией на Ubuntu.n

Шаг 1 — Настройка /etc/hosts

Первоначальная настройка /etc/host файла:n

$ sudo vi /etc/hosts

Установить правильный  IP-адрес в соответствии с картинкой или согласно вашей установки:n

 192.168.2.11 gfs01n 192.168.2.12 gfs02

Закройте и сохраните файл. Проверьте:n

$ ping -c2 gfs01 n$ ping -c2 gfs02

Шаг 2 — Настройка IPTables для трафика между gfs01 и gfs02

Введите следующие на gfs01 , чтобы разрешить весь трафик от узла gfs02:n

$ sudo ufw allow proto any from 192.168.1.12 to 192.168.1.11

Введите следующие на gfs02 , чтобы разрешить весь трафик от узла gfs01:n

$ sudo ufw allow proto any from 192.168.1.11 to 192.168.1.12

Шаг 3 — Настройка репозитория GlusterFS

Введите следующую команду на обоих gfs01 и gfs02 серверах , чтобы установить последнюю версию сервера GlusterFS:n

$ sudo add-apt-repository ppa:gluster/glusterfs-3.9 n$ sudo apt-get update

enable-ppan

Шаг 4 — Установка GlusterFS 

Введите следующую команду apt-get command/apt command команду на обоих gfs01 и gfs02 серверах:n

$ sudo apt-get install glusterfs-server

clusterfsn

Шаг 5 — GlusterFS обновление пакета

Ваше общее хранилище может быть повреждено если обновлять GlusterFS во время когда он запущен. Лучше всего, чтобы отфильтровать автоматические обновления безопасности. Позже вы узнаете, как повысить безопасность GlusterFS. Введите следующую команду на обоих gfs01 и gfs02 серверах:n

$ sudo apt-mark hold glusterfs*

Шаг 6 — Настройка и форматирование диска на каждом сервере

Вам необходимо ввести следующие команды на обоих серверах gfs01 (будьте осторожны с именами устройств в то время как создаете блоки разделов устройства):n

$ sudo fdisk /dev/vdb n$ sudo mkfs.ext4 /dev/vdb1 n$ sudo mkdir -p /nodirectwritedata/brick1 n$ sudo echo '/dev/vdb1 /nodirectwritedata/brick1 ext4 defaults 1 2' >> /etc/fstab n$ mount -a n$ sudo mkdir /nodirectwritedata/brick1/gvol0 n$ df -H

Вам необходимо ввести следующие команды на обоих серверах gfs02:n

$ sudo fdisk /dev/vdb n$ sudo mkfs.ext4 /dev/vdb1 n$ sudo mkdir -p /nodirectwritedata/ brick2 n$ sudo echo '/dev/vdb1 /nodirectwritedata/ brick2 ext4 defaults 1 2' >> /etc/fstab n$ mount -a n$ df -H n$ sudo mkdir /nodirectwritedata/brick2/gvol0

кластер фсnnНе редактируйте и не записывайте файлы непосредственно в /nodirectwritedata/brick1/ или /nodirectwritedata/brick2/ на каждом сервере. Прямая запись испортит ваш массив.n

Шаг 7 — Убедитесь в том, что служба GlusterFS запущена

Введите следующие команды:n

$ sudo systemctl status glusterfs-server.service

Если не работает запустите её:n

$ sudo systemctl start glusterfs-server.service

Включить GlusterFS во время загрузки:n

$ sudo systemctl enable glusterfs-server.service

Шаг 8 — Настройка trusted pool

От gfs01 сервере:n

$ sudo gluster peer probe gfs02 npeer probe: success. Host gfs02 port 24007 already in peer list

От gfs02 сервере:n

$ sudo gluster peer probe gfs01 npeer probe: success. Host gfs01 port 24007 already in peer list

Шаг 9 — Настройка раздела GlusterFS

НА gfs01 (или gfs02) :n

# gluster volume create gvol0 replica 2 ngfs01:/nodirectwritedata/brick1/gvol0 ngfs02:/nodirectwritedata/brick2/gvol0

Пример результата:n

volume create: gvol0: success: please start the volume to access data
# gluster volume start gvol0

Пример результата:n

volume start: gvol0: success

Чтобы увидеть статус, введите следующую команду:n

# gluster volume status

репликация дискаnnДля того, чтобы увидеть информацию о объеме, введите следующую команду:n

# gluster volume info

glusterfs-1n

Шаг 10 — Монтирование клиентов

Теперь наш кластер запущен и работает. Это время, наши клиенты могут устанавливать такие совместно используемые stoage. Вы можете иметь 1,2,3,4 или столько, сколько вы хотите клиент в соответствии с вашими сетевыми ресурсами. Вы можете настроить gfs01 и gfs02, как и сам клиент тоже.n

Монтирование на gfs01 / gfs02 узел

Введите следующую команду:n

$ sudo mkdir /mnt/www/ n$ sudo mount -t glusterfs gfs01:/gvol0 /mnt/www/

Обновите /etc/fstabn

echo 'gfs01:/gvol0 /mnt/www glusterfs defaults,_netdev 0 0' >> /etc/fstab

Сохраните и закройте файл. Установите его:n

$ sudo mount -a n$ df -H

Монирование на другом сервере с именем www1

Если www1 использует Debian / Ubuntu Linux подобных ОС, введите следующую команду:n

$ sudo add-apt-repository ppa:gluster/glusterfs-3.9 n$ sudo apt-get update n$ sudo apt-get install glusterfs-client n$ sudo mkdir -p /mnt/www/

Редактируйте /etc/hosts файл и обновите его следующим образом:n

192.168.2.11	gfs01n192.168.2.12    gfs02

Сохраните и закройте файл. Обновите /etc/fstab файл для монтирования общего хранилища:nОбновление /etc/fstab:n

echo 'gfs01:/gvol0 /mnt/www glusterfs defaults,_netdev 0 0' >> /etc/fstabn$ sudo mount -an$ df -H

Шаг 11 — Тестирование

Cd /mnt/www/ и создать некоторые файлы на www1 или gfs02:n

# cd /mnt/www n# mkdir test n# cd test n# cp /etc/*.conf .

Вы должны увидеть файлы на обоих gfs02, gfs01 и www1.n

Примечание о настройке network.ping.timeout

И, наконец выполните следующую команду на обоих gfs02 и gfs01 для установки таймаута сети до 5 секунд от дефолта 42:n

$ sudo gluster volume set gvol0 network.ping-timeout "5"

Проверимn

$ sudo gluster volume get gvol0 network.ping-timeout

Замечание о Apache DocumentRoot

Вам нужно отредактировать httpd.conf и установить DocumentRoot, указав каталог /mnt/www/ n

Услуги построения и поддержки отказоустойчивых, распределенных, высоконагруженных систем, обращайтесь [email protected]