Назад
DevOps
PostgreSQL+1C на Ubuntu Linux RemoteApp Tool — пошаговая настройка RDP-доступа к приложениям Автозапуск 1С при подключении к ТС на Windows Server 2016 Автоматизация установки 1С Автоматическое создание резервной копии настроек Mikrotik с отправкой на почту и FTP Авторизация баз 1С в SQL через локальную учетную запись Базовая настройка Unifi контроллера Базовая настройка Windows Server 2019 Базовая настройка маршрутизаторов MikroTik на примере RB2011 Восстановление базы PostgreSQL 1С из резервной копии Восстановление базы данных 1С на SQL сервере Восстановление кластера MySQL Восстановление почтовой базы данных Exchange Server 2013/2016 Восстановление системы Windows Server 2019 Восстановление файла данных Outlook (.pst) Делегирование полномочий пользователю конфигурации узла сеансов удаленных рабочих столов Windows Server 2012-2019 Диагностика компонентов Exchange 2016 Добавление второго контроллера домена в существующий домен Добавление диска LVM Добавление нового сотрудника в систему Sigur Запрет запуска программ Windows Изменение максимального размера вложений в Exchange и Outlook Изменение пароля на удаленном рабочем столе Инструкция добавления нового сотрудника в Biosmart Studio 5 + просмотр отчетов Интеграция облачной инфраструктуры с локальной ИТ-инфраструктурой Использование DNS challenge для выпуска SSL-сертификатов Lets Encrypt Как обновить платформу 1С на сервере Как опубликовать базы 1С на веб-сервере Windows и Linux Как организовать ИТ-поддержку клиентов Как организовать удаленную работу с клиент-банком Как передать файл с клиента на сервер 1С 8.3 Как перенести базу 1С в облако Как подключить COM-объект Excel в 1C Как подключиться удаленно к 1С Как устранить ошибку подключения по RDP Win 7 -> Win Server Миграция Active Directory с Windows Server 2016 на Windows Server 2022 Нагрузочное тестирование 1С:ERP+тест-центр Нагрузочное тестирование сервера на Linux Настройка AlwaysOn MS SQL Настройка Juniper Virtual Chassis QFX5100 Настройка PostgreSQL на Centos Настройка PostgreSQL на Windows Настройка QoS для ISCSi Настройка RemoteApp на Windows Server 2019 Настройка SMS-оповещения в системе СКУД SIGUR Настройка SNMP на MikroTik Настройка VLAN в Proxmox VE Настройка VPN-сервера на Windows Server 2016 Настройка ZFS в Proxmox VE Настройка веб-публикации 1С, подключение кассового оборудования Настройка внутренней фильтрации содержимого в Exchange Server 2016 Настройка графика доступности в Zabbix: мониторинг ping-ответов Настройка групповой политики на Windows Server 2016 Настройка групповых политик Windows Server 2019 Настройка зеркалирования MS SQL 2019 Настройка кластера Asterisk с использованием VRRP Настройка кластера HAproxy при помощи VRRP Настройка коммутатора D-link SmartPro серии DES/DGS Настройка контроллера домена Windows Server 2019 Настройка подключения к удаленному рабочему столу на iOS Настройка резервирования интернет-канала (Mikrotik) Настройка репликации типа Master-Master на MySQL (MariaDB) Настройка сервера лицензирования Windows Server 2019 Настройка сервера лицензирования СЛК Настройка сетей Hyper-V Настройка сети в Proxmox 7 Настройка терминального сервера Windows 2012 R2 Настройка терминального сервера Windows Server 2016 Настройка терминального сервера на базе Windows Server 2022 Настройка файлового сервера Windows Server 2019 Настройка формата и оптимизация журнала регистрации 1С Настройка шифрованной телефонии на базе Asterisk Настройка экстренного отключения удаленного сервера Windows Обновление оборудования Juniper Обновление тонкого клиента 1С при веб-публикации Отказоустойчивый FTP через HAproxy Отключение обновлений Windows Server через групповые политики Очистка кэша 1С Ошибка 1069 на сервере 1С Ошибка http при обращении к серверу 1C Ошибка «Не удается войти в учетную запись» в ОС Windows Ошибка в 1С при получении характеристик принтера Ошибка при обновлении SQL Server — MSSQLSERVER.INACTIVE Перенос баз 1С Перенос журнала регистраций 1С (srvinfo) на другой диск Перенос ключей КриптоПро Перенос писем с помощью .pst в Microsoft Exchange Перенос почтовых ящиков Exchange на другой сервер Перенос файлов с помощью Robocopy Подключение iSCSI в Proxmox VE Подключение аппаратного USB-ключа лицензии 1С на удаленный сервер Подключение к облачному серверу 1C по OpenVPN на ipad / iphone Подключение к удаленному рабочему столу Windows через MacOS Подключение модуля расширения веб-сервера в 1С Подключение по RDP с Linux систем Подключение сетевого принтера на Windows 10 Поиск наиболее нагруженных баз MSSQL при работе с 1С Почтовый переезд средствами IMAP Проброс диска в Proxmox 7 Проброс портов на MikroTik Проверка актуальности учетных данных в документации ИТ-объекта Разворачиваем отказоустойчивый кластер MS SQL Server 2012 на Windows Server 2016 Резервное копирование 1С на MSSQL Резервное копирование PostgreSQL Резервное копирование на Proxmox VE Решение ошибки Proxmox VE — error 0 occurred while receiving the document Решение проблемы: агент сервера 1С:Предприятие останавливается Решение проблемы: недостаточно памяти на сервере 1С Решение проблемы: ошибка 500 на веб-сервере IIS 1С Сброс пароля в Windows Сеанс удаленного рабочего стола или удаленного приложения не прекращается из-за splwow64.exe процесса Сервер хранилища конфигураций 1C на Linux Сжатие базы данных MySQL и MariaDB Смена истекшего пароля с помощью Windows RDS Смена рабочего места в базах 1С Создание mesh сети Wi-Fi на базе Ubiquiti Unifi 6 Создание и отзыв сертификатов OpenVPN Создание отказоустойчивого кластера 1С Создание резервных копий SQL Postgres на S3-хранилище Создание резервных копий БД SQL на серверы объектного хранилища S3 Создание шифрованых дисков с помощью PGP Сохранение конфигурации Juniper Схема действий в форс-мажорных ситуациях (IT) Удаление агента сервера 1С Удаление базы 1С из кластера Удаление пользователя из 1С Удаление сеанса пользователя в 1С Удаление терминальных лицензий (RDS CAL) Установка 1С:Предприятие на Mac OS Установка Astra Linux Common Edition на VirtualBox Установка Bareos Установка COM-компонента в 1С Установка Exchange Server 2016 Установка Exchange Server 2019 Установка KVM на ubuntu Установка MariaDB на CentOS 7 Установка Proxmox 7 на Debian 11 Установка Proxmox Mail Gateway 7 Установка RabbitMQ (Windows) Установка Ubuntu на Proxmox 7 Установка Windows Server 2019 на Proxmox Установка Windows Server 2022 на виртуальную машину Hyper-V Установка драйвера принтера на терминальный сервер Windows Server 2019 Установка и базовая настройка MS SQL 2019 для 1С Установка и базовая настройка OpenMediaVault Установка и настройка DHCP на Windows Server 2019 Установка и настройка TrueNAS CORE Установка и настройка Zabbix, настройка агента и уведомлений Установка и настройка Zimbra на CentOS 7 Установка и настройка контроллера домена Active Directory Domain Установка и настройка СУБД Postgres Pro для 1С Установка квоты каталогов в Windows Servers Установка нескольких версий сервера 1С Установка сервера 1С и MS SQL с настройкой для оптимизации 1С Установка сервера 1С на Ubuntu + PostgreSQL Установка сервера 1С:Предприятие в связке с CentOS 7 и PostgreSQL Установка терминального сервера Windows Server 2019 Устранение ошибки 0x800700DF в WebDAV Устранение ошибки «удаленный хост разорвал существующее подключение 1С» Устранение ошибки проверки подлинности RDP Устранение ошибки службы Active Directory сейчас недоступны (не печатает принтер на Windows 10) Устранение проблемы несоответствия версий 1С Фильтрация писем в Exchange (Outlook web) Что делать, если сервер 1С:Предприятие не обнаружен

Настройка, установка, мониторинг, подключение Ceph к кластеру k8s

Ceph – продукт, позволяющий построить распределенное хранилище данных с широким спектром возможностей подключения хранилища клиентам. Возможно подключение как в режиме блочных устройств (rbd), так и в режиме файловой системы (cephfs). В рамках данной инструкции рассмотрим установку на тестовый кластер последней на текущий момент версии ceph 15 octopus и подключение созданного кластера к кластеру k8s, c возможностью автоматического создания на основе технологии DP ( dynamic provisioning).

За основу тестового кластера ceph взяты:

  • Три виртуальные машины в конфигурации 4gb ram, 2 ядра, диск под систему 20 gb, пустой диск sdb на 50 gb.
  • Операционная система – centos 8.

Демоны ceph выполняют разные функции, например, через monitor подключаются клиенты, а osd отвечают за хранение данных и в продуктовых инсталляциях необходимо разносить роли по разным машинам, но в рамках нашего стенда все три сервера будут нести на себе все роли. Произведем предварительные настройки.

Преднастройка кластера

Шаг 1.

В файлы /etc/hosts машин необходимо добавить следующие строки:

192.168.66.161 ceph1
192.168.66.162 ceph2
192.168.66.163 ceph3

Шаг 2.

Необходимо установить корректные имена узлов командой hostnamectl set-hostname cephX, где x – 1,2,3 соответственно.

Шаг 3.

Установка ceph будет проводиться с вм ceph1, на ней следует выполнить команды для аутентификации по ключу на двух других нодах:

:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph1
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph2
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph3

Шаг 4.

На все серверы необходимо установить sshpass:

yum install sshpass

Выполнить логин на все три сервера, ssh root@ceph1, ssh root@ceph2, ssh root@ceph3 с целью проверки, что все работает корректно.

Шаг 5.

Устанавливаем git, скачиваем плейбук установки ceph:

yum install git
git clone https://github.com/ceph/ceph-ansible.git
git checkout stable-5.0
cd ceph-ansible

yum install python3-pip
pip3 install -r requirements.txt
echo "PATH=$PATH:/usr/local/bin" >>~/.bashrc
source ~/.bashrc

Шаг 6.

В файл group_vars/all.yml вносим следующее содержимое:

####################################

ceph_origin: repository
ceph_repository: community
ceph_stable_release: octopus
public_network: "192.168.66.0/24"
cluster_network: "192.168.66.0/24"

#ntp_service_enabled: true
#ntp_daemon_type: ntpd

ceph_release_num: 15
cluster: ceph

osd_objectstore: bluestore
osd_scenario: lvm
devices:
  - /dev/sdb

ceph_conf_overrides:
  global:
    osd_pool_default_pg_num: 64
    osd_pool_default_pgp_num: 64
    osd_journal_size: 5120
    osd_pool_default_size: 3
    osd_pool_default_min_size:  2


# Firewalld / NTP
configure_firewall: True
ntp_service_enabled: true
ntp_daemon_type: chronyd


# DASHBOARD
dashboard_enabled: True
dashboard_protocol: http
dashboard_admin_user: admin
dashboard_admin_password: p@ssw0rdp@ssw0rd

grafana_admin_user: admin
grafana_admin_password: p@ssw0rdp@ssw0rd
##############################################

mkdir inventory
nano inventory/hosts

Шаг 7.

Создаем файл hosts со следующим содержимым:

[mons]
ceph1 monitor_address=192.168.66.161
ceph2 monitor_address=192.168.66.162
ceph3 monitor_address=192.168.66.163

[osds]
ceph1
ceph2
ceph3

[mgrs]
ceph1
ceph2
ceph3

[mdss]
ceph1
ceph2
ceph3

[grafana-server]
ceph1
ceph2
ceph3

###################################

Шаг 8.

Выполняем:

cp site.yml.sample site.yml

Настраиваем подключение кластера k8s к кластеру ceph в варианте cephfs

Шаг 1.

На кластере ceph создаем пул:

ceph osd pool create k8s 8 8

ceph auth add client.k8s mon 'allow r' osd 'allow rwx pool=k8s'
ceph auth get-key client.k8s

Видим вывод:

AQBOksZfOup7LxAAPSRCRxLPe2untxipYjHBuA==

ceph auth get-key client.admin

AQDLRcZfInoxGxAALugbHb0LYQPuwMho6KN0xw==

Выполняем:

ceph mon dump

чтобы увидеть id нашего кластера и адреса мониторов.

Шаг 2.

Переходим в кластер k8s. устанавливаем csi драйвер для работы с ceph:

helm repo add ceph-csi https://ceph.github.io/csi-charts
helm inspect values ceph-csi/ceph-csi-cephfs >cephfs.yml

Шаг 3.

В файле cephfs.yaml меняем для нашего кластера:

csiConfig:
   - clusterID: "52cb0d47-30e1-4d30-acd6-c2f51dc48505"
    monitors:
    - "192.168.66.161:6789"
    - "192.168.66.162:6789"
    - "192.168.66.163:6789"
nodeplugin:
  httpMetrics:
    enabled: true
    containerPort: 8091
  podSecurityPolicy:
    enabled: true
provisioner:
  replicaCount: 1
  podSecurityPolicy:
    enabled: true

Шаг 4.

Устанавливаем чарт:

helm upgrade -i ceph-csi-cephfs ceph-csi/ceph-csi-cephfs -f cephfs.yml -n ceph-csi-cephfs --create-namespace

Шаг 5.

Создаем secret.yaml:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-cephfs-secret
  namespace: ceph-csi-cephfs
stringData:
# Required for dynamically provisioned volumes
  adminID: admin
  adminKey: AQDLRcZfInoxGxAALugbHb0LYQPuwMho6KN0xw==

Выполняем:

kubectl create –f secret.yaml

Шаг 6.

Создаем storageclass.yaml:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-cephfs-sc
provisioner: cephfs.csi.ceph.com
parameters:
  clusterID: 52cb0d47-30e1-4d30-acd6-c2f51dc48505
  fsName: cephfs
  csi.storage.k8s.io/provisioner-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-cephfs
  csi.storage.k8s.io/controller-expand-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-cephfs
  csi.storage.k8s.io/node-stage-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-cephfs
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
- debug

kubectl create –f storageclass.yaml

Шаг 7.

Создаем pvc.yaml:

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: csi-cephfs-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
    storage: 1Gi
  storageClassName: csi-cephfs-sc


kubectl create –f pvc.yaml

Выводом команд убеждаемся что pvc связан с автоматически созданным pv:

kubectl get pvc
kubectl get pv

Итого, получили возможность создавать pvc – provisioner создает pv на cephfs.

Подключаем ceph в режиме rbd к кластеру kubernetes

Теперь настроим тестовое подключение в режиме rbd.

Шаг 1.

На сервере ceph выполняем:

ceph osd pool create kuberbd 32
ceph osd pool application enable kuberbd rbd

Так как у нас в кластер k8s уже установлен csi, для cephps, пропустим этап добавления репозитория (https://ceph.github.io/csi-charts) и сразу экспортим набор переменных чарта:

helm inspect values ceph-csi/ceph-csi-rbd > rbd.yml

В получившемся yaml вносим правки с данными нашего ceph кластера:

csiConfig:
   - clusterID: "52cb0d47-30e1-4d30-acd6-c2f51dc48505"
    monitors:
    - "v2:192.168.66.161:3300/0,v1:192.168.66.161:6789/0"
    - "v2:192.168.66.162:3300/0,v1:192.168.66.162:6789/0"
    - "v2:192.168.66.163:3300/0,v1:192.168.66.163:6789/0"

nodeplugin:
  podSecurityPolicy:
    enabled: true

provisioner:
  podSecurityPolicy:
    enabled: true

Шаг 2.

Устанавливаем в кластер чарт:

helm upgrade -i ceph-csi-rbd ceph-csi/ceph-csi-rbd -f rbd.yml -n ceph-csi-rbd --create-namespace

Смотрим ключ доступа для юзера admin (в production правильно создавать отдельного юзера с правами на запись):

ceph auth get-key client.admin

Шаг 3.

Создаем secret.yaml:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-rbd-secret
  namespace: ceph-csi-rbd
stringData:
  userID: admin
  userKey: AQDLRcZfInoxGxAALugbHb0LYQPuwMho6KN0xw==

Выполняем команду:

kubectl apply -f secret.yaml

Шаг 4.

Создаем storageclass.yaml:

 ---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:
   clusterID: 52cb0d47-30e1-4d30-acd6-c2f51dc48505
   pool: kuberbd

   imageFeatures: layering

   csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
   csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-rbd
   csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
   csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-rbd
   csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
   csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-rbd

   csi.storage.k8s.io/fstype: ext4

reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
  - discard

  kubectl apply -f storageclass.yaml

Шаг 5.

Создаем pvc.yaml:

 apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rbd-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
    storage: 2Gi
  storageClassName: csi-rbd-sc

Выполняем:

kubectl apply -f pvc.yaml

Проверим в графическом интерфейсе ceph наличие созданных нами пулов:

Пулы присутствуют, встроенный дашборд и grafana позволят в базовом варианте мониторить нагрузку на наш кластер. Более тонкая настройка мониторинга и алертинга – тема отдельных статей.

В итоге мы получили пригодный для обучения и тестирования различных сценариев работы кластер ceph. Как клиента подключили кластер k8s в режиме cephfs и rbd, что дало возможность создавать pv на основе pvc в автоматическом режиме посредством dynamic provisioning.

Возможно, для решения ваших задач подойдет наш DevOps-аутсорсинг.

Дата публикации: 1 февраля 2021
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.