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
ссылка на оригинал статьи https://habr.com/ru/articles/783220/
Добавить комментарий