Избранная запись

Программа для системных администраторов Alladmin

0409020180028

Для работы системным администратором я написал себе программу, прошу оценить.

Программа Alladmin призвана помочь одному или группе системных администраторов организовать хаос в учете парка серверов и наложить на данную информацию функционал.
Данная программа использует уже существующие инструменты такие как Putty, Microsoft Remoute Desktop и прочее.
За более подробной информацией о данной программе прошу перейти по этой ссылке.

Со всеми вопросами обращайтесь по email fil-23@ya.ru.

или skype: filfil-23

 

 

 

sysadmins.ru

Установка Zabbix

У нас уже имеется чистая Ubuntu 22.04.3 с настроенной сетью.
Для информации мы будем использовать следующую ссылку на официальный манула от Zabbix https://www.zabbix.com/ru/download.
У нас будет вот такая конфигурация на сервере.

Работу будем выполнять из под учетки sudo.
Качаем и устанавливаем deb пакет с репозиториями Zabbix, после обновляем список репозиториев

# wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
# dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
# apt update

Посмотреть добавленные репозитории можно следующей командой
vi /etc/apt/sources.list.d/zabbix.list

Устанавливаем Zabbix сервер, веб-сервер NGINX, агента Zabbix2

apt install zabbix-server-pgsql zabbix-frontend-php php8.1-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

Настраиваем PostgreSQL

Устанавливаем сервер PostgreSQL

apt install postgresql

Запустим Postgresql

systemctl start postgresql

Открываем файл конфигурации

vi /etc/postgresql/14/main/postgresql.conf

Задаем IP адрес сервера(ов) с которых будем принимать подключения к БД

listen_addresses = 'localhost'

По умолчанию принимаются подключения только с локального сервера

Сохраняем, перезапускаем PostgerSQL

systemctl restart postgresql

Если на сервере расположены другие БД, то данная команда прервет все соединения на время перезагрузки, что не сильно хорошо, для того чтобы этого избежать можно использовать следующую команду которая просто перечитает все конфиги systemctl daemon-reload

Настройка метода аутентификации

vi /etc/postgresql/14/main/pg_hba.conf

Поскольку у нас БД будет установлена локально, менять ни чего не надо.
Если что-то было изменено то нужно перезапустить службу PostgreSQL

Данные БД находится по следующему пути:
/var/lib/postgresql/14/main/

Установка расширения PostgreSQL для возможности партицированния данных

https://docs.timescale.com/self-hosted/latest/install/installation-linux/

На момент написания статьи последняя версия timescaledb не поддерживалась Zabbix 6.04, поэтому timescaledb нужно устанавливать следующей командой:
apt-get install timescaledb-2-postgresql-14=’2.9.0*’ timescaledb-2-loader-postgresql-14=’2.9.0*’

echo "deb https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo apt-key add -
apt update
apt install timescaledb-2-postgresql-14

Настраиваем PostgreSQL для работы с timescaledb,
открываем файл конфигурации

vi /etc/postgresql/14/main/postgresql.conf

Находим секцию shared_preload_libraries и выставляем параметр

shared_preload_libraries = 'timescaledb'

Перезапускаем PostgreSQL

systemctl restart postgresql

Создаем пользователя БД PostgreSQL, система попросит ввести пароль

sudo -u postgres createuser --pwprompt zabbix

Создадим базу для Zabbix с названием zabbix и владельцем zabbix

sudo -u postgres createdb -O zabbix zabbix

Команда -O zabbix устанавливает владельца базы

Создаем в новой БД структуру и данные

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Настройка Zabbix для работы с PostgreSQL

Открываем файл конфигурации zabbix

 vi /etc/zabbix/zabbix_server.conf

Находим строку ,вписываем пароль ранее созданного пользователя БД zabbxix.

DBPassword=p@$$w0rd

Настройка для работы с timescaledb
Активируем расширение в postgreSQL

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

При корректной активацией данного расширения появится сообщение вида

_____ _ _ ____________
|_ _(_) | | | _ \ ___ \
| | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ /
| | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
| | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ /
|_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
Running version 2.9.0
For more information on TimescaleDB, please visit the following links:

1. Getting started: https://docs.timescale.com/timescaledb/latest/getting-started
2. API reference documentation: https://docs.timescale.com/api/latest
3. How TimescaleDB is designed: https://docs.timescale.com/timescaledb/latest/overview/core-concepts

Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescale.com/timescaledb/latest/how-to-guides/configuration/telemetry.

Подготовим БД, «спартицируем» наверное так назовём этот процесс, для того чтобы zabbix хранил данные порционно

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix

Настройка Nginx

Откроем файл конфигурации nginx

vi /etc/zabbix/nginx.conf

Раскомментируем строчки и отредактируем

listen 80;
server_name 127.0.0.1;

В поле server_name нужно ввести имя сервера по которому вы будете к нему обращаться (данная запись должна быть настроена в DNS, либо указать IP адрес самого сервера если будете обращаться к нему по ip-адресу

Почти готово, установим поддержку Русского языка (локаль)
Открываем файл locale.gen

vi /etc/locale.gen

Найдем и раскомментируем строку

ru_RU.UTF-8 UTF-8

Пере генерируем локали

locale-gen

Перезапускаем все наши сервисы

systemctl restart zabbix-server zabbix-agent2 nginx php8.1-fpm

Включаем данные сервисы в автозагрузку

systemctl enable zabbix-server zabbix-agent2 nginx php8.1-fpm

Сервер готов, теперь можно зайти в его веб интерфейс и продолжить настройку.
Для этого перейдем по адресу http://ip_адсе_сервера:80. Выберем (или нет) Русский язык, нажмем Далее

Проверим что на против каждого пункта стоит состояние ОК.

Укажем пароль пользователя БД zabbix

Укажем имя сервера (или нет) и часовой пояс.

Последний взгляд на установленные параметры

Zabbix установлен

Входим в панель управления zabbix, для этого в поле Имя пользователя введем дефолтный параметр Admin (с большой буквы), а в поле пароль zabbix (с маленькой).

SKYLINE Gsm VOIP Gateways

SKYLINE gsm manager


Данная программа предназначена для обзвона клиентов по предоставленному списку номеров и проигрывания им звукового сообщения, если клиента устроит предложение, она нажимает соответствующей клавишу на своем телефоне, ему отправляется СМС.
Получил как то задачу написать программу для управления GSM шлюзом SKYLINE. Т.к. данный шлюз не имеет из коробки софта для управления вызовами, а только умеет вести себя как SIP клиент. Было принято решение писать отдельный софт для взаимодействия с этим шлюзом по средством встроенного в него API и сервером Asterisk через AMI интерфейс. По итогу программа отправляет запросы на сервер, сервер в свою очередь делает вызов через шлюз, параллельно программа следить какие каналы на шлюзе свободны и дополнительно обрабатывает нажатие клавиш абонентов отправляя им СМС.

Возможно кому-то пригодится данная программа или заинтересуется ей или ее модификацией. Выложу ее сюда, можно качать. если будут вопросы то можете написать. Для ее работы должны быть настроен сервер Asterisk, установлена БД Firebird. Программа работает на операционной системе Windows.
Контакты:
e-mail: fil-23@ya.ru
telegramm: https://t.me/piligrimmu23

Программа: Скачать.

NIMBLE AF40 первоначальная настройка

Данная информация дается после сброса полки через CLI командой:

Nimble OS $ array --resetup

Нужно найти по IP адресу полку.

При инициализации полки дают почитать договор

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

Теперь создаем новый массив. Придумываем имя массиву имя группе массива, задаем IP адрес через который он будет доступен для управления, т.е. mng интерфейс, шлюз для выхода в интернет дабы можно было качать обновления, доменное имя. Ни и пароль для входа в вэб интерфейс и через SSH

После того как массив сконфигурируется, вам предложат ввести логин и пароль, логин по умолчанию admin, пароль тот который вы задали при настройке

После авторизации продолжается настройка полки, теперь требуется настроить сетевые порты для управления и подключения к кластеру. Мы будем настраивать полку по схеме отказоустойчевого кластера, дополнительная информация https://infosight.hpe.com/welcomecenter/ там можно выбрать свою полку и посмотреть предварительные проверки которые должны быть сделаны перед началом эксплуатации. Нас интересует схема подключения полки к коммутаторам.

В данной схеме мы откажемся только от резервирования 4мя линками сети управления (красные линии), будет только два кабеля. Всё остальное будет также.

Для отказоустойчевого кластера нам понадобится агрегировать по два Data-порта полки в каждый коммутатор. На коммутаторе, в данном случае HP5700 нам также нужно агрегировать порты согласно схеме.

Настраиваем адреса управления и адреса передачи данных.

Теперь требуется добавить порты для управления и передачи данных. Т.к. мы хотим агрегировать порты передачи данных, то выбираем tg1a и tg1b.

Следующий шаг, выбираем ДНС сервера.

Настройка NTP

Настройка почтового сервера с которого будут отправляться уведомления и адрес на который требуется слать уведомления

Настройка закончена.

Cisco 3750 настройка под работу коммутатора (и немного стек)

Для начала сбросим конфигурацию в ноль. Перезагрузим устройство

Switch>
Switch>enable
Switch#erase startup-config

Подтверждаем действие нажатием enter

Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete

Теперь установим IP адрес устройства. Для этого нужно установить IP адрес на VLAN 1.

Switch>
Switch>enable
Switch#configure terminal
Switch#configure terminal
Switch(config)#interface vlan 1
Switch(config-if)#ip address 172.16.1.27 255.255.255.0

Теперь не плохо бы настроить доступ к устройству по SSH.
Поскольку для доступа по SSH требуется сгенерировать открытый ключ шифрования. Нам требуется знать следующий факт: ключ генерируется на основе 2 параметров своей системы, это ИМЯ УСТРОЙСТВА и ДОМЕННОЕ ИМЯ УСТРОЙСТВА. Для начала нужно настроить их. Имейте ввиду, что если после генерации ключа изменится один из этих двух параметров, то придется генерировать ключ по новой.
Зададим имя устройства

Switch>
Switch>enable
Switch#configure terminal
C3750X_SERV(config)#hostname C3750X_CENTRAL_1
C3750X_CENTRAL_1(config)#

Теперь доменное имя устройства

C3750X_CENTRAL_1>enable
C3750X_CENTRAL_1#configure terminal
C3750X_CENTRAL_1(config)#ip domain-name example.local

Генерируем открытый ключ шифрования длиной 1024 бита.

C3750X_CENTRAL_1>enable
C3750X_CENTRAL_1#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.
C3750X_CENTRAL_1(config)#crypto key generate rsa modulus 1024
The name for the keys will be: C3750X_CENTRAL_1.example.local

% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 9 seconds)

Отлично, ключ есть, а доступа нет. Надо дать. Тут тоже есть интересные нюансы. Раньше не было SSH, а был telnet. Сконфигурируем линии подключения для доступа по SSH.
Заходим в конфигурирование всех (16) линий VTY

C3750X_CENTRAL_1>enable
C3750X_CENTRAL_1#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
C3750X_CENTRAL_1(config)#line vty 0 15

Укажем, что для идентификации будем использовать локальные учетные записи

C3750X_CENTRAL_1(config-line)#login local

Укажем коммутатору что он должен принимать подключения только по SSH. Telnet тогда отсекается если его не указать дополнительно.

C3750X_CENTRAL_1(config-line)#transport input ssh

Выходим на уровень выше. И создаем учетную запись вместе с паролем. Пароль можно создать в виде открытого текста указав параметре password вместо secret. Параметр secret скрывает пароль от запоминания случайного взгляда, но не от дешефрации, его можно расшифровать.

C3750X_CENTRAL_1(config-line)#exit
C3750X_CENTRAL_1(config)#username admin secret P@$$w0rd

Сохраняем конфигурацию

C3750X_CENTRAL_1(config-line)#exit
C3750X_CENTRAL_1(config)#write

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

C3750X_CENTRAL_1#show switch stack-ports
  Switch #    Port 1       Port 2
  --------    ------       ------
    1           Ok          Down
    2           Ok           Ok
    3          Down          Ok

Просмотр к какому порту какой коммутатор подключен. Т.е. смотрим соседей по порту.

C3750X_CENTRAL_1#show switch neighbors
  Switch #    Port 1       Port 2
  --------    ------       ------
      1         2            None
      2         3             1
      3        None           2

Посмотрим список коммутаторов и их роль в стеке

C3750X_CENTRAL_1#show switch
Switch/Stack Mac Address : d48c.b569.5f80
                                           H/W   Current
Switch#  Role   Mac Address     Priority Version  State
----------------------------------------------------------
 1       Member 689c.e270.af80     13     3       Ready
 2       Member e4d3.f12e.a680     15     3       Ready
*3       Master d48c.b569.5f80     15     3       Ready

В ссылке выше описано, как вручную изменить номер члена стека, значение приоритета, выбрать мастера стека

Чтобы просмотреть версию протокола стека коммутаторов, выполните команду

C3750X_CENTRAL_1#show platform stack manager all
...
                 Stack State Machine View
==============================================================

Switch   Master/   Mac Address          Version    Current
Number   Member                          (maj.min)  State
-----------------------------------------------------------
1        Member    689c.e270.af80          1.59        Ready
2        Member    e4d3.f12e.a680          1.59        Ready
3        Master    d48c.b569.5f80          1.59        Ready

...

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

C3750X_CENTRAL_1(config)#interface range tenGigabitEthernet 1/1/1 - 2
C3750X_CENTRAL_1(config-if-range)#channel-group 1 mode active
C3750X_CENTRAL_1(config-if-range)#channel-protocol lacp
C3750X_CENTRAL_1(config-if-range)#no shutdown
C3750X_CENTRAL_1(config-if-range)#exit

После добавления портов в группу создался новый виртуальный интерфейс Port-channel1. Отредактируем его. Добавим туда VLANы и разрешим trunk режим.

C3750X_CENTRAL_1(config)#interface port-channel 1
C3750X_CENTRAL_1(config-if)#switchport trunk encapsulation dot1q
C3750X_CENTRAL_1(config-if)#switchport trunk allowed vlan 2,6-9,12,16,111
C3750X_CENTRAL_1(config-if)#switchport mode trunk

Телеграмм бот на Delphi

Ради интереса решил написать телеграмм бота на Delphi.
Я не буду описывать как и что каждая команда выполняет, у меня код довольно легкий для чтения состоящий из простых команд + там есть немного комментариев.
Просто выложу тут исходники и дам пару ссылок где можно почерпнуть знания.
Тут идет описание telegramm бота на Delphi, но в отличии от моего примера, там используются для HTTP запросов Synapse, а для парсинга JSON — superobject. Я для этих целей использую уже идущие с Delphi пакеты indy и JSON.

Как работать с JSON — https://yandex.ru/turbo/webdelphi.ru/s/2019/03/rabota-s-json-v-delphi-10-3-rio/ описано очень доходчиво.
Для работы как с Synapse, так и с indy понадобится библиотеки Open SSL. В архиве с моим примером они уже лежат там, но на всякий случай оставлю ссылку на разные версии библиотек https://www.indyproject.org/download/ssl/
API Telegramm — https://core.telegram.org/bots/api
Так же в моем примере представлена только получение и отправка сообщения. Пример отправки и получения фотографии, музыки, видео и прочего — нету.

Скачать программу Telegramm bot на Delphi

Asterisk отправка факса.

Разберем возможность отправки факсов с сервера Asterisk. Статья не полная т.к. я ее в свое время не дописал , а теперь не помню что вообще делал 🙁 (будет случай когда надо будет поднять факс, допишу)
План действий такой:
— Установка сетевого виртуального принтера cups-pdf на сервер
— Для использования виртуального принтера, установить samba (годная статья про samba)

Устанавливаем принтер cups-pdf

sudo apt-get install cups-pdf

Устанавливаем samba

sudo apt-get install samba

Переименуем оригинальный конфигурационный файл samba

 mv /etc/samba/smb.conf /etc/samba/backup_smb.conf

Создадим новый конфигурационный файл samba

nano /etc/samba/smb.conf

Добавим следующие параметры

[global]

server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
server role = standalone server
workgroup = WORKGROUP
security = user
map to guest = bad user
usershare allow guests = yes
#printing = cups
#printcap name = /etc/printcap

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700

Данная конфигурация позволит нам подключаться к серверу без ввода логина и пароля
Перезагрузим сервис samba

 sudo service smbd restart && service nmbd restart

Подключимся к серверу samba и посмотрим что у нас получилось, по итогам должен появится принтер pdf
Подключаем себе этот принтер, подойдут любые драйвера поддерживающие PostScript, в моем случае подошли HP Color LaserJet 2700 PS Class Driver.
Проверим есть ли печать, после отправки документа на этот принтер, в домашней директории на сервере, должен появится PDF файл, с посланным содержанием.
Теперь не плохо бы данный PDF файл отредактировать в TIFF формат. Для этого отконфигурируем файл cups-pdf.conf

nano /etc/cups/cups-pdf.conf

Отыщем и подправим следующие строки на следующее содержание

Out /var/spool/cups-pdf
AnonDirName /var/spool/cups-pdf
Spool /var/spool/cups-pdf

Так же, нам потребуется перевести PDF файл в TIFF, для этого следует изменить следующую строку.

PostProcessing /bin/bash /var/spool/cups-pdf/pdf_to_tifof.sh

Создадим сам скрипт

sudo nano /var/spool/cups-pdf/pdf_to_tifof.sh

Добавим в него следующие строки (по своему усмотрению можете расширить этот функционал, я делал урезанную версию только чтобы заработало)

#!/bin/sh
$1 #сюда получаем первый параметр а это путь нашего
/usr/bin/gs -dSAFER -dBATCH -dQUIET -sDEVICE=tiffg3 -sPAPERSIZE=a4 -r204x196 -dNOPAUSE -sOutputFile=/var/spool/cups-pdf/outfax.tiff $1

Сделаем наш скрипт исполняемым

sudo chmod +x /var/spool/cups-pdf/pdf_to_tifof

Перезапустим службу CUPS

sudo /etc/init.d/cups restart

Тут статья обрывается и скорей всего я что-то еще не дописал.

Например экстейшен отправки факса из Asterisk, я представлю его ниже. Факс должен быть в формате tiff.

[fax-tx]
exten => send,1,NoOp(------------------- FAX from ${CALLERID(number)} ------------------)
 same => n,Wait(1)
 same => n,Set(DT=${TIMESTAMP}-${CALLERIDNUM}-${UNIQUEID})
 same => n,Set(FAXOPT(headerinfo)=Received by ${CALLERID(number)} ${STRFTIME(${EPOCH},,%Y-%m-%d %H-%M)})
 ;same => n,Set(FAXOPT(localstationid)=Name)
 ;same => n,Set(FAXOPT(maxrate)=14400)
 ;same => n,Set(FAXOPT(minrate)=2400)
 same => n,NoOp(FAXOPT(headerinfo) : ${FAXOPT(headerinfo)})
 same => n,NoOp(FAXOPT(localstationid) : ${FAXOPT(localstationid)})
 same => n,NoOp(FAXOPT(maxrate) : ${FAXOPT(maxrate)})
 same => n,NoOp(FAXOPT(minrate) : ${FAXOPT(minrate)})
 same => n,NoOp(**** RECEIVING FAX : ${DT} ****)
 same => n,SendFAX(/var/spool/cups-pdf/faxout.tiff,d)
 same => n,NoOp(${FAXSTATUS})
 same => n,NoOp(number is ${CALLERID(number)})
 same => n,System(sendEmail -f fax@fax.fax -t info@gars.pro -u 'Fax отправлен' -o message-charset=utf-8 -m 'Номер:${CALLERID(number)}\nStatus:${FAXSTATUS}' -s localhost -l /var/log/fax.log)
 same => n,HangUp()

HP 5700 и Brocade 4750 , агрегация каналов. LACP , TRUNK

В данной статье попытаемся объеденить две железки HP5700 и Brocade4750 по протоколу LACP.

Сначала будем настраивать Brocade.
Для создания LACP будем использовать комманду link-aggregate configure key , где unique key — уникальный ключ в диапазоне от 10000 до 65535 который идентифицирует определенную группу интерфейсов.
Попробуем объединить два порта Brocade в стэк. Важное замечание у нас имеются два коммутаторе Brocade объеденных в стэк.
Перейдем в режим настройки.

SSH@7450-48-core>enable
SSH@7450-48-core#configure terminal
SSH@7450-48-core(config)#

Теперь создадим и сконфигурируем LAG

SSH@7450-48-core(config)#lag BrocadeToHP dynamic id 25

Добавляем порты в созданный LAG

SSH@7450-48-core(config-lag-BrocadeToHP)#ports ethernet 1/4/3 ethernet 2/4/3

Указываем мастер порт для LAG

SSH@7450-48-core(config-lag-BrocadeToHP)#primary-port 1/4/3

Активируем LAG

SSH@7450-48-core(config-lag-BrocadeToHP)#deploy

Настройка LACP для HP5700
Создаем LAG c его номером

[HPE]interface Bridge-Aggregation 1

Указываем тип работы LAG

[HPE-Bridge-Aggregation1]link-aggregation mode dynamic

Добавляем порты 22 с нашего стэка в данный LAG

[HPE-Bridge-Aggregation1]quit
[HPE]interface Ten-GigabitEthernet 1/0/22
[HPE-Ten-GigabitEthernet1/0/22]port link-aggregation group 1
[HPE-Ten-GigabitEthernet1/0/22]quit
[HPE]interface Ten-GigabitEthernet 2/0/22
[HPE-Ten-GigabitEthernet2/0/22]port link-aggregation group 1

Посмотрим что получилось

[HPE]display link-aggregation verbose
Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing
Port Status: S -- Selected, U -- Unselected,
             I -- Individual, * -- Management port
Flags:  A -- LACP_Activity, B -- LACP_Timeout, C -- Aggregation,
        D -- Synchronization, E -- Collecting, F -- Distributing,
        G -- Defaulted, H -- Expired

Aggregate Interface: Bridge-Aggregation1
Aggregation Mode: Dynamic
Loadsharing Type: Shar
Management VLAN : None
System ID: 0x8000, ec9b-8bc6-183e
Local:
  Port             Status  Priority Oper-Key  Flag
--------------------------------------------------------------------------------
  XGE1/0/22        U       32768    1         {ACG}
  XGE2/0/22        U       32768    1         {ACG}
Remote:
  Actor            Partner Priority Oper-Key  SystemID               Flag
--------------------------------------------------------------------------------
  XGE1/0/22        0       32768    0         0x8000, 0000-0000-0000 {EF}
  XGE2/0/22        0       32768    0         0x8000, 0000-0000-0000 {EF}

В принципе на этом настройка вся и завершена.

Можно дополнить еще информацией что в агрегацию можно включать порты с разной скоростью, например два по 10 гигабит и один 1 гигабит. Но на практике схождение очень долгое, не рекомендую.

Следующий этап — это передача VLAN’ов через данное LACP соединение, т.е. настройка trunk.

Во первых, Brocade по дефолту имеет режим trunk на агрегированных каналах. Все что требуется это добавить нужный VLAN на один из портов данного LACP соединения.
Для примера добавим 6 vlan в наше созданное LACP соединение

SSH@7450-48-core(config)#vlan 6
SSH@7450-48-core(config-vlan-6)#tagged ethernet 1/4/3
Added tagged port(s) ethe 1/4/3 ethe 2/4/3 to port-vlan 6.

Для HP следует включить режим trunk на LACP интерфейсе и разрешить принимать все VLAN’ы

[HPE]interface Bridge-Aggregation1
[HPE-Bridge-Aggregation1]port link-type trunk
[HPE-Bridge-Aggregation1]port trunk permit vlan all

Либо определенный vlan

[HPE]interface Bridge-Aggregation1
[HPE-Bridge-Aggregation1]port link-type trunk
[HPE-Bridge-Aggregation1]port trunk permit vlan 6

На это создание trunk между устройствами завершено.

HP FlexFabric 5700 Switch Series настройка IP адреса управления и SSH доступа

Тут будем настраивать SSH доступ к коммутатору 5700

Настраиваем IP адрес на Manage порту.
Для этого в ходим в режим system-view

<HPE>system-view

Далее переходим в режим настройки интерфейса управление Manage interface

[HPE]interface M-GigabitEthernet 0/0/0

Выставляем IP адрес на интерфейсе управления.

[HPE-M-GigabitEthernet0/0/0]ip address 192.168.1.24 255.255.255.0

Выставили, проверяем ping’ом, пингуем новый IP адрес, не пингуется.
Чтобы пинговался, нужно выставить маршрут по умолчанию. Для этого переходим в режим system-view

[HPE-M-GigabitEthernet0/0/0]quit
[HPE]ip route-static 0.0.0.0 0 192.168.1.1

Пинги пошли.
Теперь попробуем подключиться по SSH к данному устройству, подключение отсутсвует, т.к. сервер SSH не запущен. Запускаем.

[HPE]ssh server enable

Теперь подключение есть. Но у нас нету логина и пароля. Создаем.
Сначала генерируем новый локальный ключ.

[HPE]public-key local create rsa
The local key pair already exists.
Confirm to replace it? [Y/N]:y
The range of public key modulus is (512 ~ 2048).
If the key modulus is greater than 512, it will take a few minutes.
Press CTRL+C to abort.
Input the modulus length [default = 1024]:
Generating Keys...
..
Create the key pair successfully.

Создадим локального пользователя

[HPE]local-user admin

Укажем сервис на котором данный пользователь будет «работать»

[HPE-luser-manage-admin]service-type ssh

Устанавливаем пароль для данного пользователя

[HPE-luser-manage-admin]password simple p@$$W0rD

Указываем режим входа и тип аутентификации для SSH

[HPE-luser-manage-admin]quit
[HPE]ssh user admin service-type stelnet authentication-type password

Но доступ через SSH еще не работает т.к. линии доступа не настроены. Настраиваем.
Указываем VTY линии которые мы хотим настроить для SSH

[HPE]line vty 0 4

Указываем режим аутентификации.

[HPE-line-vty0-4]authentication-mode scheme

Настраиваем уровень доступа, возьмем самый наивысший.

[HPE-line-vty0-4]user-role network-admin

Указываем поддерживаемый протокол для пользовательских линий

[HPE-line-vty0-4]protocol inbound ssh

Ограничим время SSH сессии в 10 минут

[HPE-line-vty0-4]idle-timeout 600

Всё, доступ работает. Не забываем сохранять конфигу save

HP FlexFabric 5700 Switch Series настройка стэка (IRF)

Данная статья носит ознакомительных характер и не претендует на высокие знания в области HP коммутаторов. Все настройки и догадки выстроены на основе официальной документации hp57хх

Нам пришло оборудование: два 42 портовых HP коммутатора 5700, с двумя SFPQ+ портами на каждом.
Первая наша задача это собрать из данных коммутаторов единый стэк, в технологии HP это называется IRF fabric (IRF пространство).
Стэк — это соединение двух или более физических коммутаторов в единый логический коммутатор, для увеличения количества портов, а так же для управляемости.

При первом включении он пытается получить адрес по DHCP и как то сам сконфигурироваться, для отмены сего действия нажимаем CTR+Z и идем далее.

Первое что меня встречает это надпись вида

HPE DEV/1/FAN_DIRECTION_NOT_PREFERRED: Fan 1 airflow direction is not preferred on slot 1, please check it.
HPE DEV/1/FAN_DIRECTION_NOT_PREFERRED: Fan 2 airflow direction is not preferred on slot 1, please check it.

Не сильно углублялся в данную тематику, но кажется что на передней и задней стороне коммутатор стоят датчики тепла и если поток в задней части холоднее чем в передней то надо поменять направления потока воздуха. Но по факту, когда я сменил эти настройки, ни чего не изменилось кроме исчезновения предупреждения.
И так, для начала посмотрим что там установлено, для этого зайдем в режим System view (по аналогии configure terminal у Cisco)

system-view

Далее смотрим настройки fan.

[HPE]display fan

Slot 1:
Fan 1:
State : FanDirectionFault
Airflow Direction: Port-to-power
Prefer Airflow Direction: Power-to-port
Fan 2:
State : FanDirectionFault
Airflow Direction: Port-to-power
Prefer Airflow Direction: Power-to-port

Посмотрели? Меняем:

fan prefer-direction slot 1 port-to-power

Смотрим что поменялось

[HPE]display fan
Slot 1:
Fan 1:
State : Normal
Airflow Direction: Port-to-power
Prefer Airflow Direction: Port-to-power
Fan 2:
State : Normal
Airflow Direction: Port-to-power
Prefer Airflow Direction: Port-to-power

Изменился параметр Prefer Airflow Direction.

Назначение идентификатора участника каждому устройству группы IRF

Нам требуется объединить два коммутатора в единый стек. В документации это называется IRF Domain. Объединять я буду через интерфейсы QSFP+.
Первый наш шаг заходим в режим system view (если мы еще не в нем).

<HPE>system-view

Смотрим текущие настройки IRF (на первом и втором коммутаторе)
Первый

[HPE]display irf configuration
MemberID NewID IRF-Port1 IRF-Port2
1 1 disable disable

Второй

[HPE]display irf configuration
MemberID NewID IRF-Port1 IRF-Port2
1 1 disable disable

Как видим, оба участника имеют одинаковый MemberID. Данное обстоятельство не позволяет формировать IRF link, поэтому зададим на втором коммутаторе MemberID = 2.

[HPE]irf member 1 renumber 2

Смотрим результат

[HPE]display irf configuration
MemberID NewID IRF-Port1 IRF-Port2
1 2 disable disable

Изменения вступят в силу только после перезагрузки устройства. Сохраняем текущую конфигурацию на обоих коммутаторах.

[HPE]save
The current configuration will be written to the device. Are you sure? [Y/N]:y
Please input the file name(*.cfg)[flash:/startup.cfg]
(To leave the existing filename unchanged, press the enter key):
Validating file. Please wait...
Saved the current configuration to mainboard device successfully.

Перезагружаем второй коммутатор. Для этого выйдем на уровень ниже

[HPE]return
reboot

Настройка приоритезации в группе IRF.

Данная настройка будет влиять на выбора мастера группы IRF если основной мастер «потерялся».
У кого выше приоритет, тот и будет мастером.
При потере основного мастера, смена мастера происходит не сразу.
По умолчанию на всех коммутаторах приоритет стоит =1.
Меняем на втором коммутаторе на 2.

<HPE>system-view
[HPE]irf member 2 priority 2
The device is not in the current IRF.

Как понятно из сообщения, устройство не является членом IRF.

Построение физических интефейсов в IRF порты.

Немного теории. Следуя из мануалов HP устройства имеют два виртуальных IRF порта, называемые n/1 и n/2, где n это member-id. А 1 и 2 созданы для «кольцевания», т.е. 1 — это образно говоря исходящий порт, а 2- это входящий порт. Еще проще говоря два коммутатор должны втыкаться кросированно из первого IRF порта во второй IRF порт. Т.е. первый IRF порт коммутатор должен втыкаться во второй IRF порт второго коммутатора. А вот если мы хотим подключить еще и третий коммутатор, то первый IRF порт второго коммутатора подключаем ко второму IRF порту третьего коммутатора, ну а чтобы вообще все красиво было и в кольцо, то первый IRF порт третьего коммутатора подключаем во второй IRF порт первого коммутатора.
Внимание: нельзя включать оба IRF порта одного устройства в IRF порта другого устройства. Т.е. 1/1 к 2/2 можно , а вот еще добавить 1/2 к 2/1 уже нельзя.
Тезисы:
По умолчанию ни один физический порт не привязан к IRF порту
На один IRF порт может быть назначено до 4х физических интерфейсов.

Для настройки должны выполняться следующие условия:
Настраиваемые порты IRF должны быть выключены.

Для работы возьмем сразу группу интрейфейсов. У нас это SFPQ+ 41 и 42 порт
На первом коммутаторе

[HPE]interface range FortyGigE 1/0/41 to FortyGigE 1/0/42

На втором коммутаторе

[HPE]interface range FortyGigE 2/0/41 to FortyGigE 2/0/42

Выключаем их

[HPE-if-range]shutdown

На первом коммутаторе выходим на уровень выше и заходим в режим IRF указывая первым параметром member-id вторым port-number. Т.е. настраиваем IRF n/1.

[HPE-if-range]quit
[HPE]irf-port 1/1

Добавляем наши SFPQ+ порты в IRF порт n/1 на первом коммутаторе

[HPE-irf-port1/1]port group interface FortyGigE 1/0/41
You must perform the following tasks for a successful IRF setup:
Save the configuration after completing IRF configuration.
Execute the "irf-port-configuration active" command to activate the IRF ports.
[HPE-irf-port1/1]port group interface FortyGigE 1/0/42

На втором коммутаторе уже делаем настройку «принимающего» порта IRF n/2

[HPE-if-range]quit
[HPE]irf-port 2/2
[HPE-irf-port2/2]port group interface FortyGigE 2/0/41
You must perform the following tasks for a successful IRF setup:
Save the configuration after completing IRF configuration.
Execute the "irf-port-configuration active" command to activate the IRF ports.
[HPE-irf-port2/2]port group interface FortyGigE 2/0/42

Включаем интерфейсы на первом коммутаторе

[HPE-irf-port1/1]quit
[HPE]interface range FortyGigE 1/0/41 to FortyGigE 1/0/42
[HPE-if-range]undo shutdown

На втором коммутаторе

[HPE-irf-port1/1]quit
[HPE]interface range FortyGigE 2/0/41 to FortyGigE 2/0/42
[HPE-if-range]undo shutdown

После включения сразу появиться сообщение вида на первом

[HPE-if-range]%Jan 12 22:56:06:483 2011 HPE IFNET/3/PHY_UPDOWN: FortyGigE1/0/41 link status is up.
%Jan 12 22:56:06:484 2011 HPE IFNET/5/LINK_UPDOWN: Line protocol on the interface FortyGigE1/0/41 is up.
%Jan 12 22:56:06:494 2011 HPE IFNET/3/PHY_UPDOWN: FortyGigE1/0/42 link status is up.
%Jan 12 22:56:06:496 2011 HPE IFNET/5/LINK_UPDOWN: Line protocol on the interface FortyGigE1/0/42 is up.
%Jan 12 22:56:06:523 2011 HPE LLDP/6/LLDP_CREATE_NEIGHBOR: Nearest bridge agent new neighbor created on Port FortyGigE1/0/42 (IfIndex 42), Chassis ID is ec9b-8bc7-75d3, Port ID is FortyGigE2/0/42.

%Jan 12 22:56:07:690 2011 HPE LLDP/6/LLDP_CREATE_NEIGHBOR: Nearest bridge agent new neighbor created on Port FortyGigE1/0/41 (IfIndex 41), Chassis ID is ec9b-8bc7-75d3, Port ID is FortyGigE2/0/41..

На втором

[HPE]%Jan 12 22:55:17:965 2011 HPE IFNET/3/PHY_UPDOWN: FortyGigE2/0/41 link status is up.
%Jan 12 22:55:17:967 2011 HPE IFNET/5/LINK_UPDOWN: Line protocol on the interface FortyGigE2/0/41 is up.
%Jan 12 22:55:18:028 2011 HPE LLDP/6/LLDP_CREATE_NEIGHBOR: Nearest bridge agent new neighbor created on Port FortyGigE2/0/41 (IfIndex 246), Chassis ID is ec9b-8bc6-183e, Port ID is FortyGigE1/0/41.

%Jan 12 22:55:18:058 2011 HPE IFNET/3/PHY_UPDOWN: FortyGigE2/0/42 link status is up.
%Jan 12 22:55:18:060 2011 HPE IFNET/5/LINK_UPDOWN: Line protocol on the interface FortyGigE2/0/42 is up.
%Jan 12 22:55:19:824 2011 HPE LLDP/6/LLDP_CREATE_NEIGHBOR: Nearest bridge agent new neighbor created on Port FortyGigE2/0/42 (IfIndex 247), Chassis ID is ec9b-8bc6-183e, Port ID is FortyGigE1/0/42.

Т.е. линки поднялись.
Сохраняем наши изменения и активируем наши настройки IRF портов на обоих коммутаторах.
Вот ту вышел косямба, я только не понял из за чего. Толи из за того что я сначала активировал на первом потом на втором, то ли может быть еще из за чего ни будь. Во всяком случае надо попробовать сначала активировать на первом и подождать. Должен перезагрузиться второй, т.е. подчиненный, мастер не перезагружается.

[HPE-if-range]quit
[HPE]save
[HPE]irf-port-configuration active

Стэк нормального курильщика

[HPE]display irf
MemberID    Role    Priority  CPU-Mac         Description
 *+1        Master  1         00e0-fc0f-8c02  ---
   2        Standby 1         00e0-fc0f-8c03  ---
--------------------------------------------------
 * indicates the device is the master.
 + indicates the device through which the user logs in.

 The bridge MAC of the IRF is: ec9b-8bc6-183e
 Auto upgrade                : yes
 Mac persistent              : always
 Domain ID                   : 0
 IRF mode                    : normal


[HPE]display irf topolog
                              Topology Info
 -------------------------------------------------------------------------
               IRF-Port1                IRF-Port2
 MemberID    Link       neighbor      Link       neighbor    Belong To
 2           DIS        ---           UP         1           00e0-fc0f-8c02
 1           UP         2             DIS        ---         00e0-fc0f-8c02

Настройка постоянства MAC IRF структуры

По умолчанию IRF fabirc использует мак адрес мастера для IRF-моста, LACP например использует данный MAC для идентификации структуры IRF. Поэтому может возникнуть ситуация когда мастер уходит, выбирается другой мастер и соответственно произойдет смена МАК адреса моста IRF, что приведет к кратковременному нарушению трафика, чтобы этого не произошло или произошло, есть несколько режимов:
irf mac-address persistent timer — МАК адрес моста остается неизменным в течении 6 минут, на случай если оборудование было переазгружено, отключено и т.д., а потом вернулось обратно в рабочее состояние.
irf mac-address persistent always— МАК адрес моста не изменяется после того как уходит владелец. Но тут есть нюанс, если данный мак будет использоваться в другой сети IRF (потому что данное устройство стало там мастером), то трафик не будет ходить. В нашем случае это не страшно.
undo irf mac-address persistent — моментальная смена МАК адреса моста после ухода владельца.

В официально документации есть еще и рекомендации когда какой режим выбирать.
В нашем случае подходит режим irf mac-address persistent always. Делаем

<HPE>system-view
[HPE]irf mac-address persistent always

В этой статье все.
По итогу мы имеем стэк из двух коммутаторов соединенный двумя DAC кабелями через SFPQ+ порты. Общая скорость должна быть 80 Гигабит/c.
Так же есть авто-балансировка загрузки IRF линков по МАК адресам + отказоустойчивая схема, т.е. если один из IRF линков рвется, то весь трафик переключается на резервный канал.

Установка Confluence на Linux

При установке определимся с параметрами:

Операционная система: CentOS Linux release 7.5.1804 (Core)

Версия confluence: Confluence 6.12

База данных: MySQL 7.5

Дополнительные требования к софту вы сможете найти по этой ссылке  https://confluence.atlassian.com/doc/supported-platforms-207488198.html

    1. Устанавливаем OS Centos 7
    2. Устанавливаем wget
    3. yum install wget
    4. Скачать пакет java. Политика Oracle изменилась поэтому приходится качать данный пакет по «особому»
    5. wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
    6. Делаем пакет java исполняемым
    7. chmod u+x jdk-8u131-linux-x64.rpm
    8. Устанавливаем пакет java
    9. sudo yum localinstall jdk-8u131-linux-x64.rpm
    10. Проверяем версию java
    11. #java -version
      java version "1.8.0_131"
      Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
      Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
    12. Редактируем конфигурационный файл profile, указываем пути расположения java.
    13. sudo vi /etc/profile

      Добавляем строки

      export JAVA_HOME=/usr/java/jdk1.8.0_131
      export JAVA_PATH=$JAVA_HOME
    14. Добавляем в firewall правила и перезагружаем firewall
    15. sudo firewall-cmd --permanent --add-port=5432/tcp
      sudo firewall-cmd --permanent --add-port=8090/tcp
      sudo firewall-cmd --permanent --add-port=80/tcp
      sudo firewall-cmd --permanent --add-port=443/tcp
      sudo firewall-cmd --reload
    16. Добавляем пользователя confluence
    17. useradd confluence
      passwd confluence
      su confluence
      cd /home/confluence
    18. Редактируем файл sudoers
    19. chmod 700 /etc/sudoers
      vi /etc/sudoers

      Добавляем строку

      confluence    ALL=(ALL)       ALL
    20. Возвращаем настройки файла
    21. chmod 400 /etc/sudoers
    22. Скачиваем confluence 6.12.1
    23. wget https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.12.1.tar.gz
    24. Делаем пакет confluence 6.12.1 исполняемым
    25. chmod u+wrx atlassian-confluence-6.12.1.tar.gz
    26. Разархивируем confluence 6.12.1
    27. tar -xzf atlassian-confluence-6.12.1.tar.gz
    28. Переименовываем папку
    29. mv atlassian-confluence-6.12.1 atlassian-confluence
    30. Создаем папку confluence_data в той же директории где лежит архив confluence
    31. mkdir confluence_data
    32. Выставляем пользователя и группу confluence на все папки и файлы
    33. chown -R confluence.confluence atlassian-confluence
    34. Редактируем файл конфигурации, указывая путь confluence
    35. vi ./atlassian-confluence/confluence/WEB-INF/classes/confluence-init.properties

      Добавляем строку

      confluence.home=/home/confluence/confluence_data/
    36. Т.к. confluence не поддерживает БД mariadb то устанавливаем MySQL
    37. sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
      yum install mysql-community-server
    38. Устанавливаем автозапуск MySQL
    39. sudo systemctl enable mysqld
    40. Запускаем MySQL
    41. sudo systemctl start mysqld
    42. Проверяем статус MySQL
    43. sudo systemctl status mysqld
    44. Проверяем статус MySQL
    45. sudo systemctl status mysqld
    46. Получаем пароль MySQL
    47. sudo grep 'temporary password' /var/log/mysqld.log
    48. Открываем для редактирования конфигурационный файл MySQL
    49. vi /etc/my.cnf
    50. Добавляем в my.cnf следующие строки
    51. character-set-server=utf8
      collation-server=utf8_bin
      default-storage-engine=INNODB
      max_allowed_packet=256M
      innodb_log_file_size=2GB
      transaction-isolation=READ-COMMITTED
      binlog_format=row
    52. Перезапускаем MySQL
    53. systemctl stop mysqld
      sudo systemctl start mysqld
    54. Заходим в MySQL
    55. mysql -u root -p
    56. Меняем пароль root для MySQL
    57. SET PASSWORD = PASSWORD('your_new_password');
    58. Создаем базу для Confluence
    59. CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;
    60. Создаем пользователя с правами на доступ к базе Confluence
    61. GRANT ALL PRIVILEGES ON confluence.* TO 'confluenceuser'@'localhost' IDENTIFIED BY 'your_new_password';
    62. Выходим из CLI MySQL
    63. exit
    64. Открываем файл на редактирование
    65. vi /home/confluence/atlassian-confluence/conf/server.xml
    66. Если мы хотим чтобы нас редиректело на 443 порт, то бишь на HTTPS то меняем
    67.         <Connector port="8090" connectionTimeout="20000" redirectPort="8443"
                         maxThreads="48" minSpareThreads="10"
                         enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
                         protocol="org.apache.coyote.http11.Http11NioProtocol"/>

      на

              <Connector port="8090" connectionTimeout="20000" redirectPort="443"
                         maxThreads="48" minSpareThreads="10"
                         enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
                         protocol="org.apache.coyote.http11.Http11NioProtocol"/>

      Прикручиваем сертификат, указываем путь к сертификату и кодовое слово. Этот пункт нужен если у вас имеется собственный сертефикат

      <!--
              <Connector port="8443" maxHttpHeaderSize="8192"
                         maxThreads="150" minSpareThreads="25"
                         protocol="org.apache.coyote.http11.Http11Nio2Protocol"
                         enableLookups="false" disableUploadTimeout="true"
                         acceptCount="100" scheme="https" secure="true"
                         clientAuth="false" sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2" SSLEnabled="true"
                         URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>"/>

      -->

      на

              <Connector port="443" maxHttpHeaderSize="8192"
                         maxThreads="150" minSpareThreads="25"
                         protocol="org.apache.coyote.http11.Http11NioProtocol"
                         enableLookups="false" disableUploadTimeout="true"
                         acceptCount="100" scheme="https" secure="true"
                         clientAuth="false" sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2" SSLEnabled="true"
                         URIEncoding="UTF-8" keystorePass="ssdfwSDFwSwegHJUyFfgHrhrDDFgbdDdrdFgheewssWWWw"
              keystoreFile="/home/confluence/certificate/mycert.com.pfx"/>
    68. Требуется ODBC драйвер для confluence и MySQL. для этого воспользуйтесь данной ссылкой https://confluence.atlassian.com/doc/database-jdbc-drivers-171742.html
    69. Извлеките все файлы из архива. И разместите файлы mysql-connector-java-5.1.47.jar и mysql-connector-java-5.1.47-bin.jar в директории /confluence/WEB-INF/lib/
    70. Запускаем confluence
    71. cd /home/confluence/atlassian-confluence/bin/
      ./start-confluence.sh
    72. Заходим в браузер через HTTPS и следуем пунктам