Redis: «psync scheduled to be closed ASAP for overcoming of output buffer limits» и client-output-buffer-limit

20 февраля 2020
 

 Имеется Redis-кластер с Sentinel, см. Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel, Redis: fork — Cannot allocate memory, Linux, виртуальная память и vm.overcommit_memory и Redis: основные параметры конфигурации и тюнинг производительности. Система работала отлично долгое время, пока мы не начали использовать кеш намного более активно. Contents Redis infoОшибка «psync scheduled to be closed… Читать далее »

Linux: PHP-FPM, Docker, STDOUT и STDERR — нет логов приложения

17 февраля 2020
 

 Имеется Docker-образ, в который включены NGINX и PHP-FPM, плюс Supervisor для их запуска. В этот же образ включён код PHP-приложения, которое пишет ошибки PHP в /dev/stderr, как задано в php.ini: … [global] error_log=/dev/stderr … Проблема заключается в том, что при выполнении kubectl logs — в выводе этих данных нет. Где проблема? В Docker? Kubernetes? Linux… Читать далее »

Kubernetes: запуск metrics-server в AWS EKS для Kubernetes Pod AutoScaler

15 февраля 2020
 

 Предполагается, что AWS EKS уже создан, и имеет рабочие ноды. Ниже — выполним настройку подключения к кластеру, создадим тестовый деплоймент с HPA — Kubernetes Horizontal Pod AutoScaler, и попробуем получить данные об используемых ресурсах с помощью kubectl top. Contents Kubernetes clusterKubernetes cluster contextDeploymentHPA — TARGETS <TARGETS> и unable to get metricsError from server (NotFound): the… Читать далее »

Kubernetes: ConfigMaps и Secrets на примере Gorush сервера

14 февраля 2020
 

 Имеется Gorush сервер, запущенный в посте Kubernetes: запуск push-сервера Gorush в EKS за AWS LoadBalancer, к которому теперь хочется добавить возможность добавления своего файла настроек — для Staging с одними данными, и для Production — с другими. Используем Kubernetes ConfigMap для хранения содержимого файлов настроек Gorush, которые потом покдлючим внутрь запускаемых подов и их контейнеров,… Читать далее »

PHP: PHP-FPM игнорирует переменные — решения

13 февраля 2020
 

 Имеется PHP приложение, которое для подключения к серверу баз данных использует дефолтные данные из файла /app/.env и переменные окружения. Проблема заключается в том, что приложение не видит переменную $TEST_VAR, хотя в шаблоне Kubernetes пода она задана: … containers: — name: application-dev-web image: bttrm-application:119 … — name: TEST_VAR valueFrom: secretKeyRef: name: bttrm-app-secret key: test_var … Значение… Читать далее »

Kubernetes: ConfigMap и Secrets — auto-reload данных в подах

11 февраля 2020
 

 Имеется ConfigMap для Gorush сервиса (см. Kubernetes: запуск push-сервера Gorush в EKS за AWS LoadBalancer). Проблема заключается в том, что при изменении данных в ConfigMap или Secrets — они не будут сразу отображены в подах и их контейнерах. Есть несколько костылей типа монтирования в виде volume, а потом ремаунтить разделы, или каждый раз создавать новый… Читать далее »

Kubernetes: запуск push-сервера Gorush в EKS за AWS LoadBalancer

6 февраля 2020
 

 Gorush — сервер, написанный на Go, для отправки пуш-уведомлений на мобильные. Запускать будем в AWS EKS, в отдельном namespace, при этом сервис должен быть доступен толкьо внутри VPC, поэтому используем AWS Internal Application Load Balancer. Contents Запуск GorushNamespaceRedisGorushAWS Internal Application Load BalancerПроверка APIRoute53 Запуск Gorush Namespace Клонируем репозиторий: Создаём пространство имён gorush и confgiMap, который… Читать далее »

AWS: IAM AssumeRole — описание, примеры

24 января 2020
 

 AssumeRole — механизм аутентификации в AWS IAM, позволяющий получить временные данные доступа для выполнения запросов к ресурсам, к которым у вас нет доступа. Эти временные данные доступа состоят из привычных ACCESS и SECRET ключей, плюс security token. Одним из примеров AssumeRole может быть Jenkins в EC2, джобы которого могут выполнять операции в AWS-аккаунте, используя EC2… Читать далее »

Debian: php7.3-curl : Depends: libcurl3 (>= 7.44.0) but it is not installable

23 января 2020
 

 Имеется джоба в Jenkins, которая запускает контейнер, и выполняет сборку PHP-приложения на Yii. Во время сборки PHP-приложения — билд падает с ошибкой: … Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been… Читать далее »

PHP: кеширование PHP-скриптов — настройка и тюнинг OpCache

25 декабря 2019
 

 OpCache увеличивает производительность PHP сохраняя уже скомпилированные скрипты PHP в общей памяти, таким образом уменьшая работу для PHP-FPM, которому приходится меньше выполнять загрузку, чтение и обработку PHP при поступлении новых запросов. Workflow обработки новых запросов выглядит так: Исходный код проекта — тут>>>. Contents Enable OpCacheOpCache tunningOpCache memoryИзбегайте OpCache resetПроверка рестартовПрочие настройкиopcache.use_cwdopcache.blacklist-filenameopcache.revalidate_freqopcache.validate_timestampsopcache.max_accelerated_filesopcache.interned_strings_bufferopcache.file_cacheopcache.enable_cliConfig summaryOpCache GUI — веб-интерфейсТестирование… Читать далее »