Как установить сервер кэша Varnish для повышения производительности моего существующего веб-сервера Apache, а особенно кэширования динамического содержимого на сервере Ubuntu Linux 16.04 LTS?
Varnish Cache является ускорителем веб приложений. Вы устанавливаете его перед любым веб-сервером, который использует HTTP, и настраиваете его для кэширования содержимого. Он действует как ускоритель веб-приложений, ориентированный на оптимизацию кэширования и сжатия. Он очень быстро и используется веб-сайтами с высоким трафиком. Давайте посмотрим, как настроить кэш Varnish версии 4.x на сервере Ubuntu Linux 16.04 LTS.
Наша установка
Установка Varnish
Введите следующую команду apt-get command/apt command для того, чтобы установить программное обеспечение кэша Varnish:
$ sudo apt update $ sudo apt upgrade $ apt search Varnish $ sudo apt install varnish
Примеры возможных выводов данных:
Reading state information... Done The following additional packages will be installed: binutils cpp cpp-5 gcc gcc-5 libasan2 libatomic1 libcc1-0 libcilkrts5 libgcc-5-dev libgomp1 libisl15 libitm1 libjemalloc1 liblsan0 libmpc3 libmpx0 libquadmath0 libtsan0 libubsan0 libvarnishapi1 Suggested packages: binutils-doc cpp-doc gcc-5-locales gcc-multilib make autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-doc libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg varnish-doc The following NEW packages will be installed: binutils cpp cpp-5 gcc gcc-5 libasan2 libatomic1 libcc1-0 libcilkrts5 libgcc-5-dev libgomp1 libisl15 libitm1 libjemalloc1 liblsan0 libmpc3 libmpx0 libquadmath0 libtsan0 libubsan0 libvarnishapi1 varnish 0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded. Need to get 23.1 MB of archives. After this operation, 79.7 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://in.archive.ubuntu.com/ubuntu/ xenial/main amd64 libmpc3 amd64 1.0.3-1 [39.7 kB] ..... ... .. Setting up libquadmath0:amd64 (5.4.0-6ubuntu1~16.04.4) ... Setting up libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.4) ... Setting up gcc-5 (5.4.0-6ubuntu1~16.04.4) ... Setting up gcc (4:5.3.1-1ubuntu1) ... Setting up libvarnishapi1 (4.1.1-1) ... Setting up libjemalloc1 (3.6.0-9ubuntu1) ... Setting up varnish (4.1.1-1) ... Processing triggers for libc-bin (2.23-0ubuntu5) ... Processing triggers for systemd (229-4ubuntu16) ... Processing triggers for ureadahead (0.100.0-19) ...
Varnish установлен и он настроен для прослушивания порта 6081. Эта настройка выставлена по умолчанию.
Вы можете проверить это с помощью следующей простой команды netstat:
$ netstat -tulpn | grep varnishd
Примеры возможных выводов данных:
Конфигурация Varnish
Ubuntu Linux 16.04 LTS использует systemd на основе config файлов следующим образом:
- /lib/systemd/system/varnish.service – файл config по умолчанию
- TCP 6081 порт – порт кэша Varnish
- TCP 6082 port – порт управления Varnish
- /etc/varnish/ – файлы конфигурации Varnish, включая VCL
Давайте посмотрим, как правильно выполнить настройку в соответствии с установкой # 1 (see fig.01).
Шаг 1 – Выставить Varnish кэш на порт 80
Введите следующую команду для редактирования файла кеша Varnish и создания нового файла конфигурации /etc/systemd/system/varnish.service.d/ :
$ sudo systemctl edit varnish.service
Добавьте/присоедините следующую опцию config:
[Service] ExecStart= ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a 202.54.2.50:80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1024m
Сохраните изменения и закройте файл. Где,
- 202.54.2.50:80 – прослушать общедоступный IP-адрес на порту 80.
- 1024m – увеличьте объем использования ОЗУ для Varnish с 256 м по умолчанию до 1024 м
Введите следующую команду для перезагрузки изменений:
$ sudo systemctl daemon-reload
Шаг 2 – Настройте Varnish для использования нашего сервера Apache в качестве выходного буфера
Затем, вам нужно настроить Varnish для использования нашего сервера Apache в качестве выходного буфера, работающего по IP-адресу 192.168.1.6 , на порту 80 . Отредактируйте файл /etc/varnish/default.vcl, для этого введите:
$ sudo vi /etc/varnish/default.vcl
Выставьте следующее для указания на ваш сервер контента (Apache/Lighttpd/PHP/Python app server) работающего по адресу 192.168.1.6 и на порту 80.
backend default { .host = "192.168.1.6"; .port = "80"; }
В принципе, вам нужно установить значения хоста и порта, соответствующие вашему LAMP –серверу, личному IP-адресу и порту прослушивания. Сохраните изменения и закройте файл.
Шаг 3 – Настройте Apache для использования на IP адресе 192.168.1.6 и порту 80
Введите следующую команду для того, чтобы отредактировать/etc/apache2/ports.conf :
$ sudo vi /etc/apache2/ports.conf
Отредактируйте/добавьте/присоедините инструкцию по прослушиванию:
Listen 192.168.1.6:80
Сохраните изменения и закройте файл. Отредактируйте /etc/apache2/sites-enabled/000-default.conf , для этого введите:
$ vi /etc/apache2/sites-enabled/000-default.conf
Виртуальный хост (Virtual Host) должен быть обновлен следующим образом:
<VirtualHost 192.168.1.6:80>
Сохраните изменения и закройте файл. И наконец, перезапустите Apache веб сервер, для этого запустите:
$ sudo systemctl restart apache2.service
На этом этапе вам также необходимо перезапустить кеш Varnish, для этого введите:
$ sudo systemctl restart varnish.service
Шаг 4 – Настрока ufw для того, чтобы открыть порт 80
Введите следующую команду для открытия порта 80 с помощью ufw:
$ sudo ufw allow 80
Примеры возможных выводов данных:
Rule added Rule added (v6)
Шаг 5- Проверьте это
Запустите ваш веб браузеров и введите url или IP адрес:
http://your-ip-here/ http://202.54.2.50/ http://your-domain-name/
Примеры возможных выводов данных:
Другой вариант — использовать команду curl для просмотра http хедеров:
$ url -I http://202.54.2.50/
Примеры возможных выводов данных:
HTTP/1.1 200 OK Date: Wed, 22 Feb 2017 11:59:38 GMT Server: Apache/2.4.18 (Ubuntu) Last-Modified: Wed, 22 Feb 2017 11:42:57 GMT Vary: Accept-Encoding Content-Type: text/html X-Varnish: 32773 32771 Age: 4 Via: 1.1 varnish-v4 ETag: W/"2c39-5491cff7c5c13-gzip" Accept-Ranges: bytes Connection: keep-alive
Значение Age: указывает, что страницы были кэшированы сервером Varnish.
Как я могу просмотреть журнал Varnish и другую информацию?
Чтобы увидеть рейтинг входа в журнал Varnish, введите:
$ sudo varnishtop
Примеры возможных выводов данных:
Чтобы просмотреть файл журнала cd в /var/log/lnish :
$ cd /var/log/varnish $ sudo tail -f varnish.log $ sudo tail -f varnishncsa.log
Примеры возможных выводов данных (при условии, что вы настроили PHP/Python с Apache, вы должны увидеть что-то следующее):
151.1.xx.yy - - [22/Feb/2017:12:03:48 +0000] "GET https://www.cyberciti.biz/faq/ubuntu-linux-start-restart-stop-apache-web-server/ HTTP/1.0" 200 60944 "https://www.google.co.in/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0" 111.z.xx.yy - - [22/Feb/2017:12:03:48 +0000] "GET https://www.cyberciti.biz/faq/linux-disk-format/ HTTP/1.0" 200 94830 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" xxx.ttt.zz.tt - - [22/Feb/2017:12:03:48 +0000] "GET https://www.cyberciti.biz/faq/wp-content/plugins/contextual-related-posts/default.png HTTP/1.0" 200 15454 "https://www.cyberciti.biz/faq/ubuntu-linux-start-restart-stop-apache-web-server/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0" aa.bb.cc.dd - - [22/Feb/2017:12:03:48 +0000] "GET https://www.cyberciti.biz/faq/find-linux-distribution-name-version-number/ HTTP/1.0" 200 92470 "https://www.google.co.in/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"
Просмотр статистики кэша Varnish сервера
Введите следующую команду:
$ sudo varnishstat $ sudo varnishstat -1 $ sudo varnishstat -1 | grep -i cache
Примеры возможных выводов данных:
MAIN.cache_hit 334059 6.33 Cache hits MAIN.cache_hitpass 239 0.00 Cache hits for pass MAIN.cache_miss 94300 1.79 Cache misses
Как очистить содержимое из кэша Varnish?
Для начала вам нужно определить ACL. У меня есть следующий config в файле /etc/varnish/default.vcl :
# Who is allowed to purge? acl purge { "localhost"; "127.0.0.1"; "72.14.190.12"; "192.168.1.6"; } sub vcl_recv { # allow PURGE from localhost,72.14.190.12 and 192.168.1.6 if (req.method == "PURGE") { if (!client.ip ~ purge) { return(synth(405,"Not allowed.")); } return (purge); } }
Я бы обратился к Varnish следующим образом:
$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == www.cyberciti.biz && req.url == /faq/bash-for-loop/"
Чтобы удалить/очистить все .html-страницы из кеша, введите:
$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.http.host ~ www.cyberciti.biz && req.url ~ .html"
Если вы хотите очистить все, просто перезапустите кеш Varnish:
$ sudo systemctl restart varnish.service
Для получения большей информации ознакомьтесь с HTTP Purging. Оставайтесь с нами для получения большей информации о конфигурациях Nginx SSL и создания пользовательских VCL для кэширования страниц.
Перевод: Анна Давыдова
Источник: cyberciti.biz
Это интересно: