Я, пожалуй, пропущу описание аппаратных особенностей этого оборудования, так как оно есть на сайте производителя и сразу перейду к делу.
Первое, с чего мы начнем — это обновление программного обеспечения и создание комфортного режима работы.
Настройка управляющего интерфейса:
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, я считаю, это неплохой вариант для организации балансировки ресурсов, несмотря на некоторое моральное устаревание. Большая часть балансировщиков имеет приличный вес (для тщедушных инженеров это может стать проблемой), возможность установки нескольких блоков питания и модулей ввода/вывода, что некоторым образом говорит в пользу надежности этих устройств.
ссылка на оригинал статьи http://habrahabr.ru/post/167037/
Добавить комментарий