Detected the following error s this host already contains virtual guests

Hello all, I will keep this brief and to the point. I have moved my cluster to a permanent home on a new network and am recreating my cluster. In order to do so I followed the process of removing corosync.conf and deleting all the config files. I also removed all ceph config and all vm's are...

  • #1

Hello all, I will keep this brief and to the point. I have moved my cluster to a permanent home on a new network and am recreating my cluster. In order to do so I followed the process of removing corosync.conf and deleting all the config files. I also removed all ceph config and all vm’s are removed from all nodes.

I can create a cluster fine, but whenever I attempt to join a node to it I get the error ‘this host already contains virtual guests’ but they are all gone.

Any ideas?

mira

mira

Proxmox Staff Member


  • #2

Are there any files left in ‘/etc/pve/qemu-server’ or ‘/etc/pve/lxc’ on the node you want to join?

  • #3

Are there any files left in ‘/etc/pve/qemu-server’ or ‘/etc/pve/lxc’ on the node you want to join?

In /etc/pve/nodes/ I found that there was a directory for each of the old nodes(i.e. /etc/pve/nodes/node1/qemu-server/ and inside found the vm .conf files i.e. 101.conf. I removed those and then the join worked properly.

Thank you for the quick response and help!

  • #4

I have the same issue. I removed the 101.conf and 102.conf and when I try again to add the server to the cluster I receive the same error * this host already contains virtual guests

Any ideeas?

mira

mira

Proxmox Staff Member


  • #5

Please post the output of ls /etc/pve/qemu-server and ls /etc/pve/lxc as well as ls /etc/pve/nodes

  • #6

@mira
The server that will join the cluster:


root@pmx2:~# ls /etc/pve/qemu-server
root@pmx2:~# ls /etc/pve/lxc
100.conf
root@pmx2:~# ls /etc/pve/nodes
pmx2
root@pmx2:~#

The server that hosts the cluster:

root@proxmox:~# ls /etc/pve/qemu-server
root@proxmox:~# ls /etc/pve/lxc
101.conf 102.conf 105.conf 106.conf 107.conf 108.conf 110.conf
root@proxmox:~# ls /etc/pve/nodes
proxmox
root@proxmox:~#

mira

mira

Proxmox Staff Member


  • #7

You already have a container on that node. If you want to keep it, make a backup. Then delete the container, join the node to the cluster and restore the container.

  • #8

@mira may I ask on what node? On the pmx2 one? Or on the host node.

mira

mira

Proxmox Staff Member


  • #9

On the one you want to join, as the error message mentions. You can’t join a node to a cluster if the node has guests.

  • #10

hello I have some problem,

I have two node the first have a lot VM and the host name is Proxmox
On the proxmox host I have make a cluster.
now I’d like to join another node named proxmox2 but when i try there is error:
* this host already contains virtual guests

below result of command:

root@proxmox:~# ls /etc/pve/qemu-server
100.conf 101.conf 102.conf 103.conf 104.conf 105.conf 106.conf 110.conf 112.conf
root@proxmox:~# ls /etc/pve/lxc
root@proxmox:~# ls /etc/pve/nodes
proxmox
root@proxmox:~#

root@proxmox2:~# ls /etc/pve/qemu-server
root@proxmox2:~# ls /etc/pve/lxc
root@proxmox2:~# ls /etc/pve/nodes
proxmox2
root@proxmox2:~#

what can I d for fix ?

mira

mira

Proxmox Staff Member


  • #11

You can backup all your VMs on that node. Afterwards remove them from the node and join the node to the cluster. Once everything is working you can restore the VMs on the node.
Please make sure the backups are working before you delete the VMs.

  • #12

each night node backs up to nas ;)

  • #13

On the one you want to join, as the error message mentions. You can’t join a node to a cluster if the node has guests.

This is a bad design. Consider making it possible to join when guests exist on the joining node.

Last edited: Dec 27, 2020

  • #14

This is a bad design. Consider making it possible to join when guests exist on the joining node.

I also don’t understand why this limitation.

Will this ever be overcome?

mira

mira

Proxmox Staff Member


  • #16

No, this won’t be changed.
One of the reasons why this limitation exists, is that there can be a conflict of VM/CT IDs.

  • #17

No, this won’t be changed.
One of the reasons why this limitation exists, is that there can be a conflict of VM/CT IDs.

yes, I know this, but PVE team can compare what’s in the cluster and what’s in the new joining node, rename VM/CT IDs and disk names to not be what’s in the cluster, so when joining it’s unique.

Only workaround is to backup every VM/CT and restore after joining (oh, and dealing with VM/CT IDs)

  • #18

That’s what i did to sort this out:

— stop all the VMs on the joining node
— move the VMs descriptors within /etc/pve/nodes/[NODENAME]/qemu-server to /home/_cluster_bck
— join the cluster
— copy the backup VMs descriptors back to /etc/pve/nodes/[NODENAME]/qemu-server

done =)

fabian


  • #19

yes, I know this, but PVE team can compare what’s in the cluster and what’s in the new joining node, rename VM/CT IDs and disk names to not be what’s in the cluster, so when joining it’s unique.

Only workaround is to backup every VM/CT and restore after joining (oh, and dealing with VM/CT IDs)

it’s not that easy — changing guest IDs involves storage operations, storage config entries can also conflict, as could stuff like CPU models, firewall groups, backup jobs — and that’s just from the top of my head without actually thinking through all the corner cases that might pop up.

you can already trivially work around this limitation manually if you know what you are doing (backup relevant content from /etc/pve, remove guest configs, join, restore content as needed), but there is so much that can go wrong that this will not be automated. 99% of the time a node is freshly installed, then joined to an existing cluster while empty.

  • #20

Sure thing Fabian, I wouldn’t do this in production that’s for sure.. But see here I’ve just made some stupid mistakes (rm -r /etc/pve/nodes/) while reconfiguring the cluster etc and well all the VMs were locally hosted or on NFS.. And I needed a few VMs to control underneath hardware, hence not much of a choice… in my home lab setup this hasn’t gave me any issues really..

And sure thing, backup, backup backup..

Size:
a
a
a

2021 June 04

Что за СС на панели задач?

Это?

Camtasia.
Screen recorder.

2021 June 05

скорее всего кривая цепочка сертификатов

а еще я редирекчу 443 на 8006

Доброго дня, есть два сервера H1 H2 оба сервера расположены в hetzner(железные) на H2 был инициализирован кластер, все VM расположены на H1, при добавлении в кластер H1 получаю ошибку

detected the following error(s):
* this host already contains virtual guests
TASK ERROR: Check if node may join a cluster failed!

что требуется еще очистить, я не могу понять, на H2 нет VM?

Добавляемые в кластер должны быть чистые

Надо на h1 инициировать кластер

this host already contains virtual guests
написано же 🙂

Выключи виртуалки все.
Сохрани конфы всех виртуалок в отдельное место…. Удали в каталоге pve файлы conf, которые сохранил.

Если винты обозваны везде одинаково, то добавишь в кластер без проблем… Потом верни конфы файлы от виртуалок, в нужную папку ноды Н* , в pve каталоге и будет счастье

Сам собирал 3 ноды так в кластер..

И номера VM  должны быть на обоих сервера РАЗНЫЕ

Привет
Проблема решена,
Все работает

ESET blokiruet SSL
Нужно было отключить проверки в nod 32 SSL.

Да, по этой ошибке гуглится толкьо одно решение, думал есть альтернативы без отключения VM в кластере

так создавай кластер на правильной машине

присоединяй пустую к кластеру, а не наоборот

crimsonCoder

crimsonCoder

4 дня назад

So does a proxmox cluster increase availability and stability or reduce the time for task completion by separating out the tasks, like, let’s say, machine learning and data science calculations? Or is it both tasks are separated across the node, and high availability is there by design?


HAMBURG GHETTO RAP

HAMBURG GHETTO RAP

1 месяц назад

didnt work at all bro, im quiting my IT job now


enticed2zeitgeist

enticed2zeitgeist

2 месяца назад

Incredible. How is promox free and open!

How the hell can it do this while the VM is active. At what point in time does the virtual kernel leave one CPU and start on the other?


haider khan

haider khan

3 месяца назад

Great sir, I have one confusion, I changes IP for one of them server, then cluster will break or not, can you explain litle bit more?


Meer Hassan

Meer Hassan

4 месяца назад

according this tutorial when i am trying to join a cluster i am getting this error message below,

(detected the following error(s):

* this host already contains virtual guests

TASK ERROR: Check if node may join a cluster failed!)

How Can i solved this problem?? need some advice….

Thanks in Advance…


Fuseteam ꧂

Fuseteam ꧂

5 месяцев назад

Hmmm so we don’t need to set up corosync and passwordless login between the two uhh three?


iBlaze🏳️‍🌈⃠

iBlaze🏳️‍🌈⃠

5 месяцев назад

Thats nice, thanks


Nya Nates

Nya Nates

5 месяцев назад

Nice vid. I’m trying to set up a similar PM cluster but one of them can’t join. QQ: Do all the nodes in a Proxmox cluster need to be at the same version? Not the case with these 2x.


Roger Ramirez

Roger Ramirez

8 месяцев назад

thank you, very cool and informative!!!


le chaldon

le chaldon

8 месяцев назад

I plan on working my way through these videos and creating ansible playbooks/roles for these tasks in proxmox. How difficult do you think that will be to achieve clustering+ha in ansible and has anyone already done it? Is there a role to automate this deployment?


Tokoia Oben

Tokoia Oben

10 месяцев назад

Thank you very much. You created second network (brides) on the pve2 and pve3 to match the network settings on the pve1, is that requirement b4 you that live migrate ? I have several VMs on one server and each VM assinged to different vlan. Creating other vlan networks on other servers (or pves) is not possible since I have only few intherfaces on the node.


Muhammad Ejaz

Muhammad Ejaz

10 месяцев назад

Thanks for sharing such a great experience. very nice explanation. Sir Please include class on Replication (live and scheduled replication). Related to Clustering please tell me can we share resources of servers in clusters (i.e CPU, RAM or HDDs) in case one server utilizing full resources and we need to increase it CPUs or RAM can we take these from other server in the cluster??? or this can be done by some other method? I really appreciate your Hard work. Thanks


Psionic P.

Psionic P.

10 месяцев назад

Why are you using a bridge for cluster network?


Brian Thomas

Brian Thomas

11 месяцев назад

Hello. Great video. Question: What benefits would you have on putting Proxmox on different devices? Aside from high availability.


Somchai Sichon

Somchai Sichon

11 месяцев назад

How to access promox cluster in case of the Primary server failed ?


Jordan

Jordan

11 месяцев назад

Jay, is it possible to migrate a VM that is using shared storage, onto another nodes local storage?


Wallis Short

Wallis Short

1 год назад

Hi Jay — really enjoying your videos. Just clarification on the cluster — You actually have to apply an IP address for each network you create for the bridge. You created networks and you didnt set up the cluster in a different network but rather created the cluster in the mgmnt network and not cluster network. I have 4 networks (mgmnt, cluster, VM’s and Ceph) and I followed your example but found I couldn’t add in the cluster network as it needed an IP address and not network address. If you see your vmbr1 bridge under networks it has an IP address and not a network address. As soon as I changed mine, i could add in the cluster network and all worked fine — Just my 2c :)


Voice of Treason

Voice of Treason

1 год назад

I think the novelty of the matrix in the terminal scripts really wore off by now


mohammed saif

mohammed saif

1 год назад

Do i need to keep identical hardware for the migration support.


Jason Li

Jason Li

1 год назад

Love it. Thanks so much for the help.


Время прочтения
13 мин

Просмотры 104K

За последние несколько лет я очень тесно работаю с кластерами Proxmox: многим клиентам требуется своя собственная инфраструктура, где они могут развивать свой проект. Именно поэтому я могу рассказать про самые распространенные ошибки и проблемы, с которыми также можете столкнуться и вы. Помимо этого мы конечно же настроим кластер из трех нод с нуля.

Proxmox кластер может состоять из двух и более серверов. Максимальное количество нод в кластере равняется 32 штукам. Наш собственный кластер будет состоять из трех нод на мультикасте (в статье я также опишу, как поднять кластер на уникасте — это важно, если вы базируете свою кластерную инфраструктуру на Hetzner или OVH, например). Коротко говоря, мультикаст позволяет осуществлять передачу данных одновременно на несколько нод. При мультикасте мы можем не задумываться о количестве нод в кластере (ориентируясь на ограничения выше).

Сам кластер строится на внутренней сети (важно, чтобы IP адреса были в одной подсети), у тех же Hetzner и OVH есть возможность объединять в кластер ноды в разных датацентрах с помощью технологии Virtual Switch (Hetzner) и vRack (OVH) — о Virtual Switch мы также поговорим в статье. Если ваш хостинг-провайдер не имеет похожие технологии в работе, то вы можете использовать OVS (Open Virtual Switch), которая нативно поддерживается Proxmox, или использовать VPN. Однако, я рекомендую в данном случае использовать именно юникаст с небольшим количеством нод — часто возникают ситуации, где кластер просто “разваливается” на основе такой сетевой инфраструктуры и его приходится восстанавливать. Поэтому я стараюсь использовать именно OVH и Hetzner в работе — подобных инцидентов наблюдал в меньшем количестве, но в первую очередь изучайте хостинг-провайдера, у которого будете размещаться: есть ли у него альтернативная технология, какие решения он предлагает, поддерживает ли мультикаст и так далее.

Установка Proxmox

Proxmox может быть установлен двумя способами: ISO-инсталлятор и установка через shell. Мы выбираем второй способ, поэтому установите Debian на сервер.

Перейдем непосредственно к установке Proxmox на каждый сервер. Установка предельно простая и описана в официальной документации здесь.

Добавим репозиторий Proxmox и ключ этого репозитория:

echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg
chmod +r /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg  # optional, if you have a changed default umask

Обновляем репозитории и саму систему:

apt update && apt dist-upgrade

После успешного обновления установим необходимые пакеты Proxmox:

apt install proxmox-ve postfix open-iscsi

Заметка: во время установки будет настраиваться Postfix и grub — одна из них может завершиться с ошибкой. Возможно, это будет вызвано тем, что хостнейм не резолвится по имени. Отредактируйте hosts записи и выполните apt-get update

С этого момента мы можем авторизоваться в веб-интерфейс Proxmox по адресу https://<внешний-ip-адрес>:8006 (столкнетесь с недоверенным сертификатом во время подключения).


Изображение 1. Веб-интерфейс ноды Proxmox

Установка Nginx и Let’s Encrypt сертификата

Мне не очень нравится ситуация с сертификатом и IP адресом, поэтому я предлагаю установить Nginx и настроить Let’s Encrypt сертификат. Установку Nginx описывать не буду, оставлю лишь важные файлы для работы Let’s encrypt сертификата:

/etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}

Команда для выпуска SSL сертификата:

certbot certonly --agree-tos --email sos@livelinux.info --webroot -w /var/lib/letsencrypt/ -d proxmox1.domain.name

Конфигурация сайта в NGINX

upstream proxmox1.domain.name  {
      server 127.0.0.1:8006;
}

server {
    listen 80;
    server_name proxmox1.domain.name;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl;

    server_name  proxmox1.domain.name;

    access_log  /var/log/nginx/proxmox1.domain.name.access.log;
    error_log  /var/log/nginx/proxmox1.domain.name.error.log;

    include snippets/letsencrypt.conf;

    ssl_certificate /etc/letsencrypt/live/proxmox1.domain.name/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/proxmox1.domain.name/privkey.pem;

    location / {
        proxy_pass  https://proxmox1.domain.name;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503                                                                              http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
   
}

Не забываем после установки SSL сертификата поставить его на автообновление через cron:

0 */12 * * * /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"

Отлично! Теперь мы можем обращаться к нашему домену по HTTPS.

Заметка: чтобы отключить информационное окно о подписке, выполните данную команду:

sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

Сетевые настройки

Перед подключением в кластер настроим сетевые интерфейсы на гипервизоре. Стоит отметить, что настройка остальных нод ничем не отличается, кроме IP адресов и названия серверов, поэтому дублировать их настройку я не буду.

Создадим сетевой мост для внутренней сети, чтобы наши виртуальные машины (в моем варианте будет LXC контейнер для удобства) во-первых, были подключены к внутренней сети гипервизора и могли взаимодействовать друг с другом. Во-вторых, чуть позже мы добавим мост для внешней сети, чтобы виртуальные машины имели свой внешний IP адрес. Соответственно, контейнеры будут на данный момент за NAT’ом у нас.

Работать с сетевой конфигурацией Proxmox можно двумя способами: через веб-интерфейс или через конфигурационный файл /etc/network/interfaces. В первом варианте вам потребуется перезагрузка сервера (или можно просто переименовать файл interfaces.new в interfaces и сделать перезапуск networking сервиса через systemd). Если вы только начинаете настройку и еще нет виртуальных машин или LXC контейнеров, то желательно перезапускать гипервизор после изменений.

Теперь создадим сетевой мост под названием vmbr1 во вкладке network в веб-панели Proxmox.


Изображение 2. Сетевые интерфейсы ноды proxmox1


Изображение 3. Создание сетевого моста


Изображение 4. Настройка сетевой конфигурации vmbr1

Настройка предельно простая — vmbr1 нам нужен для того, чтобы инстансы получали доступ в Интернет.

Теперь перезапускаем наш гипервизор и проверяем, создался ли интерфейс:


Изображение 5. Сетевой интерфейс vmbr1 в выводе команды ip a

Заметьте: у меня уже есть интерфейс ens19 — это интерфейс с внутренней сетью, на основе ее будет создан кластер.

Повторите данные этапы на остальных двух гипервизорах, после чего приступите к следующему шагу — подготовке кластера.

Также важный этап сейчас заключается во включении форвардинга пакетов — без нее инстансы не будут получать доступ к внешней сети. Открываем файл sysctl.conf и изменяем значение параметра net.ipv4.ip_forward на 1, после чего вводим следующую команду:

sysctl -p

В выводе вы должны увидеть директиву net.ipv4.ip_forward (если не меняли ее до этого)

Настройка Proxmox кластера

Теперь перейдем непосредственно к кластеру. Каждая нода должна резолвить себя и другие ноды по внутренней сети, для этого требуется изменить значения в hosts записях следующих образом (на каждой ноде должна быть запись о других):

172.30.0.15 proxmox1.livelinux.info proxmox1
172.30.0.16 proxmox2.livelinux.info proxmox2
172.30.0.17 proxmox3.livelinux.info proxmox3

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

Создадим кластер через веб-панель:


Изображение 6. Создание кластера через веб-интерфейс

После создания кластера нам необходимо получить информацию о нем. Переходим в ту же вкладку кластера и нажимаем кнопку “Join Information”:


Изображение 7. Информация о созданном кластере

Данная информация пригодится нам во время присоединения второй и третьей ноды в кластер. Подключаемся к второй ноде и во вкладке Cluster нажимаем кнопку “Join Cluster”:


Изображение 8. Подключение к кластеру ноды

Разберем подробнее параметры для подключения:

  1. Peer Address: IP адрес первого сервера (к тому, к которому мы подключаемся)
  2. Password: пароль первого сервера
  3. Fingerprint: данное значение мы получаем из информации о кластере


Изображение 9. Состояние кластера после подключения второй ноды

Вторая нода успешно подключена! Однако, такое бывает не всегда. Если вы неправильно выполните шаги или возникнут сетевые проблемы, то присоединение в кластер будет провалено, а сам кластер будет “развален”. Лучшее решение — это отсоединить ноду от кластера, удалить на ней всю информацию о самом кластере, после чего сделать перезапуск сервера и проверить предыдущие шаги. Как же безопасно отключить ноду из кластера? Для начала удалим ее из кластера на первом сервере:

pvecm del proxmox2

После чего нода будет отсоединена от кластера. Теперь переходим на сломанную ноду и отключаем на ней следующие сервисы:

systemctl stop pvestatd.service
systemctl stop pvedaemon.service
systemctl stop pve-cluster.service
systemctl stop corosync
systemctl stop pve-cluster

Proxmox кластер хранит информацию о себе в sqlite базе, ее также необходимо очистить:

sqlite3 /var/lib/pve-cluster/config.db
delete from tree where name = 'corosync.conf';
.quit

Данные о коросинке успешно удалены. Удалим оставшиеся файлы, для этого необходимо запустить кластерную файловую систему в standalone режиме:

pmxcfs -l
rm /etc/pve/corosync.conf
rm /etc/corosync/*
rm /var/lib/corosync/*
rm -rf /etc/pve/nodes/*

Перезапускаем сервер (это необязательно, но перестрахуемся: все сервисы по итогу должны быть запущены и работать корректно. Чтобы ничего не упустить делаем перезапуск). После включения мы получим пустую ноду без какой-либо информации о предыдущем кластере и можем начать подключение вновь.

Установка и настройка ZFS

ZFS — это файловая система, которая может использоваться совместно с Proxmox. С помощью нее можно позволить себе репликацию данных на другой гипервизор, миграцию виртуальной машины/LXC контейнера, доступ к LXC контейнеру с хост-системы и так далее. Установка ее достаточно простая, приступим к разбору. На моих серверах доступно три SSD диска, которые мы объединим в RAID массив.

Добавляем репозитории:

nano /etc/apt/sources.list.d/stretch-backports.list

deb http://deb.debian.org/debian stretch-backports main contrib
deb-src http://deb.debian.org/debian stretch-backports main contrib

nano /etc/apt/preferences.d/90_zfs

Package: libnvpair1linux libuutil1linux libzfs2linux libzpool2linux spl-dkms zfs-dkms zfs-test zfsutils-linux zfsutils-linux-dev zfs-zed
Pin: release n=stretch-backports
Pin-Priority: 990

Обновляем список пакетов:

apt update

Устанавливаем требуемые зависимости:

 apt install --yes dpkg-dev linux-headers-$(uname -r) linux-image-amd64

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

apt-get install zfs-dkms zfsutils-linux

Если вы в будущем получите ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first, то выполните следующую команду:

modprobe fuse

Теперь приступим непосредственно к настройке. Для начала нам требуется отформатировать SSD и настроить их через parted:

Настройка /dev/sda

parted /dev/sda

(parted) print
Model: ATA SAMSUNG MZ7LM480 (scsi)
Disk /dev/sda: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4296MB  4295MB  primary               raid
 2      4296MB  4833MB  537MB   primary               raid
 3      4833MB  37,0GB  32,2GB  primary               raid

(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? zfs
Start? 33GB
End? 480GB
Warning: You requested a partition from 33,0GB to 480GB (sectors 64453125..937500000).
The closest location we can manage is 37,0GB to 480GB (sectors 72353792..937703087).
Is this still acceptable to you?
Yes/No? yes

Аналогичные действия необходимо произвести и для других дисков. После того, как все диски подготовлены, приступаем к следующему шагу:

zpool create -f -o ashift=12 rpool /dev/sda4 /dev/sdb4 /dev/sdc4

Мы выбираем ashift=12 из соображений производительности — это рекомендация самого zfsonlinux, подробнее про это можно почитать в их вики: github.com/zfsonlinux/zfs/wiki/faq#performance-considerations

Применим некоторые настройки для ZFS:

zfs set atime=off rpool
zfs set compression=lz4 rpool
zfs set dedup=off rpool
zfs set snapdir=visible rpool
zfs set primarycache=all rpool
zfs set aclinherit=passthrough rpool
zfs inherit acltype rpool
zfs get -r acltype rpool
zfs get all rpool | grep compressratio

Теперь нам надо рассчитать некоторые переменные для вычисления zfs_arc_max, я это делаю следующим образом:

mem =`free --giga | grep Mem | awk '{print $2}'`
partofmem=$(($mem/10))
echo $setzfscache > /sys/module/zfs/parameters/zfs_arc_max
grep c_max /proc/spl/kstat/zfs/arcstats

zfs create rpool/data
cat > /etc/modprobe.d/zfs.conf << EOL
options zfs zfs_arc_max=$setzfscache
EOL

echo $setzfscache > /sys/module/zfs/parameters/zfs_arc_max
grep c_max /proc/spl/kstat/zfs/arcstats

В данный момент пул успешно создан, также мы создали сабпул data. Проверить состояние вашего пула можно командой zpool status. Данное действие необходимо провести на всех гипервизорах, после чего приступить к следующему шагу.

Теперь добавим ZFS в Proxmox. Переходим в настройки датацентра (именно его, а не отдельной ноды) в раздел «Storage», кликаем на кнопку «Add» и выбираем опцию «ZFS», после чего мы увидим следующие параметры:

ID: Название стораджа. Я дал ему название local-zfs
ZFS Pool: Мы создали rpool/data, его и добавляем сюда.
Nodes: указываем все доступные ноды

Данная команда создает новый пул с выбранными нами дисками. На каждом гипервизоре должен появится новый storage под названием local-zfs, после чего вы сможете смигрировать свои виртуальные машины с локального storage на ZFS.

Репликация инстансов на соседний гипервизор

В кластере Proxmox есть возможность репликации данных с одного гипервизора на другой: данный вариант позволяет осуществлять переключение инстанса с одного сервера на другой. Данные будут актуальны на момент последней синхронизации — ее время можно выставить при создании репликации (стандартно ставится 15 минут). Существует два способа миграции инстанса на другую ноду Proxmox: ручной и автоматический. Давайте рассмотрим в первую очередь ручной вариант, а в конце я предоставлю вам Python скрипт, который позволит создавать виртуальную машину на доступном гипервизоре при недоступности одного из гипервизоров.

Для создания репликации необходимо перейти в веб-панель Proxmox и создать виртуальную машину или LXC контейнер. В предыдущих пунктах мы с вами настроили vmbr1 мост с NAT, что позволит нам выходить во внешнюю сеть. Я создам LXC контейнер с MySQL, Nginx и PHP-FPM с тестовым сайтом, чтобы проверить работу репликации. Ниже будет пошаговая инструкция.

Загружаем подходящий темплейт (переходим в storage —> Content —> Templates), пример на скриншоте:


Изображение 10. Local storage с шаблонами и образами ВМ

Нажимаем кнопку “Templates” и загружаем необходимый нам шаблон LXC контейнера:


Изображение 11. Выбор и загрузка шаблона

Теперь мы можем использовать его при создании новых LXC контейнеров. Выбираем первый гипервизор и нажимаем кнопку “Create CT” в правом верхнем углу: мы увидим панель создания нового инстанса. Этапы установки достаточно просты и я приведу лишь конфигурационный файл данного LXC контейнера:

arch: amd64
cores: 3
memory: 2048
nameserver: 8.8.8.8
net0: name=eth0,bridge=vmbr1,firewall=1,gw=172.16.0.1,hwaddr=D6:60:C5:39:98:A0,ip=172.16.0.2/24,type=veth
ostype: centos
rootfs: local:100/vm-100-disk-1.raw,size=10G
swap: 512
unprivileged: 

Контейнер успешно создан. К LXC контейнерам можно подключаться через команду pct enter , я также перед установкой добавил SSH ключ гипервизора, чтобы подключаться напрямую через SSH (в PCT есть небольшие проблемы с отображением терминала). Я подготовил сервер и установил туда все необходимые серверные приложения, теперь можно перейти к созданию репликации.

Кликаем на LXC контейнер и переходим во вкладку “Replication”, где создаем параметр репликации с помощью кнопки “Add”:


Изображение 12. Создание репликации в интерфейсе Proxmox


Изображение 13. Окно создания Replication job

Я создал задачу реплицировать контейнер на вторую ноду, как видно на следующем скриншоте репликация прошла успешно — обращайте внимание на поле “Status”, она оповещает о статусе репликации, также стоит обращать внимание на поле “Duration”, чтобы знать, сколько длится репликация данных.


Изображение 14. Список синхронизаций ВМ

Теперь попробуем смигрировать машину на вторую ноду с помощью кнопки “Migrate”

Начнется миграция контейнера, лог можно просмотреть в списке задач — там будет наша миграция. После этого контейнер будет перемещен на вторую ноду.

Ошибка “Host Key Verification Failed”

Иногда при настройке кластера может возникать подобная проблема — она мешает мигрировать машины и создавать репликацию, что нивелирует преимущества кластерных решений. Для исправления этой ошибки удалите файл known_hosts и подключитесь по SSH к конфликтной ноде:

/usr/bin/ssh -o 'HostKeyAlias=proxmox2' root@172.30.0.16

Примите Hostkey и попробуйте ввести эту команду, она должна подключить вас к серверу:

/usr/bin/ssh -o 'BatchMode=yes' -o 'HostKeyAlias=proxmox2' root@172.30.0.16

Особенности сетевых настроек на Hetzner

Переходим в панель Robot и нажимаем на кнопку “Virtual Switches”. На следующей странице вы увидите панель создания и управления интерфейсов Virtual Switch: для начала его необходимо создать, а после “подключить” выделенные сервера к нему. В поиске добавляем необходимые сервера для подключения — их не не нужно перезагружать, только придется подождать до 10-15 минут, когда подключение к Virtual Switch будет активно.

После добавления серверов в Virtual Switch через веб-панель подключаемся к серверам и открываем конфигурационные файлы сетевых интерфейсов, где создаем новый сетевой интерфейс:

auto enp4s0.4000
iface enp4s0.4000 inet static
        address  10.1.0.11/24
        mtu 1400
        vlan-raw-device enp4s0

Давайте разберем подробнее, что это такое. По своей сути — это VLAN, который подключается к единственному физическому интерфейсу под названием enp4s0 (он у вас может отличаться), с указанием номера VLAN — это номер Virtual Switch’a, который вы создавали в веб-панели Hetzner Robot. Адрес можете указать любой, главное, чтобы он был локальный.

Отмечу, что конфигурировать enp4s0 следует как обычно, по сути он должен содержать внешний IP адрес, который был выдан вашему физическому серверу. Повторите данные шаги на других гипервизорах, после чего перезагрузите на них networking сервис, сделайте пинг до соседней ноды по IP адресу Virtual Switch. Если пинг прошел успешно, то вы успешно установили соединение между серверами по Virtual Switch.

Я также приложу конфигурационный файл sysctl.conf, он понадобится, если у вас будут проблемы с форвардингом пакетом и прочими сетевыми параметрами:

net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.ip_forward=1
net.ipv4.conf.all.send_redirects=0

Добавление IPv4 подсети в Hetzner

Перед началом работ вам необходимо заказать подсеть в Hetzner, сделать это можно через панель Robot.

Создадим сетевой мост с адресом, который будет из этой подсети. Пример конфигурации:

auto vmbr2
iface vmbr2 inet static
        address ip-address
        netmask 29
        bridge-ports none
        bridge-stp off
        bridge-fd 0

Теперь переходим в настройки виртуальной машины в Proxmox и создаем новый сетевой интерфейс, который будет прикреплен к мосту vmbr2. Я использую LXC контейнер, его конфигурацию можно изменять сразу же в Proxmox. Итоговая конфигурация для Debian:

auto eth0
iface eth0 inet static
        address ip-address
        netmask 26
        gateway bridge-address

Обратите внимание: я указал 26 маску, а не 29 — это требуется для того, чтобы сеть на виртуальной машине работала.

Добавление IPv4 адреса в Hetzner

Ситуация с одиночным IP адресом отличается — обычно Hetzner дает нам дополнительный адрес из подсети сервера. Это означает, что вместо vmbr2 нам требуется использоваться vmbr0, но на данный момент его у нас нет. Суть в том, что vmbr0 должен содержать IP адрес железного сервера (то есть использовать тот адрес, который использовал физический сетевой интерфейс enp2s0). Адрес необходимо переместить на vmbr0, для этого подойдет следующая конфигурация (советую заказать KVM, чтобы в случае чего возобновить работу сети):

auto enp2s0
iface enp2s0 inet manual

auto vmbr0
iface vmbr0 inet static
        address  ip-address
        netmask  255.255.255.192
        gateway  ip-gateway
        bridge-ports enp2s0
        bridge-stp off
        bridge-fd 0

Перезапустите сервер, если это возможно (если нет, перезапустите сервис networking), после чего проверьте сетевые интерфейсы через ip a:

2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000
    link/ether 44:8a:5b:2c:30:c2 brd ff:ff:ff:ff:ff:ff

Как здесь видно, enp2s0 подключен к vmbr0 и не имеет IP адрес, так как он был переназначен на vmbr0.

Теперь в настройках виртуальной машины добавляем сетевой интерфейс, который будет подключен к vmbr0. В качестве gateway укажите адрес, прикрепленный к vmbr0.

В завершении

Надеюсь, что данная статья пригодится вам, когда вы будете настраивать Proxmox кластер в Hetzner. Если позволит время, то я расширю статью и добавлю инструкцию для OVH — там тоже не все очевидно, как кажется на первый взгляд. Материал получился достаточно объемным, если найдете ошибки, то, пожалуйста, напишите в комментарии, я их исправлю. Всем спасибо за уделенное внимание.

Автор: Илья Андреев, под редакцией Алексея Жадан и команды «Лайв Линукс»

 

21.11.2017
12:50:25

https://habrahabr.ru/post/154235/

Google

 

Dmitry

21.11.2017
12:50:50

dd без опции direct показывает лишь скорость кеша — не более. В некоторых конфигурациях вы можете получать линейную скорость без кеша выше, чем с кешем. В некоторых вы будете получать сотни мегабайт в секунду, при линейной производительности в единицы мегабайт.

 

Konstantin

21.11.2017
12:52:23

вот я включил барьер, заметно куда более. Это нормальная разница?

 

Dmitry

21.11.2017
12:53:14

что пишет дд и куда в твоем случае?

 

Konstantin

21.11.2017
12:53:59

это графики kvm дисков и Postgres, не дд

 

Dmitry

21.11.2017
12:56:57

ну с nobarrier будет быстрее явно

 

Konstantin

21.11.2017
12:57:01

т.е. там и нагрузки то нет

 

Dmitry

21.11.2017
12:57:19

Google

 

Dmitry

21.11.2017
12:57:29

нормально что такая разница?

 

Konstantin

21.11.2017
12:57:36

базы просто ложатся при небольшой записи

транзакции до 1-3сек из-за IOwait

я перенёс вирт диск на локальное хранилище, за BBU, там можно выключить барьер то, а вот с цефом я не пойму.. много кешей, я запутался

 

Ecklory

22.11.2017
09:07:57

Доброго времени суток.
У кого-то есть знакомые юристы/адвокаты специализирующиеся в IT? Есть пара вопросов, могу озвучить сюда.
Сорян, что не по теме

 

Dmitry

22.11.2017
09:11:10

лучше поискать там, где народу поболе

 

Ecklory

22.11.2017
09:11:41

https://pastebin.com/Kqrk0fji

 

Dmitry

22.11.2017
09:46:52

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

 

Ecklory

22.11.2017
09:48:35

не надо по чатам ходить

На самом деле… дали вполне хороший совет. Запись устного диалога, при этом в начале разговора уведомить собеседника о том, что идёт запись. В дальнейшем запись приложить к делу.

 

Dmitry

22.11.2017
09:49:24

 

Ecklory

22.11.2017
09:50:11

Да и там работают очень грамотные люди, уже работал с ними

 

Andrey

22.11.2017
09:50:35

 

Ecklory

22.11.2017
09:51:33

Google

 

Александр

22.11.2017
09:53:47

Какой демон отвечате в проксе за веб?

Я уже задавал такой вопрос помоему

 

Dmitry

22.11.2017
09:54:05

 

Александр

22.11.2017
09:54:34

 

Georgii

22.11.2017
09:56:58

 

Nick

22.11.2017
09:57:05

 

Georgii

22.11.2017
09:57:42

по проксмоксу, ктонибудь давал клиентам дуступ к морде ? или там с бесопасностью совсем плохо ?

или в личный кабинет через api прикручивать

 

Nick

22.11.2017
09:58:21

«нас все время кидает подрядчик, но мы даем ему новые заказы и платим деньги по устным договоренностям»
Смешно

 

Ecklory

22.11.2017
09:59:05

 

Nick

22.11.2017
10:00:21

Дуло пистолета, например… это точно к УК относится

Если в договоре не прописана ответственность исполнителя — то максимум, что вы можете сделать — это вернуть деньги, если контора еще жива. Да и то шансов не много. А если нет договора и деньги платились на частное лицо, например — то шансы, мягко говоря, ничтожны

Презерватив придуман чтобы не думать о последствиях. Договор придуман для того же самого. Если презерватив плохой — это все может плохо кончится

 

Ecklory

22.11.2017
10:04:03

 

Nick

22.11.2017
10:04:04

Если это частное лицо и выплаты были после апреля — то до подачи декларации ндфл3 он имеет полное право жить спокойно аж до апреля следующего года…

Это по поводу налогов
На счет мошенничества — возможно и прокатит, не знаю. Но всякие стоны про упущенную прибыль — это в пользу бедных. Короче на юристов придется потратиться :)

 

Ecklory

22.11.2017
10:17:12

@UnixGuru
Спасибо за советы/ответы. Учту

 

Artem

22.11.2017
10:17:59

Google

 

Artem

22.11.2017
10:18:09

подскажите как чекнуть версию овирта на хосте ?

обновялся кто с 3й на 4ю версию ?

 

Александр

22.11.2017
10:22:40

 

Artem

22.11.2017
10:23:06

думаю обновится гна актуальную версию

есть где то 3.1 в клатсере

Admin

 

Artem

22.11.2017
10:23:24

вот и думаю гладко ли пройдет все

 

Alexander

22.11.2017
16:56:16

как убить «залипшую» вм?
«залипла» в статусе » in shutdown»
virsh destroy не отрабатывает. pid этой визит в статусе zombie

 

Georgii

22.11.2017
17:18:23

 

Dan

22.11.2017
17:18:43

хотя если там zstate то все плохо

 

Старый

22.11.2017
17:19:16

 

Dan

22.11.2017
17:20:14

только что наткнулся на баг с qemu и внутренними снепшотами, думаю скоро починят, разрабы слегка шокированы этим глюком

 

Старый

22.11.2017
17:20:49

 

Dan

22.11.2017
17:22:03

 

Старый

22.11.2017
17:22:30

Google

 

Старый

22.11.2017
17:23:01

на центоси у меня оракл нормально не поднялся

 

Dan

22.11.2017
17:23:24

 

Alexander

22.11.2017
17:29:13

 

Dan

22.11.2017
17:31:58

@alexk24 если родителя нет то процесс должен унаследовать инит

 

Alexander

22.11.2017
17:41:18

 

Dan

22.11.2017
17:46:30

 

Stanislav

22.11.2017
18:04:57

 

Andrey

23.11.2017
13:54:18

Ребят, я тут похоже сотворил хуйню. Было 2 сервака с пятым проксом

Я собрал из них кластер и на одном из серверов пропали все вирты из списка, но я вижу их в списке процессов в шеле.

Реально ли это поправить?

 

Yaroslav

23.11.2017
13:55:12

 

Andrey

23.11.2017
13:55:50

 

Roman

23.11.2017
13:56:01

 

Yaroslav

23.11.2017
13:56:13

может веб-морда отвалилась.

 

Andrey

23.11.2017
13:57:06

root@prox2:~# pvecm add prox1.somelocalnetwork
detected the following error(s):
* this host already contains virtual guests

root@prox2:~# pvecm add prox1.somelocalnetwork -f
The authenticity of host ‘prox1.somelocalnetwork (10.0.0.16)’ can’t be established.
ECDSA key fingerprint is SHA256:ihPhZnFiembLDWCgEFfw3T5tvv4qAmbajWrcqzqyPHk.
Are you sure you want to continue connecting (yes/no)? yes
root@prox1.somelocalnetwork’s password:
copy corosync auth key
stopping pve-cluster service
backup old database
waiting for quorum…OK
generating node certificates
merge known_hosts file
restart services
successfully added node ‘prox2’ to cluster.

 

Roman

23.11.2017
13:59:53

при вводе в кластер очевидно затерлись конфиги из
/etc/pve/qemu-server/

из можно было бы легко восстановить, если взять из бэкапа

ну а без бэкапа, слажна…

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Dev error 6042 warzone
  • Dev error 6039
  • Dev error 6037
  • Detected problems with app native libraries как исправить
  • Detected following jvm error

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии