Подписка на блог

LinuxGeek - блог Linux инженера

Расширьте границы знаний о Linux и станьте настоящим гиком

Как изменить репозиторий Ubuntu на российское зеркало при блокировке

В некоторых случаях доступ к стандартным зеркалам Ubuntu может быть заблокирован или медленным из-за географических ограничений. Для обхода этой проблемы можно использовать российские зеркала, такие как mirror.docker.ru, mirror.yandex.ru, mirror.truenetwork.ru. В этой статье мы покажем, как изменить репозиторий Ubuntu на mirror.docker.ru.

Шаг 1: Открыть файл sources.list

1. Откройте терминал на вашем компьютере.
2. Введите следующую команду для открытия файла sources.list в текстовом редакторе:

sudo nano /etc/apt/sources.list

Шаг 2: Добавить новый репозиторий

3. Найдите строки с URL стандартных зеркал Ubuntu (например, http://archive.ubuntu.com/ubuntu).
4. Закомментируйте эти строки, добавив символ # в начало каждой строки.
5. Добавьте новую строку с URL российского зеркала mirror.docker.ru:

deb [arch=amd64] https://mirror.docker.ru/ubuntu/ bionic stable

Шаг 3: Сохранить и закрыть файл в редакторе nano

6. Нажмите Ctrl + O, чтобы сохранить изменения.
7. Нажмите Enter, чтобы подтвердить имя файла.
8. Нажмите Ctrl + X, чтобы закрыть текстовый редактор.

Шаг 4: Обновить список пакетов

9. Обновите список пакетов с помощью команды:

sudo apt update

Теперь ваша система будет использовать российское зеркало mirror.docker.ru для загрузки пакетов Ubuntu. Убедитесь, что выбранное зеркало надежно и актуально для получения обновлений и программного обеспечения.

Расширенная отказоустойчивость в базовом виде: Установка PostgreSQL в кластере на двух виртуальных машинах

В данной статье мы рассмотрим процесс установки и настройки кластера PostgreSQL на двух виртуальных машинах (ВМ) с целью обеспечения повышенной отказоустойчивости и надежности базы данных. Следуя этому руководству, вы сможете создать кластер PostgreSQL, распределить данные между ВМ и обеспечить работоспособность системы даже при отказе одной из ВМ.
Это базовый вариант и самый простой, но не самый лучший. Другой, более современный вариант я напишу в другой статье.

Шаг 1: Установка PostgreSQL

1. Обновите список пакетов:

sudo apt-get update

2. Установите PostgreSQL:

sudo apt-get install postgresql

Повторите эти шаги на обеих виртуальных машинах.

Шаг 2: Создание кластера и распределение данных

1. Остановите службу PostgreSQL на обеих ВМ:

sudo systemctl stop postgresql

2. Создайте новый кластер на каждой ВМ:

sudo pg_createcluster <версия> <имя_кластера> --start

3. Настройте репликацию или шардинг для распределения данных между ВМ.

Шаг 3: Настройка параметров кластера

1. Отредактируйте файл конфигурации кластера на каждой ВМ:

sudo nano /etc/postgresql/<версия>/<имя_кластера>/postgresql.conf

2. Измените необходимые параметры, такие как размер буферного кэша, количество соединений и другие.

Шаг 4: Запуск и проверка работы

1. Запустите службу PostgreSQL на обеих ВМ:

sudo systemctl start postgresql@<версия>-<имя_кластера>

2. Проверка соединения:
Проверьте работоспособность кластера, убедившись, что данные корректно реплицируются или распределены между ВМ.

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

Управление сетевым трафиком с помощью iptables: основы настройки netfilter

При работе с Linux-серверами часто возникает необходимость контролировать и фильтровать сетевой трафик. Для этого используется инструмент iptables, который является интерфейсом для управления межсетевым экраном (netfilter) в ядре Linux.

Что такое netfilter и iptables?

Netfilter — это фреймворк в ядре Linux, предназначенный для обработки пакетов данных при прохождении через сервер. Iptables, в свою очередь, является утилитой командной строки, которая позволяет администраторам конфигурировать правила фильтрации и преобразования пакетов данных.

Основные цели настройки netfilter с помощью iptables:

  1. Безопасность: Фильтрация трафика позволяет защитить сервер от нежелательных подключений или атак извне.
  1. Маршрутизация: Использование iptables для перенаправления пакетов может быть полезным при организации сложных схем сетевого взаимодействия.
  1. Логирование: Ведение журнала действий по обработке пакетов помогает отслеживать и анализировать происходящее в сети.

Примеры команд для настройки netfilter через iptables:

1. Создание новой цепочки:

sudo iptables -N MYCHAIN

2. Добавление правила:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

3. Проброс портов:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

4. Сохранение правил:

sudo service iptables save

Настройка netfilter через iptables предоставляет широкие возможности по управлению сетевым трафиком на сервере Linux. Важно помнить о безопасности и эффективности правил, чтобы обеспечить стабильную работу системы и защитить её от потенциальных угроз.

Использование Ansible для автоматизации конфигурации серверов: от установки до первых шагов на CentOS

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

Шаг 1: Установка Ansible

Для начала необходимо установить Ansible на вашем сервере CentOS. Выполните следующие команды:

sudo yum install epel-release
sudo yum install ansible

После успешной установки можно приступить к настройке и использованию Ansible.

Шаг 2: Настройка инвентаря

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

Пример файла inventory.ini:

[web]
server1 ansible_host=192.168.1.100
server2 ansible_host=192.168.1.101

Шаг 3: Создание плейбуков

Плейбуки — это файлы YAML, которые содержат задачи для выполнения на целевых хостах. Создайте файл playbook.yml и определите в нем необходимые задачи.

Пример простого плейбука:

---
- name: Пример плейбука
  hosts: web
  tasks:
    - name: Установка пакета nginx
      yum:
        name: nginx
        state: present

Шаг 4: Запуск плейбуков

Теперь можно запустить созданный плейбук на целевых серверах с помощью команды:

ansible-playbook -i inventory.ini playbook.yml

Ansible выполнит задачи из плейбука на указанных хостах и выведет результаты операций.

Это были основные шаги по использованию Ansible для автоматизации конфигурации серверов на CentOS. Надеюсь, данная информация поможет вам начать работу с этим мощным инструментом эффективно! В дальнейшем я так же буду писать готовые playbook для установки разных сервисов.

Пошаговое руководство по установке и настройке Filebeat на CentOS

Filebeat — это легкий агент для пересылки и централизации журналов и файлов. Он позволяет собирать данные из различных источников, таких как журналы системы, аудита, приложений и многих других, и отправлять их в выбранные хранилища данных для дальнейшего анализа.
Не забываем, что с IP адресов РФ скачать дистрибутивы не получится.

Шаг 1: Установка Elasticsearch GPG ключа
Прежде чем начать установку Filebeat, необходимо добавить GPG ключ Elasticsearch в вашу систему. Для этого выполните следующую команду:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Шаг 2: Добавление репозитория Elastic
Далее добавим репозиторий Elastic для загрузки пакета Filebeat. Создайте файл репозитория с помощью следующей команды:

sudo vi /etc/yum.repos.d/elastic.repo

И добавьте следующий текст в файл:

[elastic]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Сохраните изменения и закройте файл.

Шаг 3: Установка Filebeat
Теперь можно приступить к установке самого Filebeat. Выполните следующие команды:

sudo yum install filebeat

После успешной установки необходимо сконфигурировать Filebeat для сбора данных.

Шаг 4: Настройка Filebeat
Файл конфигурации Filebeat находится по пути /etc/filebeat/filebeat.yml. Отредактируйте этот файл с помощью любого текстового редактора (например, vi или nano) и сконфигурируйте соответствующие параметры, такие как пути к журналам или адрес удаленного хоста для отправки данных.

Шаг 5: Запуск сервиса Filebeat
После завершения настройки запустите сервис Filebeat с помощью следующей команды:

sudo systemctl start filebeat

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

sudo systemctl enable filebeat

Теперь вы успешно установили и настроили Filebeat на CentOS. Проверьте работоспособность конфигурации и начинайте сбор данных!

Установка стека ELK на CentOS

Подготовка сервера

Для загрузки установочных файлов во время установки пакетов необходимо иметь установленный wget на системе, обычно он сразу предустановлен.
1. Установка wget

sudo yum install wget

2. Настройка брандмауэра
Открываем порты 5044, 5601 для работы ELK.
5044 — порт Logstash, 5601 — порт Kibana.

sudo firewall-cmd --permanent --add-port={5044,5601}/tcp
sudo firewall-cmd --reload

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

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

Установка Java

Все компоненты стека ELK написаны на языке Java, поэтому они требуют наличия соответствующей платформы на сервере для корректной работы.

1. Установка openjdk

sudo yum install java-11-openjdk

2. Проверяем

java --version

Должно выйти что-то подобное

openjdk 11.0.18 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.10-3.el9) (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.10-3.el9) (build 11.0.18+10-LTS, mixed mode, sharing)

Установка Elasticsearch

1. Загрузка RPM пакета.
Заходим на страницу загрузки Elasticsearch и копируем ссылку на самую свежую версию пакета RPM. И скачиваем:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-x86_64.rpm

Если ваш сервер расположен на территории России, то при скачивании получим ошибку 403, т. к. они закрыли доступ на скачивание с российских ip адресов. В этом случае поможет скачивание с помощью прокси.
2. Установка RPM пакета

sudo rpm -ivh elasticsearch-*.rpm

После успешной установки вы должны увидеть подобное сообщение

----------------- Security autoconfiguration information --------------------
...
The generated password for the elastic built-in superuser is : 3O#9cYap&%5#627a
...
-----------------------------------------------------------------------------

где 3O#9cYap&%5#627a — пароль для пользователя elastic, поэтому сохраните его.

Если хотите поменять данный пароль, то это можно сделать данной командой:

sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

2. Запуск Elasticsearch
Разрешаем автоматический запуск сервиса и активируем его:

sudo systemctl enable elasticsearch --now

3. Проверка работоспособности сервера

curl -k -u elastic:3O#9cYap&%5#627a https://localhost:9200

где elastic:3O#9cYap&%5#627a — это логин:пароль, которые мы получили после установки.

Мы должны увидеть что-то на подобии этого:

{
  "name" : "server",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "P0wbroKxSUOJLv-X0ZOUew",
  "version" : {
    "number" : "8.12.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "48a287ab9497e852de30327444b0809e55d46466",
    "build_date" : "2024-02-19T10:04:32.774273190Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.2",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

Установка Kibana

1. Загрузка RPM пакета.
Перейдите на страницу загрузки Kibana и скопируйте ссылку на самую последнюю версию пакета RPM.

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.12.2-x86_64.rpm

2. Установка RPM пакета

sudo rpm -ivh kibana-*.rpm

3. Настройка Kibana
Редактируем конфигурационный файл /etc/kibana/kibana.yml и редактируем параметр server.host, чтобы хост слушал тот интерфейс, который нам необходим:

server.host: 10.10.1.10

4. Запуск Kibana

systemctl enable kibana --now

Далее открываем веб-браузер и переходим по указанной ссылке: http://:5601. После этого на экране должна появиться форма для ввода токена.
Заходим на сервер и вводим команду для получения токена:

sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

Появится набор символов — скопируйте его и вставьте в Kibana. Затем нажмите по «Configure Elastic».
Появится окно для ввода проверочного кода. Вернемся на сервер и выполним команду:

sudo /usr/share/kibana/bin/kibana-verification-code

После завершения процесса вы получите шестизначный код. Введите его в поле на экране Kibana и нажимаем Verify, начнется процесс настройки. По завершению этого процесса появится окно для ввода логина и пароля. Далее мы перейдем к настройке Logstash.

Установка Logstash

1. Загрузка RPM пакета.
Переходим на страницу загрузки Logstash и копируем ссылку на последнюю вервию пакета RPM:

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.12.2-x86_64.rpm

2. Установка RPM пакета

sudo rpm -ivh logstash-*.rpm

3. Запуск Logstash.

sudo systemctl enable logstash --now

4. Настройка Logstash.
Конфигурационные данные для Logstash хранятся в директории /etc/logstash/conf.d в файлах JSON. Для настройки используются три основные секции:

  1. input (входящие данные).
  2. filter (обработка данных).
  3. output (исходящие данные).

Для каждой из них мы будем создавать отдельный файл.
input.conf

input {
  beats {
    port => 5044
  }
}

filter.conf

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output.conf

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Выполняем перезапуск сервиса Logstash:

sudo systemctl restart logstash

Спустя примерно минуту проверяем работоспособность сервиса:

ss -tunlp | grep 5044

И должны увидеть что-то подобное

tcp  LISTEN   0   128   :::5044   :::*   users:(("java",pid=11745,fd=114))

Учимся копировать файл из docker контейнера

Для копирования файла из контейнера Docker можно использовать команду docker cp. Эта команда позволяет копировать файлы между локальной файловой системой и контейнером. Синтаксис команды выглядит следующим образом:

docker cp <container_id>:/путь/к/файлу /локальный/путь

Где:

  •  — идентификатор контейнера, из которого нужно скопировать файл.
  • /путь/к/файлу — путь к файлу внутри контейнера.
  • /локальный/путь — путь на локальной машине, куда будет скопирован файл.

Например, чтобы скопировать файл example.txt из контейнера с идентификатором abc123 в текущий рабочий каталог на локальной машине, можно использовать следующую команду:

docker cp abc123:/путь/к/example.txt

После выполнения этой команды файл example.txt будет скопирован из контейнера в текущий рабочий каталог на локальной машине.

Виртуализация против контейнеризации: 6 ключевых отличий

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

1. Архитектура:

  • Виртуализация базируется на гипервизорах, которые могут запускать несколько операционных систем (ОС) на единственном физическом сервере. Каждая ОС работает в отдельной виртуальной машине (ВМ).
  • Контейнеризация, с другой стороны, использует контейнеры, которые работают на уровне операционной системы хоста и разделяют ядро ОС для запуска различных приложений.

2. Изолированность:

  • Виртуальные машины полностью изолированы друг от друга и могут иметь разные конфигурации ОС и приложений.
  • Контейнеры используют общее ядро ОС и разделяют его для работы с приложениями. Они предоставляют более легковесное решение и могут быть запущены быстрее.

3. Расход ресурсов:

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

4. Масштабируемость:

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

5. Управление:

  • Виртуализация требует централизованного управления гипервизором и ВМ.
  • Контейнеризация облегчает управление с помощью оркестраторов контейнеров, таких как Kubernetes, которые упрощают автоматизацию и управление контейнерами.

6. Поддержка:

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

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

Полное руководство по установке Docker compose на системы Debian (deb) и Red Hat (rpm)

Для Debian/Ubuntu (с пакетным менеджером deb):

1. Установите Docker на систему, если еще не установлен, согласно этой статье

2. Загрузите последнюю версию Docker Compose с помощью команды curl:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

3. Дайте права на выполнение загруженному файлу:

sudo chmod +x /usr/local/bin/docker-compose

4. Убедитесь, что Docker Compose успешно установлен, проверив версию:

docker-compose --version

Для систем на базе Red Hat, CentOS или Fedora (с пакетным менеджером rpm):

1. Установите Docker на систему, если еще не установлен, согласно этой статье
2. Загрузите последнюю версию Docker Compose с помощью команды curl:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

3. Дайте права на выполнение загруженному файлу:

sudo chmod +x /usr/local/bin/docker-compose

4. Убедитесь, что Docker Compose успешно установлен, проверив версию:

docker-compose --version

Теперь у вас должна быть установлена последняя версия Docker Compose на вашей системе с пакетным менеджером deb или rpm. Вы готовы использовать Docker Compose для управления ваших контейнеров!

Полное руководство по установке Docker на системы Debian (deb) и Red Hat (rpm)

Если вы хотите использовать Docker на своей системе Debian или Red Hat, вам потребуется правильно установить его. В этом руководстве я покажу вам пошаговые инструкции по установке Docker на обеих системах.

Для Debian/Ubuntu (с пакетным менеджером deb):

1. Откройте терминал и введите следующие команды, чтобы добавить необходимые репозитории:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2. Обновите список пакетов и установите Docker:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

3. Убедитесь, что Docker успешно установлен, выполнив команду:

sudo docker run hello-world

Для систем на базе Red Hat, CentOS или Fedora (с пакетным менеджером rpm):

1. Откройте терминал и введите следующую команду, чтобы добавить необходимый репозиторий:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2. Установите Docker:

sudo yum install docker-ce docker-ce-cli containerd.io

3. Убедитесь, что Docker успешно установлен, выполнив команду:

sudo docker run hello-world

Теперь у вас должна быть установлена последняя версия Docker на вашей системе Debian или Red Hat. Вы готовы начать работу с Docker и создавать контейнеры для ваших проектов. Успехов!

Ранее Ctrl + ↓