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 

Ссылки:

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://habr.com/ru/articles/783220/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *