понедельник, 14 мая 2018 г.

Вопросы на собеседовании на позицию DevOps-инженера

Опишу тут некоторые вопросы, которые мне задавали на эту позицию.
Я около месяца проходил собеседования в компании из России, Украины, Европы и некоторые из вопросов я запомнил. Конечно, по большей части вопросы задавали конкретно по моему опыту работы, который я описал в резюме, однако некоторые из них повторялись очень часто и их стоит выделить.

суббота, 5 мая 2018 г.

Работа с памятью в Linux

Одной из наиболее важных и базовых подсистем в любой операционной системе является подсистема работы с оперативной памятью (MMU — Memory Management Unit). Конструкция данной подсистемы является очень сложной, поэтому разработчикам программного обеспечения должны очень хорошо понимать общее устройство как ядра Linux, так и то, как функционируют подобные подсистемы, к счастью все это отлично документировано в исходных кодах ядра.

вторник, 1 мая 2018 г.

Как я могу узнать свой внешний IP-адрес

Для идентификации компьютеров сети используются адреса. На физическом уровне используются MAC-адреса, каждый MAC-адрес является уникальным и устанавливается производителем на этапе производства. Формат MAC-адреса представляет собой набор из шести октетов в шестнадцатиричном формате, примером MAC-адреса является 20:89:84:59:0B:6A

Хоть MAC-адрес и является уникальным, его можно изменить программно во многих случаях, в других же случаях это можно сделать с помощью программатора. Изменение MAC-адреса может привести к неожиданным последствиям, в случае использования дублирующихся в одной подсети.

пятница, 20 апреля 2018 г.

Быстрая установка стека ELK (Elasticsearch+Logstash+Kibana) на Debian 9

Ставим все необходимые пакеты:
# apt install -y openjdk-9-jre apt-transport-https
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list
# apt update && apt install elasticsearch kibana logstash packetbeat metricbeat filebeat heartbeat -y

Запускаем elasticsearch на локалхосте:
# vim /etc/elasticsearch/elasticsearch.yml
network.host: 127.0.0.1

Прописываем конфиг logstash:
# vim /etc/logstash/conf.d/10-syslog.conf
input {
  file {
    type => "syslog"
    path => [ "/var/log/messages", "/var/log/*.log" ]
  }
}
output {
  stdout { 
    codec => rubydebug
    }
    elasticsearch {
      hosts => "localhost"
    }
}

Запускаем сервисы:
# systemctl enable elasticsearch kibana logstash filebeat packetbeat metricbeat heartbeat
# systemctl start elasticsearch kibana logstash filebeat packetbeat metricbeat heartbeat

Идем по адресу: http://localhost:5601

вторник, 17 апреля 2018 г.

Использование Terraform для управления инфраструктурой Google Cloud Platform

Terraform — это инструмент, с помощью которого можно описать серверную инфраструктуру в виде кода.
К примеру для создания определенного количества виртуальных машин и других объектов в облачной инфраструктуре не нужно каждый раз вручную создавать инстансы или писать плейбуки для Ansible или какие-то обертки над API, достаточно просто в человекочитаемом виде записать как будет представлена инфраструктура и в случае чего ее можно легко развернуть.

понедельник, 16 апреля 2018 г.

Как запускать 32-битные программы на 64-битном дистрибутиве Linux

На сегодняшний день все выпускаемые процессоры так или иначе поддерживают 64-битную архитектуру. В связи с тем, что 32-битные процессоры могут адресовать 232 бита данных, они не могут работать с памятью более 4 Гб, однако процессоры на архитектуре x86-64, могут работать с гораздо более большим объемом памяти. Отличительными особенностями новых процессоров является поддержка 64-битных регистров общего назначения (РОН), арифметических и логических операций над целыми числами и поддержкой 64-битных виртуальных адресов.

воскресенье, 8 апреля 2018 г.

Безопасное и удобное использование SSH

На сегодняшний день, системные инженеры, программисты имеют возможность безопасно управлять сервером на Linux удаленно с помощью консоли. Для Windows существуют специальные утилиты для подключения к Linux-серверам по SSH, такие как Putty, для пользователей MacOS и Linux можно использовать встроенный в операционную систему пакет ssh-client. Помимо SSH существуют и другие технологии удаленного доступа к физическим и виртуальным серверам: IPMI, VNC, RDP и прочие.

понедельник, 2 апреля 2018 г.

Права доступа в Linux

На сегодняшний день операционная система GNU/Linux считается одной из самых безопасных. Она используется на большинстве самых крупных суперкомпьютеров мира, значительно опережая другие операционные системы семейства UNIX и Windows. Одним из ключевых факторов безопасности системы GNU/Linux является управление доступами.

Функция управления правами пользователей и групп зародилась еще во времена первых версий UNIX и присутствует до сих пор на всех современных операционных системах. Контроль доступа позволяет владельцам файлов/каталогов ограничивать права на чтение, исполнение и запись файлов, директорий, процессов и других частей системы.

суббота, 17 марта 2018 г.

Как защититься от DDoS-атаки

Итак, вы находитесь под DoS/DDoS атакой.
Как определить что это именно DDoS-атака? Если трафик поступает из нескольких разных сетей, то это распределенная атака (DDoS), если трафик идет из одной подсети, то это DoS.
На Linux-сервере проверить текущее количество сетевых соединений можно с помощью утилиты netstat:
$ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -3
    312 192.168.0.10
    256 192.168.1.32
    121 192.168.0.11

пятница, 9 марта 2018 г.

Как узнать размер баз данных в MySQL

mysql> SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables  GROUP BY table_schema;
+--------------------+---------------+
| DB Name            | DB Size in MB |
+--------------------+---------------+
| cards              |           0.0 |
| info               |         267.3 |
| information_schema |           0.0 |
| mysql              |           0.6 |
| quickdat           |        3214.9 |
| quickdat_notif     |          65.7 |
| scgraf             |        9783.9 |
| test               |           0.0 |
+--------------------+---------------+
8 rows in set (4.70 sec)