Open Source Cloud Computing

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Intro

Написано по мотивам недавней статьи: Особенности национальной виртуализации на SharxBase
и Большое тестирование российских систем виртуализации

Оставим критику этих замечательных продуктов для тех кому с ними приходится работать. Ребята стараются и это уже не плохо.

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

К счастью есть такой проект как Сloudstack который отвечает всем современным требованиям: API, готовые модули terraform и ansible, поддержка Kubernetes и встроенный мониторинг.

Когда-то эта платформа принадлежала Citrix, но сейчас кодовая база распространяется свободно. Некоторые российские компании используют его для предоставления облачных услуг.

Важное отличие – это не гипервизор, а «managment panel»: middleware и frontend который управляет хостами виртуализации. Вы подключаете хосты с виртализаций на базе QEMU/KVM, Xen и ESXI к control plane и дальше управляете ими через CloudStack. Не хватает только биллинга, но это можно исправить.

Ниже приведена инструкция по установке control plane CloudStack на centos.

Это ознакомительная установка – для прода процесс отличается и включает в себя дополнительные шаги.

Обновляем систему:

yum -y upgrade

Устанавливаем приреквизиты:

yum install bridge-utils net-tools -y

SELINUX

Отключаем SELINUX:

sed -i 's/^[[:blank:]]*SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

cat /etc/selinux/config

setenforce 0

chrony

Устанавливаем chrony:

yum install chrony

Убедится в том, что служба chrony работает:

systemctl start chronyd
systemctl enable chronyd

Разкомментировать следующую строчку в файле /etc/chrony.conf:

#local stratum 10

Перезапустить службу chrony:

systemctl restart chronyd

Repo

Добавить репозиторий Cloudstack:
/etc/yum.repos.d/cloudstack.repo:

[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/$releasever/4.18/
enabled=1
gpgcheck=0

NFS

Установить NFS:

yum -y install nfs-utils

Создать две директории для NFS шар:

mkdir -p /export/primary
mkdir /export/secondary

Добавить в /etc/exports:

/export/primary 185.149.240.25(rw,sync,no_root_squash,no_subtree_check)
/export/secondary 185.149.240.25(rw,sync,no_root_squash,no_subtree_check)
exportfs -r

Проверяем запущена ли служба NFS сервера:

systemctl status rpcbind nfs-server

Проеряем шары NFS:

 exportfs
/export/primary
		185.149.240.25
/export/secondary
		185.149.240.25

Проверяем запущена ли служба rpcbind:

systemctl start rpcbind
systemctl enable rpcbind

firewalld

Выключите firewalld:

systemctl stop firewalld
systemctl disable firewalld

Сервисы

Добавите в автозапуск и стартуйте следующие службы:

systemctl enable rpcbind
systemctl enable nfs-server
systemctl start nfs-server
systemctl start rpcbind
systemctl daemon-reload

MySQL

Скачиваем репозиторий mysql:

https://dev.mysql.com/downloads/repo/yum

Устанавливаем репозиторий:

rpm -Uvh mysql80-community-release-el9-1.noarch.rpm

Устанавливаем mysql:

yum install mysql-community-server

Содержимое конфига /etc/my.cnf:

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
● mysqld.service - MySQL Server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled)
     Active: active (running) since Sat 2023-07-01 15:26:14 MSK; 7s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 36794 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
   Main PID: 36873 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 306975)
     Memory: 487.8M
        CPU: 9.679s
     CGroup: /system.slice/mysqld.service
             └─36873 /usr/sbin/mysqld

Jul 01 15:24:58 Pythagoras systemd[1]: Starting MySQL Server...
Jul 01 15:26:14 Pythagoras systemd[1]: Started MySQL Server.

Перезапускаем службу mysql:

systemctl stop mysqld
systemctl start mysqld

Временный пароль mysql:

grep 'temporary password' /var/log/mysqld.log

Используем скрипт mysql:

mysql_secure_installation

Должен появится следующий запрос:

Estimated strength of the password: 100
Change the password for root ? (Press y|Y for Yes, any other key for No) :

Проверяем доступ:

mysqladmin -u root -p version

MySQL connector

Устанавливаем коннектор для mysql:

yum install mysql-connector-python3

Cloudstack-management

Устанавливаем панель управления Cloudstack:

yum install cloudstack-management

Cloudstack-agent

Устанавливаем Agent Cloudstack:

yum install cloudstack-agent

QEMU & Libvirt

На хосте нужно будет установить QEMU и Libvirt.

QEMU VNC нужно расомментировать /etc/libvirt/qemu.conf:

#vnc_listen = "0.0.0.0"

Libvirt

В конфиг Libvirt добавить следующие строчки /etc/libvirt/libvirtd.conf:

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

Юнит-файл systemd Libvirt /usr/lib/systemd/system/libvirtd.service

systemctl mask libvirtd.socket libvirtd-ro.socket libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socket

Для компонента cloudstack-agent необходимо создать пустой файл в директории /etc/sysconfig/:

touch /etc/sysconfig/libvirtd

Перезапустить демон libvirt:

systemctl restart libvirtd

Ссылки:

  • https://libvirt.org/manpages/libvirtd.html#system-socket-activation

Networking

Включаем IP Forwarding

Нужно будет обязательно включить на хосте (в нашем случае это одна машина) IP Forwarding.

Добавить в файл /etc/sysctl.d/cloudstack.conf следующие строчки:

net.ipv4.ip_forward=1

Удостоверится в том, что IP Forwarding включен:

sysctl net.ipv4.ip_forward

Сначала настраиваем eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
BRIDGE=cloudbr0

И затем два бриджа - cloudbr0:

DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
IPADDR=192.168.42.11
GATEWAY=192.168.42.1
NETMASK=255.255.255.0
STP=yes

cloudbr1 /etc/sysconfig/network-scripts/ifcfg-cloudbr1:

DEVICE=cloudbr1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
STP=yes

Запускаем скрипт cloudstack-setup-databases:

cloudstack-setup-databases cloud:<PASSWORD>@localhost --deploy-as=root

Планируемый результат:

Mysql user name:cloud                                                           [ OK ]
Mysql user password:******                                                      [ OK ]
Mysql server ip:localhost                                                       [ OK ]
Mysql server port:3306                                                          [ OK ]
Mysql root user name:root                                                       [ OK ]
Mysql root user password:******                                                 [ OK ]
Checking Cloud database files ...                                               [ OK ]
Checking local machine hostname ...                                             [ OK ]
Checking SELinux setup ...                                                      [ OK ]
Detected local IP address as 185.149.240.25, will use as cluster management server node IP[ OK ]
Preparing /etc/cloudstack/management/db.properties                              [ OK ]
Applying /usr/share/cloudstack-management/setup/create-database.sql             [ OK ]
Applying /usr/share/cloudstack-management/setup/create-schema.sql               [ OK ]
Applying /usr/share/cloudstack-management/setup/create-database-premium.sql     [ OK ]
Applying /usr/share/cloudstack-management/setup/create-schema-premium.sql       [ OK ]
Applying /usr/share/cloudstack-management/setup/server-setup.sql                [ OK ]
Applying /usr/share/cloudstack-management/setup/templates.sql                   [ OK ]
Processing encryption ...                                                       [ OK ]
Finalizing setup ...                                                            [ OK ]

CloudStack has successfully initialized database, you can check your database configuration in /etc/cloudstack/management/db.properties

sudoers

Для компонента cloudstack-agent необходимо добавить следующие строчки в /etc/sudoers:

cloudstack ALL=NOPASSWD: /usr/bin/cloudstack-setup-agent
defaults:cloudstack !requiretty

End

Запуск cloudstack-setup-management:

Starting to configure CloudStack Management Server:
Configure CloudStack Management Server ...[OK]
CloudStack Management Server setup is Done!
Please ensure ports 8080, 8250, 8443, and 9090 are opened and not firewalled for the management server and not in use by other processes on this host.

Запуск агента Cloudstack:

systemctl enable cloudstack-agent
systemctl start cloudstack-agent
systemctl status cloudstack-agent

UI

Теперь можно использовать WebUI CloudStack:
http://:8080/client

Учетные данные по умолчанию:

admin
password
Login
Login
UI
UI
  • https://cloudstack.apache.org/kubernetes.html

Источник: https://habr.com/ru/articles/783220/


Интересные статьи

Интересные статьи

Всем привет, меня зовут Валентина! Уже около пяти лет я работаю в тестировании, из них более трех занимаюсь прожаркой OpenStack с помощью Tempest и Rally. Заметила, что в сети не так много информаци...
Сфера искусственного интеллекта показательна тем, что здесь успешно развиваются множество проектов с открытым исходным кодом. Это отличная тенденция, поскольку позволяет сторонним исследователям лучше...
Здравствуй, Хабр! Меня зовут Александр Волынский, я занимаюсь разработкой ML Platform в VK Cloud. Наша ML-платформа стала доступна пользователям совсем недавно, некоторые из её компонентов сейчас ...
За прошедшие годы в мире разработано немало браузеров. Некоторые из них набирают популярность, другие же пропадают, не успев «родиться». Но есть и те, что не слишком хорошо известны IT-сообществу, н...
Статья нашего сотрудника из его личного блога. В статье речь идет об OpenCart версии> =2.3, а именно рассматриваются 2.3 и 3.0Система событий в OpenCart д...