Архив метки: Software

Исправляем статус одиночного сервера ElasticSearch

Зелёный статус для одиночного ElasticSearch




  • Когда мы собеседуем системных администраторов и видим в их резюме упоминание ElasticSearch, мы обязательно задаём им вопрос «какого цвета будет одиночный сервер?»
  • Примерно половина соискателей не понимает его смысла и на этом наше знакомство с ними, как правило, заканчивается (потому что их владение остальными указанными в резюме терминами обычно находится на аналогичном уровне).




Оставшейся половине мы задаём два вопроса:




  • Почему он жёлтый,
  • и как превратить его в зелёный, не создавая кластер?




Цвет означает состояние сервера:




  • Зелёный — всё хорошо.
  • Жёлтый — сервер правильно обрабатывает все запросы на чтение/запись, но есть внутренние проблемы, которые необходимо исправить.
  • Красный — всё плохо.




Как увидеть цвет сервера?




  • Запрос:




curl '127.0.0.1:9200/_cluster/health?pretty=true'




  • Пример ответа:




{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1880,
  "active_shards" : 1880,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 1680,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 52.80898876404494
}




Почему отдельный сервер будет по умолчанию жёлтым?




  • Потому что ElasticSearch является отказоустойчивой системой хранения данных, которая расчитана для запуска не на одном сервере, а на группе (кластере) из нескольких связанных серверов (узлов, “nodes”).
  • В частности, ElasticSearch подразумевает, что при отказе одного узла система должна сохранять полную работоспособность.
  • Для этого система должна состоять из нескольких серверов (минимум — двух, желательно — трёх для предотвращения split brain), и каждая порция данных (т.н. “shard” в терминологии ES) должна храниться в нескольких экземплярах на разных серверах.
  • Один из этих экземпляров ES будет считать первичным (“master shard”), остальные копиями первичного (“replica shards”).
  • В системе из одного сервера ES хранит на нём все “primary shards”, но создавать “replica shards” такой системе будет негде.
  • Поэтому статус в приведённом примере является жёлтым из-за ненулевого значения “unassigned_shards”, которое примерно равно “active_shards”.
  • Небольшая разница между количеством активных и неразмещённых шардов обусловлена тем, что часть служебных индексов является локальной для каждого узла, то есть не должна иметь реплик и не приводит к появлению unassigned shards.
  • Подробнее о том, что такое шарды, зачем они нужны, и какое место занимают между документами и индексами: https://stackoverflow.com/a/49892584/2743554.




Как сделать одиночный сервер зелёным?




  • Сначала узнаем, какие шарды система не сумела разместить:




curl -sS -XGET '127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED




  • Теперь посмотрим, к каким индексам они относятся:




curl -sS -XGET '127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | awk '/UNASSIGNED/ { print $1 }'




  • После этого поменяем настройки индексов — уменьшим количество реплик (так называемый Replication Factor) до нуля:




curl -sS -XGET '127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | awk '/UNASSIGNED/ { print $1 }' |
while read idx; do
    curl -XPUT "localhost:9200/$idx/_settings" -H 'Content-Type: application/json' -d '{ "index": { "number_of_replicas": 0 } }'
done




или




curl -sS -XGET '10.233.108.217:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | awk '/UNASSIGNED/ { print $1 }' 




  • И проверим результат:




{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1880,
  "active_shards" : 1880,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}




Почему в полночь карета превратится в тыкву сервер снова станет жёлтым?




  • Потому что в ES принято каждые сутки автоматически создавать новый индекс с именем вида “basename-yyyy.mm.dd” из шаблона.
  • Поэтому Replication Factor необходимо уменьшить до нуля не только в существующих индексах, но и в шаблонах, из которых будут создаваться новые индексы.
  • Это делается так:




curl -XPUT "127.0.0.1:9200/_template/all?pretty=true" -H 'Content-Type: application/json' -d 
'{ "template" : "*" , "settings": { "number_of_replicas": 0 } }' 




или




curl -XPUT "10.233.108.217:9200/$idx/_settings" -H 'Content-Type: application/json' -d '{ "index": { "number_of_replicas": 0 } }'




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




Источник: https://cdnnow.ru/blog/esgreen/



2022-01-13T01:38:45
Software

Техническая документация. Что это такое

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

В то время как общение в реальном мире осуществляется с помощью слов или выражений, техническое общение в виртуальном мире осуществляется с помощью технической документации!

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

Однако, как бы просто это ни звучало, техническая документация может быть немного сбивающей с толку! Большинство технических документов включают в себя несколько этапов, начиная с “Как использовать: Если вы новичок и имеете ограниченный опыт”, “ Неотредактированное резюме: Обо всем, что разработчик предоставляет через API” до “Как устранить неполадки: В случае ошибки или ошибки!”

В то время как один документ поможет вам быстро освоиться с продуктом, другой заставит вас сойти с ума, как шляпника! Итак, если вы не знаете, с чего начать, вот подробное руководство, которое поможет вам ответить, что, почему, как в технической документации, и упростить весь процесс!

Давайте окапываться!

 

Что такое Техническая документация?

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

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

Группа компаний ТехСерт https://tech-sert.ru/tehdoc, имеет аккредитацию и многолетний опыт работы, в рамках которых мы оказываем услуги по оформлению Европейского сертификата качества.

 

 

Где и Как Вы можете использовать Различные Виды Технической документации?

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

  • Поддержка конечных пользователей: Это означает такие документы, как руководства пользователя, онлайновые справочные системы, примечания к выпуску, учебные пособия, руководства по установке или операционные процедуры-все, что поддерживает пользователей вашего продукта.
  • Маркетинговая поддержка: Документы, ориентированные на продукт и используемые для продвижения вашей компании, такие как компьютерные обучающие видеоролики, презентации, онлайн-справка или технические целевые страницы.
  • Поддержка разработки: Это может включать технические и функциональные спецификации, руководства по разработке программных продуктов, глоссарии или простые процедуры и инструменты, помогающие вашим техническим командам выполнять свою работу.
  • Организационная поддержка: Информация о вашей компании, структуре, процедурах, кратких справочных руководствах, рабочих процессах, политиках, руководствах по техническому обслуживанию и обо всем, что сотрудникам необходимо знать для выполнения своей работы.

 

Преимущества Технической Документации Для Вашего Бизнеса

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

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

Кроме того, четко определенная техническая документация также помогает в:

 

1. Техническая Документация Улучшает Удержание Клиентов

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

Недавнее исследование SDL по технической документации показывает растущее значение документации на мировых рынках-

  • 53% клиентов, как правило, используют техническую документацию, чтобы понять продукт перед совершением покупки.
  • 94% клиентов считают, что важно и полезно иметь информацию о продукте в одном месте.

Следовательно, в настоящее время каждая компания в равной степени уделяет внимание документации наряду с разработкой или тестированием продукта!

 

2. Хорошая техническая документация Экономит время и усилия

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

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

 

3. Техническая Документация может Повысить Ваши Продажи

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

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



2021-12-14T09:47:06
Программное обеспечение

Блокнот Windows 11 получил темный режим, многоуровневую отмену и многое другое

Блокнот — это базовый текстовый редактор, который с самого начала был включен в комплект Windows. За последние три десятилетия он претерпел постепенные улучшения, но новейшая бета-версия предлагает значительный шаг вперед в удобстве использования и функциях. Тем не менее, любой, кто установил альтернативы Блокноте, вероятно, будет настороженно относиться к этой новости, поскольку легко уменьшить привлекательность этого быстрого минималистичного инструмента и создать раздутое приложение. Microsoft слишком далеко зашла с новой бета-версией? Только вы можете сами судить об этом вопросе ощущений. Читать

Установка FFmpeg в Ubuntu 20.04

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

Ниже рассмотрим, как установить ffmpeg в Ubuntu 20.04 из официальных репозиториев, а также с использованием snap-пакета. А затем поговорим о том, как с его помощью переконвертировать небольшое видео из одного формата в другой.

Читать

Как распаковать Zip файл в Linux

Как распаковать Zip файл в Linux

Zip — это один из самых распространенных и наиболее популярных способов создания сжатых архивных файлов. Это также один из самых старых форматов архивных файлов, он был создан в 1989 году. Поскольку он широко используется, вы будете регулярно сталкиваться с zip-файлами.

В одном из предыдущих уроков я показал, как заархивировать папку в Linux. В этом кратком руководстве для начинающих я покажу вам, как распаковывать файлы в Linux. Читать

Настройка репликации PostgreSQL в контейнерах Docker

Мы рассмотрим процесс поднятия двух контейнеров с PostgreSQL и настройки репликации данных между ними. Использовать будем систему на базе Linux, однако, сам процесс настройки Docker и репликации не зависит от операционной системы.




Подготовка компьютера




На компьютере, где мы будем запускать наш кластер баз данных должен быть установлен Docker. Также мы сразу рассмотрим развертывание нужной нам инфраструктуры в docker-compose. Для установки необходимой одноименной платформы смотрим инструкцию Установка Docker на Linux.




После мы можем переходить к поднятию контейнеров.




Запуск контейнеров с СУБД




Как говорилось выше, мы будем поднимать наши контейнеры с помощью docker-compose.




Создадим каталог, в котором будем работать:




mkdir -p /opt/docker/postgresql




Переходим в него:




cd /opt/docker/postgresql




Создаем файл для docker-compose:




vi docker-compose.yml




---



services:



  postgresql_01:

    image: postgres

    container_name: postgresql_01

    restart: always

    volumes:

      - /data/postgresql_01:/var/lib/postgresql/data

    environment:

      POSTGRES_PASSWORD: postgres024



  postgresql_02:

    image: postgres

    container_name: postgresql_02

    restart: always

    volumes:

      - /data/postgresql_02/:/var/lib/postgresql/data

    environment:

      POSTGRES_PASSWORD: postgres024




* рассмотрим некоторый опции подробнее:







Запускаем наши контейнеры:




docker-compose up -d




Мы должны увидеть:




Creating postgresql_02 ... done

Creating postgresql_01 ... done




А если вывести список контейнеров:




docker ps




… мы должны увидеть наши два.




Теперь можно переходить к настройке репликации.




Настройка репликации




Условимся, что первичный сервер или master будет в контейнере с названием postgresql_01. Вторичный — postgresql_02. Мы будем настраивать потоковую (streaming) асинхронную репликацию.




Настройка на мастере




Подключаемся к контейнеру docker:




docker exec -it postgresql_01 bash




Заходим под пользователем postgres:




su - postgres




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




createuser --replication -P repluser




* в данном примере будет создаваться учетная запись repluser с правами репликации.




Система потребует ввода пароля. Придумываем его и набираем дважды.




Выходим из-под пользователя postgres:




exit




Выходим из контейнера:




exit




Открываем конфигурационный файл postgresql.conf:




vi /data/postgresql_01/postgresql.conf




Приводим к следующием виду некоторые параметры:




wal_level = replica

max_wal_senders = 2

max_replication_slots = 2

hot_standby = on

hot_standby_feedback = on




* где







Посмотрим подсеть, которая используется для контейнеров с postgresql:




docker network inspect postgresql_default | grep Subnet




В моем случае, ответ был:




"Subnet": "172.19.0.0/16",




Теперь открываем файл:




vi /data/postgresql_01/pg_hba.conf




И добавляем строку после остальных «host    replication»:




host    replication     all             172.19.0.0/16           md5




* в данном примере мы разрешили подключение пользователю replication из подсети 172.19.0.0/16 с проверкой подлинности по паролю.




Перезапустим докер контейнер:




docker restart postgresql_01




Настройка на слейве




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




rm -r /data/postgresql_02/*




* в данном примере мы удалим все содержимое каталога /data/postgresql_02.




Мы должны быть уверены, что в базе нет ничего важного. Только после этого стоить удалять данные.




Заходим внутрь контейнера postgresql_02:




docker exec -it postgresql_02 bash




Выполняем команду:




su - postgres -c "pg_basebackup --host=postgresql_01 --username=repluser --pgdata=/var/lib/postgresql/data --wal-method=stream --write-recovery-conf"




* где postgresql_01 — наш мастер; /var/lib/postgresql/data — путь до каталога с данными слейва.




Система должна запросить пароль для пользователя repluser — вводим его. Начнется процесс репликации, продолжительность которого зависит от объема данных.




Проверка




Смотрим статус работы мастера:




docker exec -it postgresql_01 su - postgres -c "psql -c 'select * from pg_stat_replication;'"




Смотрим статус работы слейва:




docker exec -it postgresql_02 su - postgres -c "psql -c 'select * from pg_stat_wal_receiver;'"




Источник: https://www.dmosk.ru/miniinstruktions.php?mini=postgresql-replication-docker