Биографии Характеристики Анализ

Установка memcached centos. Установка и настройка Memcache в Centos

В этой заметке я не буду подробно останавливаться на вопросе что это такое. Если возник вопрос «как его поставить», то значит ответ на «что это такое» (хотя бы примерный) у вас уже есть! 🙂

Но в общих чертах memcache — это специальная программа позволяющая кешировать данные (к примеру, результаты SQL-запросов, готовые результаты работы скриптов, изображения = вобщем, любые необходимые в работе объекты) в оперативную память сервера. Эта память в сотни (иногда — тысячи) раз быстрее чем жесткие диски, поэтому хранение данных в ней хотя и более дорого, но в разы эффективнее по быстродействию что очень положительно сказывается как на нагрузке на сервер, так и по скорости работы скриптов сайтов.

Как установить memcache на веб-сервер.

Установите сам сервер memcached

Yum -y install memcached

Отредактируйте его конфиг так, чтобы он слушал только сам сервер и не обрабатывал запросы извне (это вопрос как здравого смысла, так и безопасности — зачем кому-то видеть что там у вас в памяти заскладировано?)

Для этого откройте на редактирование файл /etc/sysconfig/memcached

И замените строку OPTIONS на

OPTIONS="-l 127.0.0.1"

По-умолчанию в этом же конфиге для работы memcache указано что для хранения данных выделяется 64 МБ оперативной памяти. Если нужно установить больше, то просто измените значение в строке

CACHESIZE ="64"

на желаемое.

Но помните , что без необходимости выделять слишком много памяти, особенно если она потом не будет использоваться вся — тоже вредно! (хотя бы по той причине, что ОЗУ — это достаточно ценный ресурс веб-сервера, имеющий свойство заканчиваться в самый неподходящий момент)

Теперь осталось запустить демон memcache и добавить его в автозагрузку (иначе при перезапуске всего сервера его придётся стартовать вручную):

/etc/init.d/memcached start chkconfig memcached on

Последние шаги — установить модуль memcache:

Yum -y install php-pecl-memcache

….и перезапустить apache:

/etc/init.d/httpd restart

В конце вот так можно проверить — слушает ли memcache порт 11211: .

Всё. Теперь достаточно в настройках кеширования сайта указать

Адрес сервера : 127.0.0.1 (или localhost — это одно и то же)

Порт : 11211

И наслаждаться всеми плюсами этого способа кеширования.

Часто задаваемые вопросы

    Самый простой способ удалить всё содержимое файла (очистить его) - скопировать в него "содержимое" файла /dev/null (/dev/null в *nix - синоним пустоты. Всё что копируется в него - пропадает, всё что копируется из него - является пустотой).

    Сделать это можно выполнив:

    Cp /dev/null file.ext

    , где file.ext - имя очищаемого файла.

    Самый простой способ - выполнить команду:

    Find /path/to/folder | wc -l

    Где /path/to/folder - путь к проверяемой папке от корня диска.

    Find . -mindepth 2 | awk -F/ "{ print $2"/" }" | sort | uniq -c | sort -n

    Но часто таких деталей не нужно - достаточно увидеть 2-3 папки в которых больше всего элементов. Для этого в конце той же команды допишите | tail -3 ("3" в ней - это количество элементов, которые будут показаны ):

    Find . -mindepth 2 | awk -F/ "{ print $2"/" }" | sort | uniq -c | sort -n | tail -3

  • Установка прав для одного файла:

    chmod 644 /path/to/file/filename.ext где,
    • /path/to/file/ - путь к файлу от корня
    • filename.ext - имя файла
    Ещё проще - перейдите в папку сайта и выполните: chmod 644 filename.ext

    Как установить права на все файлы (вместе с файлами во вложенных папках)

    Перейдите в папку, где находятся файлы и выполните: find . -type f -exec chmod 644 {} \;
  • Как оказалось, многие пользователи не знают, как подключиться к серверу по shh (получить доступ к его консоли) для дальнейшей работы с ним. В этой заметке я постараюсь исправить этот пробел в знаниях! :) Для подключения по SSH к удалённому серверу нужно не так уж и много:

    • 1) SSH-клиент
    • 2) Данные для подключения к серверу (его IP-адрес, имя пользователя и пароль) - их можно получить у провайдера, предоставившего Вам сервер.

    Начнём с первого пункта.

    Подключение по SSH из Windows"а

    Для всех версий windows схема одинакова. Сначала нужно скачать специальную программу-клиент под названием putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html (кликнуть по putty-0.63-installer.exe ) установить её и запустив ввести адрес сервера в поле HostName (в поле Port должно быть значение 22):

    Подключение по ssh программой Putty


    Подтвердите, что узел является доверенным


    Введите имя пользователя

    После этого введите пароль и всё - Вы подключились к серверу по ssh!

    Внимание! При вводе пароля, из соображений безопасности не отображаются даже "звёздочки"! Так и должно быть - просто наберите пароль и нажмите "Enter "

    Подключение по SSH из Linux"а

    Если же на рабочем компьютере установлена любая версия любого линукса, то всё очень просто - откройте терминал и введите команду вида

    Ssh [email protected]

    и введите пароль где, username - имя пользователя. 111.222.333.444 - IP-адрес сервера Если подключение производится впервые - также нужно будет подтвердить свои намерения набрав слово "yes " и нажав "Enter ".

Memcache - высокопроизводительная система хранения данных в оперативной памяти сервера, применяющаяся, как правило, на высоконагруженных проектах. Memcached целесообразно использовать в случаях повышенной нагрузки на MySQL и дисковую подсистему. Высокая производительность кэширования достигается благодаря тому, что все данные хранятся в оперативной памяти, и для доступа к ним не требуется обращения к дисковой подсистеме. На хостинге «Джино» Memcached развернута на отдельных серверах, соединенных с серверами пользовательских сайтов гигабитной сетью. Все это обеспечивает высокую скорость доступа к кэшу, не нагружая ресурсы основных серверов.

Устанавливаем Memcached

yum clean all yum -y update

Устанавливаем Memcached и связанные пакеты

Yum -y install memcached

Настраиваем Memcached

Редактируем файл /etc/sysconfig/memcached:

PORT="11211" USER="memcached" MAXCONN="2048" CACHESIZE="4096" OPTIONS="-l 127.0.0.1"

Сохраняем настройки и перезапускаем Memcached

Systemctl restart memcached

Настраиваем автозагрузку Memcached

Configure Memcached to Start on Boot

Systemctl start memcached

Добавляем в автозагрузку

Systemctl enable memcached

Проверяем текущий статус

Systemctl status memcached

Для остановки используем

Systemctl stop memcached

Добавляем связку с PHP

Устанавливаем php-pecl-memcached

Yum -y install php-pecl-memcached

Перезапускаем apache

Systemctl restart httpd


Недавно добавленные

  • Размеры папок и дисков в Linux. Команды df и du

    Для просмотра свободного и занятого места на разделах диска в Linux можно воспользоваться командой df. Для просмотра размеров папок на диске используется команда du.

  • Как обновить ImageMagick с 6.7 до 7.0 в Centos 7

    В этом руководстве мы покажем вам, как обновить ImageMagick с 6.7 до 7.0 в Centos 7

  • Регулярное выражение. Валидация номера телефона

    Как проверить номер мобильного телефона? Проверка правильности, введенного номера телефона является не сложной, но важной задачей. Если пользователь введет некорректный номер, то смс сообщение до него не дойдет.

M emcache является ключевой частью инфраструктуры для многих приложений. Базы данных, очереди и удаленные сервисы часто являются узким местом веб-запросов, но во многих случаях информация, которую они содержат не меняется. Memcache является стандартным демоном, который может кэшировать произвольные значения, и может ускорить все от запросов MySQL до запросов к REST.

Начало работы с Memcache

Для завершения этого руководства, вам потребуется следующее:

  • 1 Узел (Облачный или ) с CentOS 7 и установленного стека

Когда мы закончили, стек LAMP будет увеличен с Memcache, и вы можете начать интегрировать его в существующие сайты и приложения.

Руководство

Для начала, мы установим пакет Memcached .

Yum -y install memcached

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

Systemctl start memcached.service systemctl enable memcached.service

Теперь Memcached должен быть настроен для оптимального использования. Мы позаботимся о том.

Nano /etc/sysconfig/memcached

Вы хотите выделить память для Memcached? Это достигается путем изменения значения CACHESIZE, установив его на желаемое количество оперативной памяти, выделенной для кэша.

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

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

Systemctl restart memcached.service

Чтобы использовать Memcached из PHP, требуется расширение. Мы установим в следующем примере.

Yum -y install php-pecl-memcache

Теперь, когда PHP был обновлен, вам необходимо перезапустить Apache. Кроме того, перезапустите Memcached.

Systemctl restart httpd.service systemctl restart memcached.service

Давайте проверим загрузку модуля Memcached.

Php -m | grep memcache memcache

Для дальнейшего проверки состояния модуля, мы создадим информационную страницу PHP. Эта функция возвращает информацию о конфигурации окружающей среды PHP. Если Memcached настроен правильно, он будет включать в себя подробную информацию о поддержки Memcached.

Nano /var/www/html/index.php

Теперь мы, наконец, проверим состояние модуля Memcached в PHP. Посетите страницу, которую вы только что создали по адресу: http://your_main_ip/index.php

Вывод

Системы кэширования объектов памяти, такие как Memcached, могут оптимизировать производительность базы данных, временно сохраняя часто запрашиваемые или недавно извлеченные записи в памяти. Таким образом, они уменьшают количество прямых запросов к базам данных.

Поскольку такие системы, как Memcached, при неправильной настройке подвергают сервер dos-атакам, важно заранее обеспечить безопасность серверов Memcached. В этом руководстве вы узнаете, как защитить сервер Memcached, привязав установку к локальному или частному сетевому интерфейсу и создав авторизованного пользователя для экземпляра Memcached.

Требования

Для работы вам понадобится:

  • Сервер CentOS 7, настроенный по .
  • FirewallD, настроенный по мануалу .

Установка Memcached из официального репозитория

Если система Memcached еще не установлена на сервере, вы можете установить ее из официальных репозиториев CentOS. Во-первых, обновите локальный индекс пакетов:

Затем установите официальный пакет:

sudo yum install memcached

Также можно установить libmemcached-tools, библиотеку, которая предоставляет несколько инструментов для работы с сервером Memcached:

sudo yum install libmemcached

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

Защита Memcached

Чтобы убедиться, что экземпляр Memcached прослушивает локальный интерфейс 127.0.0.1, нужно проверить настройку по умолчанию в конфигурационном файле /etc/sysconfig/memcached, а также отключить прослушиватель UDP. Эти действия защитят сервер от атак типа «отказ в обслуживании».

Откройте файл /etc/sysconfig/memcached:

Найдите переменную OPTIONS:

. . .
OPTIONS=""

Подключение к локальному сетевому интерфейсу ограничит трафик клиентами одной машины. Для этого нужно добавить -l 127.0.0.1 в переменную OPTIONS. Это ограничение может быть слишком строгим для определенных сред, но это будет хорошим началом в настройке безопасности.

Поскольку протокол UDP используется в dos атаках намного эффективнее, чем TCP, также можно отключить прослушиватель UDP. Для этого добавьте параметр -U 0 в переменную OPTIONS. В результате файл должен выглядеть следующим образом:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0"

Сохраните и закройте файл.

Убедитесь, что Memcached привязан к локальному интерфейсу и прослушивает только TCP-соединения:

sudo netstat -plunt


. . .
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2383/memcached
. . .

Это подтверждает, что memcached привязан к адресу 127.0.0.1 и использует только TCP.

Добавление авторизованных пользователей

Чтобы добавить авторизованных пользователей в Memcached, можно использовать Simple Authentication and Security Layer (SASL), структуру, которая изолирует процедуру аутентификации из протоколов приложений. Включите SASL в конфигурационном файле Memcached, а затем добавьте пользователя с учетными данными для аутентификации.

Поддержка SASL

Сначала нужно проверить подключение экземпляра Memcached с помощью команды memcstat. Это поможет подтвердить, что SASL и аутентификация пользователей включены после внесения изменений в конфигурации.

Чтобы убедиться, что Memcached запущен и работает, введите следующее:

memstat --servers="127.0.0.1"
Server: 127.0.0.1 (11211)
pid: 3831
uptime: 9
time: 1520028517
version: 1.4.25
. . .

Теперь можно включить SASL. Во-первых, нужно добавить параметр -S в переменную OPTIONS в /etc/sysconfig/memcached.conf. Откройте файл еще раз:

sudo vi /etc/sysconfig/memcached

Добавьте в переменную OPTIONS параметры -S и –vv. Последний предоставит подробный вывод в /var/log/memcached, что пригодится при устранении неполадок.

Строка должна выглядеть так:

. . .
OPTIONS="-l 127.0.0.1 -U 0 -S -vv"

Сохраните и закройте файл.

Перезапустите сервис Memcached:

sudo systemctl restart memcached

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

sudo journalctl -u memcached

Вы должны увидеть следующую строку, которая подтверждает поддержку SASL:

. . .
Mar 05 18:16:11 memcached-server memcached: Initialized SASL.
. . .

Теперь можно снова проверить подключение, но после включения поддержки SASL эта команда должна вернуть ошибку без аутентификации:

memstat --servers="127.0.0.1"

Эта команда не показывает результат на экране. Введите следующее, чтобы проверить ее статус:

$? всегда будет возвращать код вывода последней завершенной команды. Как правило, любой ответ, кроме 0, указывает на сбой процесса. В этом случае вы должны увидеть статус выхода 1, что значит, что команда memcstat была выполнена неправильно.

Создание пользователя

Теперь нужно загрузить два пакета, которые обеспечивают работу с Cyrus SASL Library и механизмами аутентификации, включая плагины, поддерживающие схемы аутентификации PLAIN. Пакеты cyrus-sasl-devel и cyrus-sasl-plain позволят вам создать пользователя и пройти аутентификацию. Установите пакеты:

sudo yum install cyrus-sasl-devel cyrus-sasl-plain

Затем нужно создать каталог и файл, где Memcached будет проверять параметры конфигурации SASL.

sudo mkdir -p /etc/sasl2
sudo vi /etc/sasl2/memcached.conf

Добавьте следующее в файл:

mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2

Кроме уровня логирования здесь нужно указать параметр mech_list и присвоить ему значение plain, благодаря чему Memcached сможет использовать свой собственный файл паролей и проверять пароли в виде простого текста. Также нужно указать путь к файлу базы данных пользователя, который будет создан далее. Сохраните и закройте файл.

Теперь нужно создать базу данных SASL с учетными данными пользователя. Используйте команду saslpasswd2, чтобы сделать новую запись для пользователя в базе данных с помощью опции -c. Здесь пользователь условно называется 8host, но вы можете заменить это имя. Используя опцию -f, можно указать путь к базе данных (путь, который вы указали в каталоге /etc/sasl2/memcached.conf):

sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 8host

Теперь передайте пользователю memcache права на БД SASL.

sudo chown memcached:memcached /etc/sasl2/memcached-sasldb2

Перезапустите сервис Memcached:

sudo systemctl restart memcached

Команда memcstat снова подтвердит, сработал ли процесс аутентификации. На этот раз запустите команду с учетными данными:

memstat --servers="127.0.0.1" --username=8host --password=your_password

Вы получите результат:

Server: 127.0.0.1 (11211)
pid: 3831
uptime: 9
time: 1520028517
version: 1.4.25
. . .

Теперь сервис Memcached поддерживает SASL и аутентификацию пользователей.

Настройка доступа по частной сети

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

Ограничение доступа по IP-адресу в брандмауэре

Прежде чем приступить к конфигурации, рекомендуется настроить правила брандмауэра, чтобы ограничить доступ к серверу Memcached. Если вы выполнили и не планируете подключаться к Memcached с другого хоста, вам не нужно менять правила брандмауэра. Ваш автономный экземпляр Memcached должен прослушивать 127.0.0.1 благодаря переменной OPTIONS, которую вы определили ранее, и поэтому беспокоиться о входящем трафике не нужно. Однако если вы планируете разрешить доступ к вашему серверу Memcached с других хостов, вам нужно будет внести изменения в настройки брандмауэра с помощью команды firewall-cmd.

Для начала добавьте выделенную зону Memcached в политику firewalld:

sudo firewall-cmd --permanent --new-zone=memcached

Затем укажите порт, который нужно открыть. По умолчанию Memcached использует 11211.

sudo firewall-cmd --permanent --zone=memcached --add-port=11211/tcp

Затем укажите внутренние IP-адреса клиентов, которые должны иметь доступ к Memcached.

sudo firewall-cmd --permanent --zone=memcached --add-source=client_server_private_IP

Чтобы обновить правила, перезапустите брандмауэр:

sudo firewall-cmd --reload

Пакеты, поступающие с IP-адреса клиента, теперь должны обрабатываться в соответствии с правилами в выделенной зоне Memcached. Все остальные соединения будут обрабатываться в зоне по умолчанию public.

После этого можно привязать Memcached к интерфейсу частной сети.

Настройка Memcached для поддержки интерфейса частной сети

Теперь, когда брандмауэр готов, вы можете привязать Memcached к частному интерфейсу сервера вместо 127.0.0.1, отредактировав переменную OPTIONS.

Откройте /etc/sysconfig/memcached:

sudo vi /etc/sysconfig/memcached

Внутри найдите переменную OPTIONS. Теперь нужно изменить -l 127.0.0.1 и указать внутренний IP-адрес сервера Memcached:

. . .
OPTIONS="-l memcached_servers_private_IP -U 0 -S -vv"

Сохраните и закройте файл.

Перезапустите Memcached:

sudo systemctl restart memcached

Убедитесь, что все работает правильно, с помощью команды netstat:

sudo netstat -plunt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 memcached_servers_private_IP:11211 0.0.0.0:* LISTEN 2383/memcached
. . .

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

Заключение

Теперь вы умеете устанавливать Memcached и обеспечивать безопасность этого сервиса.

Чтобы узнать больше о Memcached, ознакомьтесь с

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

Memcached - система кэширования в оперативной памяти, обладающая высокой производительностью, которая используется в основном для ускорения сайтов, которые интенсивно используют базу данных.

Большинство современных языков программирования поддерживают библиотеки Memcached , в том числе PHP , Perl , Ruby и Python . Memcached работает в ОЗУ, потому обмен данными происходит практически мгновенно.

Установка

PORT : Порт по умолчанию для использования Memcached.
USER : Пользователь от которого запущен Memcached.
MAXCONN : Максимальное количество соединений Memcached.
CACHESIZE : Размер кеша для памяти.
OPTIONS : Установите IP-адрес сервера, чтобы веб-серверы Apache или Nginx могли подключаться к нему.

После перезапускаем сервис systemctl restart memcached .

Добавляем сервис в автозапуск systemctl enable memcached .