Как настроить внешнее хранилище

GlusterFS как внешнее хранилище для Kubernetes

Что мы ждали от нового хранилища:

  • Возможность работы с четным числом нод для репликации.
  • Простая установка, настройка, поддержка
  • Система должна быть взрослой, проверенной временем и пользователями
  • Возможность расширения места на хранилище без простоя системы
  • Хранилище должно быть совместимо с Kubernetes
  • Должен быть автоматический Failover при падениях одного из узлов

Именно по последнему пункту у нас и возникло много вопросов.

Развертывание

Для развертывания было создано две виртуалки на CentOs 8. К каждой подключено по дополнительному диску с СХД.

Предварительная подготовка

Для GlusterFS нужно выделить отдельный диск с XFS, чтобы он никак не влиял на систему.

Форматируем в XFS и монтируем:

И в довершении закидываем запись в /etc/fstab для автоматического монтирования директории при запуске системы:

Установка

По поводу установки написано много статей, в связи с этим сильно углубляться в процесс не будем, просто рассмотрим то, на что стоит обратить внимание.

На обеих нодах ставим и запускаем glusterfs последней версии:

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

Если прошло успешно, то проверяем связь командой с обоих серверов:

Теперь можно создать Volume в который мы будем писать.

  • main — название Volume
  • replica — тип Volume (подробнее можно прочитать в официальной документации)
  • 2 — количество реплик

Запускаем Volume и проверяем его работоспособность:

Для реплицируемых Volume рекомендуется установить следующие параметры:

Этими простыми действиями мы собрали кластер GlusterFS. Осталось подключиться к нему и проверить работоспособность. На клиентской машине установлена Ubuntu, для монтирования нужно установить клиент:

Gluster при подключении к одной из нод, отдает адреса всех нод и автоматически подключается ко всем. Если клиент уже подключился, то отказ одной из нод не приведет к остановке работы. Но вот если будет недоступен первый узел, подключиться в случае разрыва сессии уже не получится. Для этого при монтировании можно передать параметр backupvolfile с указанием второй ноды.

Важный момент: gluster синхронизирует файлы между нодами только если их изменение было через монтированный volume. Если делать изменения напрямую на нодах, будет рассинхрон файлов.

Подключение к Kubernetes

На этом этапе и начались вопросы: «А как это подключить?». И здесь есть несколько вариантов. Рассмотрим их.

Heketi

Самый популярный и рекомендуемый — использовать внешний сервис: heketi. heketi — это прослойка между kubernetes и gluster, которая позволяет управлять хранилищем через http и работать с ним. Но heketi и будет той самой единой точкой отказа, т.к. сервис не кластеризуется. Второй инстанс данного сервиса не сможет самостоятельно работать, т.к. любые изменения хранятся в локальной БД. Запуск в kubernetes данного сервиса также не подходит, т.к. ему нужен статичный диск, на котором будет хранится его БД. В связи с этим данный вариант оказался самым не подходящим.

Endpoint в Kubernetes

Если у вас Kubernetes на системах с пакетными менеджерами, то это очень удобный вариант. Смысл заключается в том, что для всех серверов GlusteFS в Kubernetes создается общий Endpoint. На этот Endpoint вешается сервис и к этому сервису мы уже будем монтироваться. Для работы данного варианта необходимо на каждой ноде Kubernetes установить glusterfs-client и убедиться в возможности монтирования. В Kubernetes деплоим следующий конфиг:

Теперь мы можем создать простой тестовый деплоймент и проверить как происходит монтирование. Ниже пример простого тестового деплоймента:

Читайте также:  Не работает печка крайслер 300с

Данный вариант нам не подошел, потому что у нас на всех нодах Kubernetes стоит container-linux. Пакетного менеджера там нет, поэтому установить gluster-client для монтирования не удалось. В связи с этим был найден третий вариант, который и было решено использовать.

GlusterFS + NFS + keepalived

GlusterFS до недавнего времени предлагал собственный NFS сервер, но теперь для NFS используется внешний сервис nfs-ganesha. Об этом написано довольно немного, в связи с этим разберем как это настроить.

Репозиторий нужно прописать вручную. Для этого в файле /etc/yum.repos.d/nfs-ganesha.repo вносим:

После установки проводим базовую конфигурацию в файле /etc/ganesha/ganesha.conf.

Нужно стартовать сервис, включить nfs для нашего volume и проверить то, что он включился.

В результате статус должен показать что запустился nfs сервер для нашего volume. Нужно сделать mount и проверить.

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

Установка keepalived в CentOs производится сразу через пакетный менеджер.

Производим конфигурацию сервиса в файле /etc/keepalived/keepalived.conf:

Теперь мы можем запустить сервис и проверить что VIP на ноде появился:

Если у нас все заработало, то осталось внести PersistentVolume в Kubernetes и создать тестовый сервис для проверки работы.

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

Итоги

В данной статье мы рассмотрели 3 возможных варианта подключения GlusterFS к Kubernetes, в нашем варианте возможно добавить provisioner в Kubernetes, но он пока нам не нужен. Осталось добавить результаты тестов производительности между NFS и Gluster на одних и тех же нодах.

NFS работает одинаково при любых размерах файлов, разница в скорости особенно не ощущается, в отличии от GlusterFS, которые при маленьких файлах деградирует очень сильно. Но при этом, при больших размерах файлов NFS показывает производительность в 2-3 раза ниже, чем Gluster.

Источник

Организация простейшего внешнего хранилища прикрепленных к документу (элементу справочника, . ) файлов на web-сервере, или не засоряем базу 1С

Для решения проблемы с неприличным объёмом базы данных 1C из-за хранения в ней приложенных файлов в справочнике типа «ХранилищеДополнительнойИнформации» и всех вытекающих из этого неудобств, таких как огромного размера выгрузки ИБ и файла бэкапов, было написано следующее. (Данное решение не претендует на замену встроенных механизмов хранения файлов в конфигурациях типа «документооборот» без соответствующей доработки, однако, ничто не мешает доработать описанный принцип под конкретные нужды.)

Принцип довольно прост:

  • Добавляем на форму нужного объекта HTML-поле, в котором будет отображаться web-интерфейс файлового менеджера (по-моему, ограничений на платформу здесь нет, HTML на форме можно было и в 7.7 отобразить, поправьте, если не прав),
  • Берём любой понравившийся web- файловый менеджер, и ставим его на web-сервер (в данной статье как пример взят и изменен под свои нужды дистрибутив простого php файлового менеджера Sabre (изменённая версия на github) как web сервер использовался WAMP с основной кодировкой utf-8. Также все отлчино работает на LAMP. Версия php — предпочитаю свежую, но, возможно, Sabre будет работать и на 5.3 и ниже.)
  • При открытии формы объекта, отображаем на нашей форме файл-менеджер, вызванный с определенными GET-параметрами (например, относительный путь к папке, формируемый из имени и номера объекта). Также, если нужно, можно сделать разделение по ролям, кому можно удалять\редактировать\просматривать, кому — нет и вместо передачи простых GET-запросов хоть XML или JSON через POST и авторизацию прикрутить, как душе угодно)
  • В итоге пользователь может скачивать и прикреплять файлы, подробности процесса остаются для него не очевидными, а сами файлы лежат себе на том же (или другом) сервере в определенном месте, удобно распределенные по папкам — напр. /Документ/325/файл_документа_325.pdf и не захламляют базу.
Читайте также:  Если мать не работает может ли отец получить декретные вместо матери

Рассмотрим довольно простую и быструю реализацию задумки на примере WAMP:

устанавливаем последнюю версию web-сервера (допустим, в папку d:\wamp) Чтобы можно было загружать файлы до 100 мегабайт изменяем php.ini в d:\wamp\bin\apache\apache_ВЕРСИЯ_\bin\

Чтобы сервис стартовал автоматически, запускаем services.msc, ищем wampapache64 (если x64) и ставим тип запуска — «Автоматически»

Важно! Чтобы wampmanager.exe при выходе не завершал заодно и работу web-сервера, что, сами понимаете чем чревато, изменяем wampmanager.tpl и wampmanager.ini предварительно завершив wampmanager.exe. Ищем блок [myexit] и комментируем нежелательные действия: wampmanager.ini:

Далее распаковываем в папку d:\wamp\www\ изменённую вверсия Sabre с github, переходим в браузере на http://localhost/Sabre1c-master/install/ и настраиваем как пожелаем. Создаём папку для загрузок, какую указали (по-умолчанию upload) в d:\wamp\www\Sabre1c-master\ переходим на http://localhost/Sabre1c-master/?CWD=\Тест\123 и загружаем любой файл, проверяем результат в папке d:\wamp\www\Sabre1c-master\upload\Тест\123\ появился загруженный файл.

Работу файл-менеджера проверял как на windows, так и на linux web-серверах, проблем с кодировкой имени файла при загрузке\скачивании удалось избежать. Пробелы в имени файла при загрузке заменяются символами нижнего подчёркивания. Если есть необходимость запретить загружать файлы с расширением, не включенным в список разрешенных, можно раскоментировать и попровить несколько строк в файле core\upload.php:

Теперь идём в 1с и размещаем на нужном документе или справочнике ПолеHTMLДокумента с аналогичным именем и добавляем в функцию модуля ПриОткрытии() код:

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

Всё нижеописанное Вы можете повторить для себя, но исключительно на свой страх и риск. Автор не несет ответственности за возникновение каких-либо проблем.

И удалить выгруженные файлы из БД.

Теперь, чтобы фактический размер БД уменьшился после удаления из нее хлама, осталось только выгрузить и загрузить ИБ.

Источник

[Советы] Полезно знать: Установка приложений на SD-карту (Без ROOT)

image1-23-1083×65.png (1.99 MB, Downloads: 113)

2018-01-27 14:11:52 Upload

  • Для того, что бы получить возможность сохранять приложения на SD-карте, необходимо включить на это разрешение в настройках «Для разработчиков». Как открыть настройки «Для разработчиков» вы можете найти в статье:
  • Заходим в настройки «Для разработчиков», находим пункт «Разрешить сохранение на внешние накопители» и активируем его;

Screenshot_2018-01-27-13-37-29-259_com.android.settings.png (341.76 KB, Downloads: 116)

2018-01-27 14:40:34 Upload

  • Теперь вы можете установить любое приложение для переноса приложений на SD-карту, например: Переместить в SDCard, AppMgr III (App 2 SD), Link2SD или любой другой на ваш вкус.

hqdefault.jpg (38.56 KB, Downloads: 93)

2018-01-27 15:02:01 Upload

  • Переходим в «Настройки» — «Хранилище», выбираем нашу SD-карту;

IMG_20180127_144227.jpg (52.15 KB, Downloads: 126)

2018-01-27 15:48:37 Upload

  • Далее нажимаем на «Три точки» и выбираем «Настройки хранилища»;

IMG_20180127_144319.jpg (32.67 KB, Downloads: 101)

2018-01-27 15:48:37 Upload

IMG_20180127_144357.jpg (43.75 KB, Downloads: 109)

2018-01-27 15:48:38 Upload

  • В открывшемся окне выбираем «Внутренняя память»;

IMG_20180127_145515.jpg (36.17 KB, Downloads: 102)

2018-01-27 15:56:59 Upload

  • Прочтите информацию в появившемся окне и если вы согласны, нажмите кнопку “Очистить и отформатировать”

IMG_20180127_145258_576.jpg (53.33 KB, Downloads: 89)

2018-01-27 16:00:17 Upload

  • Если во время форматирования у вас появится сообщение “SD-карта работает медленно”, то необходимо заменить вашу SD-карту на более быструю, в противном случае возможна нестабильная работа!

IMG_20180127_145301_215.jpg (44.84 KB, Downloads: 107)

2018-01-27 16:06:39 Upload

  • По окончанию форматирования необходимо выбрать перенести файлы на SD-карту сейчас или позже, на ваш выбор. Позже это возможно сделать через меню «Настройки» в смартфоне;

IMG_20180127_145311_734.jpg (52.9 KB, Downloads: 99)

2018-01-27 16:10:32 Upload

  • По окончанию всех действий перезагрузите Android, во избежания ошибок в работе операционной системы;

Обратный переход выполняется аналогично, но теперь нужно выбрать вместо «Внутренняя память» пункт «Портативный носитель»:

  • Что бы узнать идентификатор карты памяти вводим команду: adb shell sm list-disks
  • В полученом ответе ищем строку: disk:XXX,XX, гдеXXX,XX — наш числовой идентификатор карты памяти;
  • Далее вводим команду: adb shell sm partition disk:XXX,XX private — вместо XXX,XX вписываем наш числовой идентификатор карты памяти;
  • Дожидаемся окончания процесса. Процесс можно наблюдать на экране смартфона в меню «Настройки» — «Хранилище»;
  • По окончанию всех действий перезагрузите Android, во избежания ошибок в работе операционной системы;
Читайте также:  Как починить жесткий диск через victoria

Рейтинг

Змея | из Redmi 3S

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

HOOLIGANS | из Redmi Note 4

Спасибо всё понятно но есть вопрос если открыть меню разработчиков слитит гарантия или нет

Денис Гордеев Ответить | из MI 5

HOOLIGANS
Спасибо всё понятно но есть вопрос если открыть меню р .

Денис Гордеев Ответить | из MI 5

Змея
Тема изложена подробно и понятно. Мне пригодится точно .

Каким аппаратом ты пользуешься?

1769832532 | из Redmi 5A

как найти меню разработчиков,Редми 5а

Змея | из Redmi 3S

Screenshot_2018-01-27-12-23-47-695_com.android.settings.png (104.64 KB, Downloads: 85)

2018-01-27 18:01:39 Upload

Денис Гордеев Ответить | из MI 5

Читай внимательно, все написано

Kamba | из Redmi 4X

quoteurl=home.php?mod=space&uid=1689734976Змея/url
Тема изложена подробно и понятно. Мне пригодится точно . /quote

Версия 9.8.1.18. Данный пункт находится в самом низу меню разработчика.attach1621420/attach

Денис Гордеев Ответить | из MI 5

Змея
Redmi 3s, но стоит ещё 8-ка. . . Может когда прилетит 9-ка, поя .

От андроида тоже зависит наличие данного пункта. Если его нет и приложения не переносятся по вине запрета в андроиде, попробуй второй способ.

Змея | из Redmi 3S

Денис Гордеев
От андроида тоже зависит наличие данного пункта. Если .

Mi Comm APP

Получайте новости о Mi продукции и MIUI

Рекомендации

* Рекомендуется загружать изображения для обложки с разрешением 720*312

Изменения необратимы после отправки

Cookies Preference Center

We use cookies on this website. To learn in detail about how we use cookies, please read our full Cookies Notice. To reject all non-essential cookies simply click «Save and Close» below. To accept or reject cookies by category please simply click on the tabs to the left. You can revisit and change your settings at any time. read more

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

Источник

Оцените статью