Author: 891rpm

  • Запуск нескольких сайтов с различными SLA

    От переводчика (А.К.): SLA (от англ. Service Level Agreement) означает \”Соглашение об Уровне Обслуживания\” — основной документ, регламентирующий взаимоотношения между ИТ-компанией и заказчиком.

    Сделать это можно несколькими способами. Прежде всего следует упомянуть, что Apache поддерживает подобную функциональность в виде модулей, но мы продемонстрируем как добиться этого средствами операционной системы. Эти строки взяты из примера, представленного Джамалом Хади (Jamal Hadi).

    Допустим, что у нас есть два клиента, которые арендуют некоторую долю нашего канала под http, ftp и потоковое audio. Первый клиент арендует полосу в 2 Мбита, второй — 5 Мбит. Для начала назначим нашим клиентам виртуальные IP-адреса на нашем сервере:

    # ip address add 188.177.166.1 dev eth0
    # ip address add 188.177.166.2 dev eth0

    Решение проблемы о том, как назначить правильные IP-адреса различным службам, оставляем за вами. Практически все популярные демоны поддерживают такую возможность.
    Присоединяем CBQ qdisc к eth0:

    # tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit cell 8 avpkt 1000 \\
    mpu 64

    Создаем классы клиентов:

    # tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate \\
    2MBit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21
    # tc class add dev eth0 parent 1:0 classid 1:2 cbq bandwidth 10Mbit rate \\
    5Mbit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21

    И добавляем фильтры к классам:

    ##FIXME: Для чего нужна первая строка, что она делает? Каково назначение \"делителя\" (divisor)?:
    ##FIXME: Делитель имеет отношение к хеш-таблице и номеру пула
    ## (bucket) - ahu
    # tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 1: u32 divisor 1
    # tc filter add dev eth0 parent 1:0 prio 5 u32 match ip src 188.177.166.1
    flowid 1:1
    # tc filter add dev eth0 parent 1:0 prio 5 u32 match ip src 188.177.166.2
    flowid 1:2

    FIXME: Почему нет token bucket filter?