Запуск Продукты Bitnami Документацияimaxe CLI Блог Контакты
imaxe memcached кеш v1.1.0

Управляйте кешем, не трогая файлы

Вычисляет и применяет размер кеша, число потоков и соединений, подходящие вашей инстанции, управляет учётными данными SASL и сертификатом TLS и показывает состояние сервиса вживую — и всё это без ручной правки memcached.conf.

$ imaxe memcached status
Версия
v1.1.0
Подкоманды
9
Конфиг
/etc/imaxe/memcached.yml
Нужен root
да
Порты
11211 TLS · 11212 local

Что делает этот модуль #

Memcached настраивается текстовым файлом и горсткой флагов: сколько выделить ОЗУ, сколько потоков, сколько соединений. Правильные числа зависят от размера инстанции, а ошибка обходится дорого — либо кеша не хватает, либо вы съедаете память, нужную системе.

Модуль memcached берёт это на себя вместе со всем, что окружает сервис: вычисляет тюнинг исходя из реального объёма ОЗУ машины, управляет учётными данными SASL (в этом образе они обязательны), поддерживает сертификат TLS, создаваемый при первом запуске —он никогда не запекается в AMI— и выдаёт состояние вживую со статистикой сервиса.

Перед началом

Командам, которые читают учётные данные или меняют конфигурацию, нужен root (используйте sudo). Осторожнее с optimize: применение новых значений перезапускает сервис, а перезапуск очищает кеш. Если хотите перезапустить сами, используйте --no-restart.

Быстрый стартзадачи шаг за шагом

Быстрый старт #

Выберите, что хотите сделать. В каждом рецепте команда уже написана — скопируйте её и нажмите Копировать.

1

Посмотреть состояние сервиса

Одним взглядом проверьте, что кеш в порядке и какой тюнинг применён.

Подключитесь к инстанции по SSH под пользователем ubuntu.

Запросите состояние: увидите, на каких портах он слушает, включены ли TLS и SASL, применённый тюнинг и живую статистику (занятая память, элементы, попадания и промахи):

terminal
$ sudo imaxe memcached status

Нужно для панели или скрипта? Добавьте --json:

terminal
$ sudo imaxe memcached status --json
Если hits растёт, а evictions остаётся низким, размер кеша подобран верно. Если вытеснения взлетели, переходите к Настроить размер кеша.
2

Подключиться к кешу

Получите пользователя, пароль и порт, чтобы направить туда приложение.

Этот образ требует SASL: анонимного доступа нет. Запросите учётные данные этой инстанции (пароль выводится замаскированным):

terminal
$ sudo imaxe memcached credentials

Когда действительно понадобится его скопировать, выведите открытым текстом:

terminal
$ sudo imaxe memcached credentials --show-password
Порт 11211 работает по TLS; 11212 — открытый текст и слушает только на loopback, для системных утилит. Не открывайте 11211 в Интернет: откройте его для CIDR вашей VPC.
3

Настроить размер кеша

Пересчитайте память, потоки и соединения под реальный размер машины.

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

terminal
$ sudo imaxe memcached optimize --show

Если они вас устраивают, примените их. Сервис перезапустится, а кеш очистится:

terminal
$ sudo imaxe memcached optimize

Хотите больше кеша и меньше запаса для системы? Поднимите процент ОЗУ:

terminal
$ sudo imaxe memcached optimize --memory-pct 75
С --dry-run вы увидите ещё и блок конфигурации, который был бы записан. А с --no-restart изменения применяются без перезапуска: новые значения вступят в силу при следующем старте.
4

Завести пользователей SASL

Создавайте, меняйте или удаляйте учётные данные для ваших приложений.

Перечислите пользователей в базе SASL:

terminal
$ sudo imaxe memcached users list

Заведите по одному на приложение, со случайным паролем:

terminal
$ sudo imaxe memcached users add app1

Нужен конкретный пароль? Передайте его через стандартный ввод, чтобы он не попал ни в ps, ни в историю команд:

terminal
$ sudo imaxe memcached users add app1 --stdin
Чтобы сменить пароль пользователя: imaxe memcached users rotate <пользователь>. Без имени меняется пароль пользователя продукта.
5

Проверить сертификат TLS

Проверьте срок действия и обновите сертификат инстанции.

Сертификат создаётся при первом запуске каждой инстанции, поэтому никогда не используется совместно. Посмотрите текущий:

terminal
$ sudo imaxe memcached tls show

Обновляйте его когда угодно, даже если нынешний ещё действителен:

terminal
$ sudo imaxe memcached tls renew --force
Это самоподписанный сертификат с долгим сроком. Ваш клиент должен либо доверять ему, либо проверять отпечаток SHA-256 — тот самый, что печатает tls show.
Не запускается или не находит учётные данные?

Учётные данные и сертификат создаёт instance-setup при каждом запуске, вызываемый systemd. Если команда возвращает код 65, эта инстанция не завершила первый запуск: проверьте sudo systemctl status memcached, прежде чем что-то менять.

Справочник CLIкоманды, флаги и файлы

Синопсис #

использование
imaxe memcached <подкоманда> [flags]

Почти всем подкомандам нужен root (используйте sudo), потому что они читают базу SASL, сертификат или конфигурацию сервиса. Добавьте --json к status, credentials, users list или tls show, чтобы получить машиночитаемый вывод.

Подкоманды #

ПодкомандаЧто делаетВажные флаги
optimizeВычисляет и применяет оптимальный размер кеша, число потоков и соединений для этой инстанции.--memory-pct --dry-run --show --no-restart
statusСостояние сервиса: слушатели, TLS, SASL, применённый тюнинг и живая статистика.--json
credentialsПоказывает учётные данные SASL этой инстанции и способ подключения.--json --show-password
usersУправляет пользователями SASL: list, add, rotate и delete.--password --stdin --json
set-passwordМеняет пароль SASL-пользователя продукта. Сокращение для users rotate.--random --stdin
open-portОткрывает порт memcached в брандмауэре хоста (ufw).--cidr --json
close-portЗакрывает порт в брандмауэре хоста и удаляет имеющиеся правила.--json
tlsСертификат TLS этой инстанции: show и renew.--force --json
instance-setupГотовит инстанцию до старта сервиса. Вызывается systemd при каждом запуске.--bake

Аргументы и флаги #

ФлагТипПо умолчаниюОписание
--memory-pctint60В optimize: доля используемой ОЗУ в процентах, отводимая под кеш.
--reserve-mem-mbint512В optimize: объём ОЗУ в МБ, который не трогают — резерв для системы и прочих сервисов.
--threadsint0В optimize: рабочие потоки. 0 выводит их из числа ЦП.
--max-connectionsint0В optimize: одновременные соединения. 0 выводит их из размера кеша.
--dry-runboolfalseВ optimize: ничего не пишет; показывает значения и блок конфигурации, который был бы применён.
--showboolfalseВ optimize: только печатает вычисленные значения.
--no-restartboolfalseВ optimize: записывает конфигурацию, но не перезапускает сервис. Перезапуск очищает кеш.
--passwordstringВ users add/rotate: конкретный пароль. Если не указан, генерируется случайный.
--stdinboolfalseВ users add/rotate: читает пароль со стандартного ввода, чтобы он не попал ни в ps, ни в историю.
--show-passwordboolfalseВ credentials: печатает пароль открытым текстом. По умолчанию он замаскирован.
--forceboolfalseВ tls renew: пересоздаёт, даже если текущий сертификат действителен и принадлежит этой инстанции.
--randomboolfalseДля set-password: генерирует надёжный пароль и печатает его один раз.
--cidrstringДля open-port: ограничивает правило этим источником. Без него разрешён любой источник.
--jsonboolfalseВыводит результат в виде структурированного JSON в stdout.

Файлы и пути #

ПутьСодержимое
/etc/imaxe/memcached.ymlКонфигурация модуля: сервис, пути и значения по умолчанию для optimize, TLS и SASL.
/etc/memcached.confКонфигурация memcached. Её пишет optimize: не правьте вручную.
/etc/systemd/system/memcached.service.d/Drop-in для systemd с параметрами запуска, которые применяет модуль.
/etc/memcached/tls/Сертификат и закрытый ключ этой инстанции, созданные при первом запуске.
/etc/sasl2/memcached-sasldb2База SASL с пользователями и их паролями.

Пример memcached.yml:

/etc/imaxe/memcached.yml
service: memcached
port: 11211
optimize:
  memory_pct: 60
  memory_min_mb: 64
  reserve_mem_mb: 512
  threads: 0
  max_connections: 0
tls:
  enabled: true
  days: 3650
  plain_local_port: 11212
sasl:
  enabled: true
  user: memcached

Коды возврата и логи #

Каждый запуск возвращает код, который можно проверить через echo $? — удобно для цепочек в скриптах:

0OKОперация выполнена успешно.
1ERRНеклассифицированная общая ошибка. Загляните в лог.
2USAGEНеверные аргументы или подкоманда.
64NOMEMCACHEDmemcached не установлен на этой машине.
65NOSECRETЗапрошены учётные данные, которые эта инстанция ещё не создала.
66NOUFWufw недоступен на этой машине.

Следите за сервисом вживую во время работы:

terminal
$ sudo systemctl status memcached
$ sudo journalctl -u memcached -f

Устранение неполадок #

СимптомВероятная причинаРешение
Возвращается NOSECRET (код 65)Инстанция не завершила первый запуск, а именно тогда создаются учётные данные.Проверьте sudo systemctl status memcached и повторите.
Возвращается NOMEMCACHED (код 64)Модуль установлен, но самого memcached на хосте нет.Вы на образе, отличном от продуктового: установите memcached или используйте правильный AMI.
Много evictions в statusКеш мал для того, что вы храните: элементы вытесняются, чтобы освободить место.Поднимите процент через optimize --memory-pct или перейдите на инстанцию с большим объёмом ОЗУ.
Кеш внезапно оказался пустымСервис перезапустился, а memcached ничего не сохраняет на диск.После optimize это нормально. Чтобы применить без перезапуска, используйте --no-restart.
Клиент отвергает сертификатОн самоподписанный и уникален для каждой инстанции.Доверьтесь ему в клиенте или сверьте отпечаток через tls show.

Застряли с модулем Memcached?

Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.

Связаться с поддержкой