WireGuard розповсюджується як відкрите програмне забезпечення під ліцензією GPLv2. Хоч продукт вже і достатньо зрілий, проте, як говорить основний розробник і автор проекту Джейсон А. Доненфельд, його поки не варто використовувати в production-цілях, адже код ще не пройшов належний рівень аудиту безпеки. В майбутньому його планують повністю включити в ядро, а наразі він розповсюджується як окремий DKMS-модуль. Про WireGuard вже позитивно висловлювались Лінус Торвальдс та Грег Кроа-Хартман, порівнюючи його із витвором мистецтва.
Translate
неділя, 2 червня 2019 р.
WireGuard VPN. Part I: Intro
WireGuard розповсюджується як відкрите програмне забезпечення під ліцензією GPLv2. Хоч продукт вже і достатньо зрілий, проте, як говорить основний розробник і автор проекту Джейсон А. Доненфельд, його поки не варто використовувати в production-цілях, адже код ще не пройшов належний рівень аудиту безпеки. В майбутньому його планують повністю включити в ядро, а наразі він розповсюджується як окремий DKMS-модуль. Про WireGuard вже позитивно висловлювались Лінус Торвальдс та Грег Кроа-Хартман, порівнюючи його із витвором мистецтва.
вівторок, 25 грудня 2018 р.
Graphite. Stack Based On ClickHouse
Graphite був написаний Крісом Дейвісом (Chris Davis), співробітником компанії Orbitz в 2006 році. Мова програмування оригінального проекту - Python, але наразі майже всі компоненти Graphite можна замінити на сторонні, написані на мові Go. Більш того, навіть бібліотеку Whisper для роботи з базою Graphite можна замінити на альтернативні рішення зі збереженням даних в базі Cassandra, ClickHouse і т.п. Якраз про останній і піде мова цього разу.
Детальніше про оригінальний стек Graphite можна почитати в моїй попередній статті. До його недоліків можна віднести досить слабку продуктивність, неефективну роботу з дисковим простором, відсутність можливості масштабування бази даних і ін. Але це зовсім не значить, що він не підійде у випадках не надто високих навантажень.
Спершу пройдемось по кожному із компонентів та опишемо їх призначення.
- Carbon-clickhouse - демон, що працює у якості заміни оригінального Carbon та може писати отримані метрики від третіх систем в базу даних ClickHouse.
- ClickHouse - OLAP база даних, що була розроблена в компанії Yandex, проте із 2021 року вона розвивається в межах окремої одноіменної компанії. Пізніше розповім про неї детальніше.
- Graphite-clickhouse - проміжне програмне забезпечення для роботи між API сервісом та базою ClickHouse.
- Carbonapi - API-сервер Graphite, написаний на мові Go. Теоретично замість нього може бути використано Graphite-web (оригінальна імплементація API та веб-панель) чи Graphite-api (лише API на Flask фреймворку)
- Grafana - веб-панель на Go/NodeJS для побудови та відображення метрик. Вміє опитувати Graphite "із коробки", підтримує всі його API-функції. Для Grafana-и увесь описаний вгорі стек буде виглядати як звичайна інсталяція Graphite-у.
елементи наведені пунктиром - опціональні
понеділок, 15 жовтня 2018 р.
Prometheus. From Metrics To Insight
Prometheus - моніторингова система з відкритим вихідним кодом, була створена та розроблялась в компанії Soundcloud з 2012, а в 2015 році представлена публічно і наразі розвивається незалежно.
Переважно написана на мові Go колишніми співробітниками компанії Google. Прототипом Prometheus виступала моніторингова система Borgmon. Ця моніторингова система має наступні переваги/недоліки/особливості:
Як вже було згадано, Prometheus - це моніторингова система, що працює за pull-моделлю. Тобто сервер опитує власноруч кожен вузол, що потребує моніторингу. На думку авторів проекту, така модель дещо краща за push-модель (коли метрики відправляються самостійно на сервер моніторингу без жодних запитів). Чудовим прикладом останньої є Sensu, про яку я вже писав декілька років тому.
Переважно написана на мові Go колишніми співробітниками компанії Google. Прототипом Prometheus виступала моніторингова система Borgmon. Ця моніторингова система має наступні переваги/недоліки/особливості:
- багатовимірну модель даних, з часовими рядами, що ідентифікуються назвою метрики та парою ключ/значення;
- гнучку мову запитів, що використовує цю модель;
- pull-модель роботи серверу, збирання даних відбувається опитуванням вузлів, що моніторяться, по протоколу HTTP (хоча існує також Pushgateway, що працює по push-моделі і призначений для збирання метрик з недовговічних вузлів);
- відсутність залежності від розподілених віддалених сховищ; кожен вузол Prometheus є автономним;
- об'єкти моніторингу можуть додаватись вручну до основного конфігураційного файлу Prometheus чи автоматично через service discovery (Consul, API/теги AWS, GCP, Kubernetes, Openstack та інші).
Як вже було згадано, Prometheus - це моніторингова система, що працює за pull-моделлю. Тобто сервер опитує власноруч кожен вузол, що потребує моніторингу. На думку авторів проекту, така модель дещо краща за push-модель (коли метрики відправляються самостійно на сервер моніторингу без жодних запитів). Чудовим прикладом останньої є Sensu, про яку я вже писав декілька років тому.
четвер, 28 червня 2018 р.
Kubernetes. Part VI: Setup HA Master Cluster on AWS With Kops
Раніше я вже робив огляд актуальних способів установки Kubernetes та описував досить детально його установку через Kubeadm і Kubespray. Цього ж разу мова піде про інший метод установки кластеру високої доступності - Kops.
Kops (Kubernetes Operation) - це програмне забезпечення написане на мові Go, що дозволяє вирішувати проблеми установки та обслуговування кластеру Kubernetes. Серед його особливостей та переваг можна відзначити наступні:
- Підтримує установку кластерів для cloud-платформ AWS, GCE (beta статус), DigitalOcean (зі значними обмеженнями), VMWare Vsphere (alpha статус).
- Здатний інсталювати кластери високої доступності (HA), може налаштовувати мульти-майстер конфігурації з урахуванням можливостей та сервісів cloud-платформ.
- Підтримує ідемпотентність операцій над кластером; перед застосуванням змін здатен інформувати, що саме буде змінено (dry-runs).
- Опис інфраструктури може зберігати в Terraform темплейтах чи CloudFormation.
- Підтримує установку додатків Kubernetes (Dashboard, EFK, Prometheus Operator, Ingress і інші). У свою чергу вони можуть бути дещо змінені задля кращої інтеграції з функціоналом cloud-платформи.
- Налаштування зберігає в форматі YAML.
- Підтримує 8 різних плагінів для опису оверлейної мережі pod-to-pod/pod-to-service (CNI Networking)
1. PREREQUIREMENTS
Для того щоб перейти до установки Kubernetes кластеру спочатку необхідно встановити awscli та kops. Перший розповсюджується як python-пакет, котрий із легкістю можна встановити через pip:
$ pip install awscli --upgrade --user
$ aws --version
aws-cli/1.15.37 Python/3.6.3 Linux/4.13.0-43-generic botocore/1.10.37
Labels:
aws,
docker,
elasticsearch,
grafana,
iac,
ingress,
kops,
kubernetes,
microservice,
prometheus,
terraform
неділя, 1 квітня 2018 р.
OpenLDAP Server. Part II: FusionDirectory LDAP Browser
Нещодавно я оновив статтю про установку та налаштування OpenLDAP серверу, де також торкнувся теми підвищення безпеки інсталяції та використання панелі адміністрування phpLDAPadmin. Цього ж разу я хочу приділити увагу іншій веб-інтерфейсу FusionDirectory.
FusionDirectory - програмний комплекс, що забезпечує зручне управління даними в LDAP-каталозі. Це форк проекту Gosa², який відбувся в 2011 році через обмежений доступ до коду та процесу розробки оригінального продукту. Таким чином FusionDirectory хотів залучити в проект сторонніх розробників та покращити документацію.
У 2010 році Gosa² була обрана як фронтенд управління LDAP інфраструктурою німецького міста Мюнхен у межах проекта LiMux. На жаль, проект планують згорнути до 2020 на користь продуктів компанії Microsoft. Та і самій Gosa² пощастило не більше: останній реліз датується 2012 роком, хоча варто визнати, що пакети для її установки і досі присутні в офіційних репозиторіях Ubuntu.
Проте її форк FusionDirectory і досі відносно активно розвивається: останній реліз з версією 1.2 відбувся влітку 2017 року. Для того, щоб виконання подальших інструкцій в цій статті мало сенс, спочатку необхідно встановити OpenLDAP сервер, про інсталяцію якого я вже писав і згадував. Спершу встановимо пакети-залежності, які потребує FusionDirectory, але не запитує явно:
# apt install make
# cpan -i Archive::Extract
На відміну від Gosa², останні пакети FusionDirectory не присутні в стандартних репозиторіях Ubuntu, тому необхідно додати сторонні:
# cat << EOF > /etc/apt/sources.list.d/fusiondirectory.list
# FusionDirectory
deb http://repos.fusiondirectory.org/fusiondirectory-current/debian-wheezy wheezy main
deb http://repos.fusiondirectory.org/fusiondirectory-extra/debian-jessie jessie main
EOF
FusionDirectory - програмний комплекс, що забезпечує зручне управління даними в LDAP-каталозі. Це форк проекту Gosa², який відбувся в 2011 році через обмежений доступ до коду та процесу розробки оригінального продукту. Таким чином FusionDirectory хотів залучити в проект сторонніх розробників та покращити документацію.
У 2010 році Gosa² була обрана як фронтенд управління LDAP інфраструктурою німецького міста Мюнхен у межах проекта LiMux. На жаль, проект планують згорнути до 2020 на користь продуктів компанії Microsoft. Та і самій Gosa² пощастило не більше: останній реліз датується 2012 роком, хоча варто визнати, що пакети для її установки і досі присутні в офіційних репозиторіях Ubuntu.
1. INSTALLATION
Проте її форк FusionDirectory і досі відносно активно розвивається: останній реліз з версією 1.2 відбувся влітку 2017 року. Для того, щоб виконання подальших інструкцій в цій статті мало сенс, спочатку необхідно встановити OpenLDAP сервер, про інсталяцію якого я вже писав і згадував. Спершу встановимо пакети-залежності, які потребує FusionDirectory, але не запитує явно:
# apt install make
# cpan -i Archive::Extract
На відміну від Gosa², останні пакети FusionDirectory не присутні в стандартних репозиторіях Ubuntu, тому необхідно додати сторонні:
# cat << EOF > /etc/apt/sources.list.d/fusiondirectory.list
# FusionDirectory
deb http://repos.fusiondirectory.org/fusiondirectory-current/debian-wheezy wheezy main
deb http://repos.fusiondirectory.org/fusiondirectory-extra/debian-jessie jessie main
EOF
четвер, 14 грудня 2017 р.
Kubernetes. Part IV: Setup HA Cluster With Kubespray
Kubespray (раніше Kargo) - це набір Ansible ролей для установки та конфігурації системи оркестрації контейнерами Kubernetes. У якості IaaS-у в цьому випадку може виступати AWS, GCE, Azure, OpenStack чи звичайні віртуальні машини. Це проект з відкритим вихідним кодом та відкритою моделлю розробки, тому за бажанням кожен може вплинути на його життєвий цикл.
Нещодавно я писав про інсталяцію Kubernetes за допомогою Kubeadm, але в цьому способі є значні недоліки: він і досі не підтримує мультимайстер конфігурацій та, часом, є не дуже гнучким. Kubespray, хоч і використовує Kubeadm під капотом, вже має функціонал забезпечення високої доступності як для майстра, так і для etcd на етапі інсталяції. Про його порівняння із іншими методами установки Kubernetes можна почитати за наступним посиланням https://github.com/kubernetes-incubator/kubespray/blob/master/docs/comparisons.md
У цій статті ми створимо 5 серверів на ОС Ubuntu 16.04. У моєму випадку їх перелік наступний:
192.168.20.10 k8s-m1.me
192.168.20.11 k8s-m2.me
192.168.20.12 k8s-m3.me
192.168.20.13 k8s-s1.me
192.168.20.14 k8s-s2.me
Додаємо їх до /etc/hosts всіх вузлів, в тому числі локальної системи, або ж до dns-серверу. Фаерволи та інші обмеження в мережі цих вузлів мають бути деактивовані. Окрім цього, має бути дозволений IPv4 forwarding та кожен із хостів повинен мати вільний доступ до мережі Інтернет задля завантаження docker-образів.
Копіюємо публічний rsa-ключ до кожного серверу зі списку:
$ ssh-copy-id ubuntu@server.me
Вказуємо необхідного користувача та ключ для підключення з локальної машини:
$ vim ~/.ssh/config
...
Host *.me
User ubuntu
ServerAliveInterval 60
IdentityFile ~/.ssh/id_rsa
Де ubuntu - користувач, від імені якого буде відбуватись підключення до сервера, id_rsa - приватний ключ. Більш того, цей користувач потребує можливості виконувати команди sudo без паролю.
Клонуємо репозиторій Kubespray:
$ git clone https://github.com/kubernetes-incubator/kubespray.git
Нещодавно я писав про інсталяцію Kubernetes за допомогою Kubeadm, але в цьому способі є значні недоліки: він і досі не підтримує мультимайстер конфігурацій та, часом, є не дуже гнучким. Kubespray, хоч і використовує Kubeadm під капотом, вже має функціонал забезпечення високої доступності як для майстра, так і для etcd на етапі інсталяції. Про його порівняння із іншими методами установки Kubernetes можна почитати за наступним посиланням https://github.com/kubernetes-incubator/kubespray/blob/master/docs/comparisons.md
У цій статті ми створимо 5 серверів на ОС Ubuntu 16.04. У моєму випадку їх перелік наступний:
192.168.20.10 k8s-m1.me
192.168.20.11 k8s-m2.me
192.168.20.12 k8s-m3.me
192.168.20.13 k8s-s1.me
192.168.20.14 k8s-s2.me
Додаємо їх до /etc/hosts всіх вузлів, в тому числі локальної системи, або ж до dns-серверу. Фаерволи та інші обмеження в мережі цих вузлів мають бути деактивовані. Окрім цього, має бути дозволений IPv4 forwarding та кожен із хостів повинен мати вільний доступ до мережі Інтернет задля завантаження docker-образів.
Копіюємо публічний rsa-ключ до кожного серверу зі списку:
$ ssh-copy-id ubuntu@server.me
Вказуємо необхідного користувача та ключ для підключення з локальної машини:
$ vim ~/.ssh/config
...
Host *.me
User ubuntu
ServerAliveInterval 60
IdentityFile ~/.ssh/id_rsa
Де ubuntu - користувач, від імені якого буде відбуватись підключення до сервера, id_rsa - приватний ключ. Більш того, цей користувач потребує можливості виконувати команди sudo без паролю.
Клонуємо репозиторій Kubespray:
$ git clone https://github.com/kubernetes-incubator/kubespray.git
понеділок, 15 травня 2017 р.
Cloud Foundry. Part III: BOSH 2 Lite/Cloud Foundry (Diego)
Декілька тижнів тому я опублікував другу статтю про PAAS-платформу Cloud Foundry, а цього разу мова піде про установку нового Cloud Foundry з Diego runtime. Нагадаю, що Diego має купу вдосконалень в порівнянні з DEA, а саме нова система менеджменту контейнерів Garden, що підтримує деплой Docker-контейнерів, новий алгоритм розміщення задач Diego Auction та інші оптимізації.
Підтримка DEA буде припинена 22 травня 2017 року, останні релізи stemcell вже не працюють з DEA, тому практичне знайомство з Cloud Foundry ліпше починати з цієї статті. Цього разу буде описана установка BOSH2 Lite (так, існує ще і друга версія), Cloud Foundry з Diego runtime.
BOSH Lite - це реліз системи виливки Cloud Foundry для системи VirtualBox. Тож останній має бути встановлений в хост-системі:
$ VBoxManage --version
5.1.22r115126
Для інсталяції BOSH 2 Lite більше не потрібен Vagrant, адже його установочні скрипти вміють працювати з VirtualBox напряму.
BOSH 2 CLI написаний на мові Go і його установка для macOS заключається в завантаженні готового бінарного файлу:
$ cd ~/Downloads
$ wget https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-2.0.16-darwin-amd64
$ chmod +x bosh-cli-*
# mv bosh-cli-* /usr/local/bin/bosh2
$ bosh2 -v
version 2.0.16-88aa790-2017-05-02T01:12:20Z
За релізами версій BOSH2 CLI можна слідкувати за наступним посиланням https://bosh.io/docs/cli-v2.html. Там же можна завантажити останню версію BOSH2 CLI для ОС Linux.
Підтримка DEA буде припинена 22 травня 2017 року, останні релізи stemcell вже не працюють з DEA, тому практичне знайомство з Cloud Foundry ліпше починати з цієї статті. Цього разу буде описана установка BOSH2 Lite (так, існує ще і друга версія), Cloud Foundry з Diego runtime.
1. BOSH 2 LITE INSTALLATION (BOSH 2 DIRECTOR)
BOSH Lite - це реліз системи виливки Cloud Foundry для системи VirtualBox. Тож останній має бути встановлений в хост-системі:
$ VBoxManage --version
5.1.22r115126
Для інсталяції BOSH 2 Lite більше не потрібен Vagrant, адже його установочні скрипти вміють працювати з VirtualBox напряму.
BOSH 2 CLI написаний на мові Go і його установка для macOS заключається в завантаженні готового бінарного файлу:
$ cd ~/Downloads
$ wget https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-2.0.16-darwin-amd64
$ chmod +x bosh-cli-*
# mv bosh-cli-* /usr/local/bin/bosh2
$ bosh2 -v
version 2.0.16-88aa790-2017-05-02T01:12:20Z
За релізами версій BOSH2 CLI можна слідкувати за наступним посиланням https://bosh.io/docs/cli-v2.html. Там же можна завантажити останню версію BOSH2 CLI для ОС Linux.
Підписатися на:
Дописи (Atom)








