gyptazy / ProxLB

ProxLB - (Re)Balance VM Workloads Across Nodes in Proxmox Clusters. A Load Balancer for Proxmox - and more!
https://proxlb.de
GNU General Public License v3.0
138 stars 6 forks source link

feature: Add option to run migrations in parallel or sequentially #42

Closed gyptazy closed 1 month ago

gyptazy commented 1 month ago

feature: Add option to run migrations in parallel or sequentially

The newly introduced option parameter parallel_migrations (default: 1 [True] == enabled) provides the possibility to define if migrations should be performed in parallel. If this is set to 0, migration will be performed sequentially. During this, the API will be queried until the job is completed for the migration before starting the next migration.

Test:

<6> ProxLB: Info: [rebalancing-executor]: Rebalancing VM test09-fat02 from node virt01 to node virt03.
<6> ProxLB: Info: [rebalancing-executor]: Rebalancing will be performed sequentially.
<6> ProxLB: Info: [job-status-getter]: Getting job status for job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam:.
<6> ProxLB: Info: [job-status-getter]: {'pid': 647234, 'pstart': 15272242, 'id': '108', 'starttime': 1722752620, 'upid': 'UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam:', 'type': 'qmigrate', 'status': 'running', 'node': 'virt01', 'user': 'root@pam'}
<6> ProxLB: Info: [job-status-getter]: Validating job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: for the 1 run.
<6> ProxLB: Info: [job-status-getter]: Revalidating job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: in a next run.
<6> ProxLB: Info: [job-status-getter]: Getting job status for job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam:.
<6> ProxLB: Info: [job-status-getter]: {'id': '108', 'starttime': 1722752620, 'pid': 647234, 'pstart': 15272242, 'user': 'root@pam', 'upid': 'UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam:', 'type': 'qmigrate', 'status': 'running', 'node': 'virt01'}
<6> ProxLB: Info: [job-status-getter]: Validating job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: for the 2 run.
<6> ProxLB: Info: [job-status-getter]: Revalidating job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: in a next run.
<6> ProxLB: Info: [job-status-getter]: Getting job status for job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam:.
<6> ProxLB: Info: [job-status-getter]: {'id': '108', 'starttime': 1722752620, 'pid': 647234, 'pstart': 15272242, 'exitstatus': 'OK', 'user': 'root@pam', 'type': 'qmigrate', 'upid': 'UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam:', 'node': 'virt01', 'status': 'stopped'}
<6> ProxLB: Info: [job-status-getter]: Job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: for migration from virt01 terminiated succesfully.
<6> ProxLB: Info: [job-status-getter]: Job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: for migration from virt01 terminiated succesfully.
<6> ProxLB: Info: [job-status-getter]: Job UPID:virt01:0009E042:00E90932:66AF1E6C:qmigrate:108:root@pam: for migration from virt01 terminiated succesfully.
<6> ProxLB: Info: [rebalancing-executor]: Rebalancing VM test06-gyptazy01 from node virt02 to node virt03.
<6> ProxLB: Info: [rebalancing-executor]: Rebalancing will be performed sequentially.
<6> ProxLB: Info: [job-status-getter]: Getting job status for job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam:.
<6> ProxLB: Info: [job-status-getter]: {'upid': 'UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam:', 'status': 'running', 'starttime': 1722752630, 'pstart': 4637845, 'id': '105', 'type': 'qmigrate', 'pid': 216691, 'node': 'virt02', 'user': 'root@pam'}
<6> ProxLB: Info: [job-status-getter]: Validating job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: for the 1 run.
<6> ProxLB: Info: [job-status-getter]: Revalidating job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: in a next run.
<6> ProxLB: Info: [job-status-getter]: Getting job status for job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam:.
<6> ProxLB: Info: [job-status-getter]: {'upid': 'UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam:', 'starttime': 1722752630, 'status': 'running', 'id': '105', 'pstart': 4637845, 'node': 'virt02', 'user': 'root@pam', 'pid': 216691, 'type': 'qmigrate'}
<6> ProxLB: Info: [job-status-getter]: Validating job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: for the 2 run.
<6> ProxLB: Info: [job-status-getter]: Revalidating job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: in a next run.
<6> ProxLB: Info: [job-status-getter]: Getting job status for job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam:.
<6> ProxLB: Info: [job-status-getter]: {'id': '105', 'pstart': 4637845, 'status': 'stopped', 'starttime': 1722752630, 'upid': 'UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam:', 'exitstatus': 'OK', 'node': 'virt02', 'user': 'root@pam', 'pid': 216691, 'type': 'qmigrate'}
<6> ProxLB: Info: [job-status-getter]: Job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: for migration from virt02 terminiated succesfully.
<6> ProxLB: Info: [job-status-getter]: Job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: for migration from virt02 terminiated succesfully.
<6> ProxLB: Info: [job-status-getter]: Job UPID:virt02:00034E73:0046C495:66AF1E76:qmigrate:105:root@pam: for migration from virt02 terminiated succesfully.

Fixes: #41