Pull to refresh

Небольшая шпаргалка по Cisco CSS 11500

Reading time 6 min
Views 8K
Добрый день, уважаемые читатели! К сожалению, на Хабре практически нет упоминаний об этих замечательных устройствах, очевидно ввиду их возраста, но имеются статьи по более молодому оборудованию Cisco ACE. Но, несмотря на некоторую непопулярность, Cisco CSS 11500 Series Content Services Switches всё же встречаются в корпоративных сетях и первое столкновение с неподготовленным администратором может вызвать у него легкое недоумение. Не обращайте внимания на кажущуюся сложность, эти железки удивительно просты в конфигурировании.

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

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

 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


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

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

 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


Порты могут быть настроены и транком 802.1Q:

interface 2/1
  trunk
  vlan 10

  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


Я думаю, что вам должно быть интересно отслеживать срок действия сертификатов, поэтому стоит запомнить команду:

megabalanser# sh ssl cert-expiration
Certificate Expiration Summary:
  Advanced Warning:    30 days

mycert-name                           2014-01-24(Y-M-D)  TTL:  364
cert-test-name                         2014-01-10(Y-M-D)  TTL:  350

<No CRL records are configured>


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

 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, я считаю, это неплохой вариант для организации балансировки ресурсов, несмотря на некоторое моральное устаревание. Большая часть балансировщиков имеет приличный вес (для тщедушных инженеров это может стать проблемой), возможность установки нескольких блоков питания и модулей ввода/вывода, что некоторым образом говорит в пользу надежности этих устройств.
Tags:
Hubs:
+5
Comments 4
Comments Comments 4

Articles