Краткий how-to по настройке Cisco CSS11500

Опубликовано – 25.01.2013

 Добрый день, уважаемые читатели! Хочу дать несколько простых рецептов, пока сам не забыл. На днях пришлось разбираться с балансировщиками нагрузки, не смотря на совершенную непохожесть на IOS-based устройства, эти железки оказались удивительно просты в конфигурировании.

 Первое, с чего мы начнем — это обновление программного обеспечения и создание комфортного режима работы.

 Настройка управляющего интерфейса:

CSS11503# conf t
CSS11503(config)# boot
CSS11503(config-boot)# ip address 192.168.1.2
CSS11503(config-boot)# subnet mask 255.255.255.0
CSS11503(config-boot)# gateway address 192.168.1.1

 Зададим отображаемое в консоли имя устройства (не более 16 символов):

CSS11503# prompt megabalanser
megabalanser# save_profile

 Обновим программное обеспечение:

megabalanser# archive script admin-profile
megabalanser# save_profile
megabalanser(config)# ftp-record ftpname 10.10.10.10 ftpuser "ftppassword"
megabalanser# copy ftp ftpname sg0820601.adi boot-image
megabalanser(config)# boot
megabalanser(config-boot)# unpack sg0820601.adi
megabalanser(config-boot)# primary boot-file sg0820601
megabalanser(config-boot)# reboot
Are you sure you want to reboot the system, [y/n]:y

** Message from [admin] **

System Reboot from:vty1, All sessions will terminate...

**

...
megabalanser# restore admin-profile script

 Создаем нашу конфигурацию. Предположим, что у нас есть сеть 192.168.200.0/24, в кторой расположены 2 сервера: 192.168.200.100 и 192.168.200.101. Адрес балансировщика в этой сети — 192.168.200.10. Адрес внешнего интерфейса балансировцика — 192.168.100.10/24. Здесь и далее приводятся примеры из конфигурационного файла, без указания заголовка командной строки.

ip route 0.0.0.0 0.0.0.0 192.168.100.1 1

interface 2/1
  bridge vlan 10

interface 3/1
  bridge vlan 20

circuit VLAN10
  description "--- External ---"

  ip address 192.168.100.10 255.255.255.0

circuit VLAN20
  description "--- Internal ---"

  ip address 192.168.200.10 255.255.255.0

 Выполним конфигурирование простой балансировки между двумя серверами. Для того, чтобы нас на спрашивали подтверждения на создание сервисов, можно включить режим expert. В моем случае, проверка доступности серверов осуществляется путем отправки GET запроса к серверу, получаемый ответ (я оправляю «OK») анализируется и сравнивается с эталонным значением. Первым этапом описываем сервисы.

service server-1
  port 80
  ip address 192.168.200.100
  keepalive type http
  keepalive method get
  keepalive uri "/ping.html"
  keepalive hash "e0aa021e21dddbd6d8cecec71e9cf564"
  active

service server-2
  port 80
  ip address 192.168.200.101
  keepalive type http
  keepalive method get
  keepalive uri "/ping.html"
  keepalive hash "e0aa021e21dddbd6d8cecec71e9cf564"
  active

 Создаем владельца («owner») и контент. Понятие «владелец» необходимо только для удобства администрирования. обратите внимание на используемый метод балансировки — большинство современных приложений потребуют что бы пользователь, в рамках сессии, общался с одной и той же нодой. В качестве адреса контента, куда будут обращаться пользователи, будет выступать 192.168.100.11.

owner site-1

  content site-http
    vip address 192.168.100.11
    add service server-1
    add service server-2
    advanced-balance sticky-srcip-dstport
    port 80
    protocol tcp
    active

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

group site-http
  add destination service server-1
  add destination service server-2
  vip address 192.168.100.11
  active

 Давайте проверим, что же у нас получилось:

megabalanser# sh group site-http

Group: site-http - Active (192.168.100.11 Not Redundant)
  Session Redundancy: Disabled

  Last Clearing of Stats Counters: 01/24/2013 21:44:18

Associated ACLs: NONE
  Source Services:
   NONE

  Destination Services:
                      DNS
  Name: Hits: State: Load: Trans: Keepalive: Conn:
  ----- ----- ------ ----- ------ ---------- -----
  server-1
            0 Alive 2 0 HTTP-80:GET 0
  server-2
            0 Alive 2 0 HTTP-80:GET 0

  Group Service Total Counters:
    Hits/Frames/Bytes: 0/0/0
    Connections Total/Current: 0/0
    FTP Control Total/Current: 0/0
    Total No Portmap Errors: 0

 А теперь представим, что у вашего балансировщика есть SSL-модуль, и вы хотите им поспользоваться для организации безопасного подключения пользователей к сервису. Нам понадобиться сформировать запрос на сертификат (или сделать самоподписанный), настроить модуль и создать группы.

 Генерируем ключ:

ssl genrsa rsakeyfiletest 1024 "password"

 Привязываем ключ к файлу:

ssl associate rsakey rsa-test-name rsakeyfiletest

 Вот тут мы можем пойти двумя путями — или создаем самоподписанный сертификат или генерируем Certificate Signing Request (CSR). В случае CSR нам необходимо скопировать вывод и предоставить его в CA, для выдачи сертификата:

ssl gencsr rsa-test-name

-----BEGIN CERTIFICATE REQUEST-----
MIIB0DCCATkCAQAwgY8xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzAN
BgNVBAcTBk1vc2NvdzEcMBoGA1UEChQTUm9zc2dvc3N0YWtoIExyf3RkLjEQMA4G
A1UECxQHVGVsY28gfzERMA8GA1UEAxQIKi5yZ3MucnUxGzAZBgkqhkiG9w0BCQEW
DHRlbGNvQHJncy5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxZTYAx/o
VA4KzpX7pq4013egDFC1BfVDRzWJJhno7k5K4ydPrmVZhECKormSebSGBL00cFKs
M8ve7WGW370YxaIKbKZBFF88Dz+PbtphpcneN1DWakmz7H063tiUl4zb2cv09cMn
XTKIgL6z5RyVyqjMtC5ba5XWVGdeD25N6OkCAwEAAaAAMA0GCSqGSIb3DQEBBAUA
A4GBABRNbvf4a3SC8RZdSoaOjwuRvqs5rgO3z+CPlgqER7xQZx/FVOHu6y9fv6bZ
hiq0bP1meRmMDmb2aXbk2RysVeKRIY6c6fYrhuddT8gd4E0BkIVF299D4m2nqLyQ
SK0X9VaLIVD59oX2BYNBXpFiXNdv1nmwZL4uNP6I4D5dXgVo
-----END CERTIFICATE REQUEST-----

 Генерируем самоподписанный сертификат:

ssl gencert certkey rsa-test-name signkey rsa-test-name certfiletest "password"

 Привязываем сертификат к файлу:

ssl associate cert cert-test-name certfiletest

 Или импортируем сертификат, после чего привязываем его к файлую Обратите внимание, что пароль должен соответствовать паролю ключа, с которым генерировался CSR. Как вы могли заметить, при использовании SSL модуля у нас появляется функционал сжатия трафика. Если вы используете несколько SSL-модулей, то можно настроить балансировку между ними, добавив строку advanced-balance ssl в описание контента (в примере — «content site-https»).

copy ssl ftp ftpname import mycert.crt PEM "password"
ssl associate cert mycert-name mycert.crt

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

ssl-proxy-list my-ssl
  ssl-server 10
  ssl-server 10 rsacert mycert-name
  ssl-server 10 rsakey rsa-test-name
  ssl-server 10 cipher rsa-with-rc4-128-md5 192.168.100.11 80
  ssl-server 10 vip address 192.168.100.11

service ssl_module
  type ssl-accel
  keepalive type none
  compress encode force-gzip
  slot 3
  compress accept-omit gzip
  compress type default
  add ssl-proxy-list my-ssl
  active

  content site-https
  vip address 192.168.100.11
  add service ssl_module
  port 443
  protocol tcp
  application ssl
  active

 Обратите внимание, что балансировщик весьма вольно обращается с порядком строк внутри сервисов :-(. Если вы привыкли, чтобы все было параллельно и перпендикулярно, то лучше удалять сервис целиком и заводить его заново, а не удалять старые и вставлять новые строки.

Используемая литература:

Cisco CSS 11500 Series Content Services Switches Configuration Guides

 P.S. С учетом того, сколько такая техника стоит на ebay, я считаю, это неплохой вариант для организации балансировки ресурсов. Большая часть балансировщиков, сделанных до 2008 года, имеет маркировку «Made in USA», имеет приличный вес(для тщедушных инженеров это может стать проблемой) и возможность установки нескольких блоков питания, что некоторым образом говорит о надежности этих устройств 🙂




 Уважайте труд автора, сохраняйте копирайты.
Реклама на сайте висит не просто так и если статья Вам понравилась, с ее помощью Вы можете отблагодарить автора за проделанную работу. Спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*