ClusterConfig - це клас для налаштування операцій Docker кластера. Він дозволяє встановлювати стратегію виконання, рівень деталізації помилок, налаштовувати повторні спроби, встановлювати пріоритети вузлів та інші параметри кластера.
Sangezar\DockerClient\Config
public static function create(): self
Створює новий екземпляр конфігурації кластера.
ClusterConfigpublic function setExecutionStrategy(string $strategy): self
Встановлює стратегію виконання операцій на вузлах кластера.
$strategy - Стратегія виконання:
AbstractOperations::EXECUTION_SEQUENTIAL - послідовне виконанняAbstractOperations::EXECUTION_PARALLEL - паралельне виконанняInvalidParameterValueException - якщо вказана невідома стратегіяpublic function setErrorDetailLevel(string $level): self
Встановлює рівень деталізації помилок.
$level - Рівень деталізації:
AbstractOperations::ERROR_LEVEL_BASIC - базовий рівень (тільки повідомлення)AbstractOperations::ERROR_LEVEL_STANDARD - стандартний рівень (повідомлення, тип винятку, код)AbstractOperations::ERROR_LEVEL_DETAILED - детальний рівень (всі деталі, включаючи стек викликів)InvalidParameterValueException - якщо вказаний невідомий рівеньpublic function setRetryConfig(bool $enable, ?int $maxRetries = null, ?int $retryDelay = null, ?bool $exponentialBackoff = null): self
Налаштовує параметри повторних спроб при помилках.
$enable - Дозволити повторні спроби$maxRetries - Максимальна кількість спроб (за замовчуванням 3)$retryDelay - Початкова затримка між спробами в мілісекундах (за замовчуванням 1000)$exponentialBackoff - Чи використовувати експоненціальне зростання затримки між спробамиInvalidParameterValueException - якщо параметри неприпустиміpublic function setOperationTimeout(int $seconds): self
Встановлює таймаут для операцій вузлів кластера.
$seconds - Таймаут у секундахInvalidParameterValueException - якщо значення таймауту неприпустимеpublic function setNodePriority(string $nodeName, int $priority): self
Встановлює пріоритет для вузла.
$nodeName - Ім’я вузла$priority - Пріоритет (1 - найвищий)InvalidParameterValueException - якщо значення пріоритету неприпустимеpublic function setDefaultNodeTag(?string $tag): self
Встановлює тег за замовчуванням для операцій.
$tag - Тег для фільтрації вузлівpublic function addFailoverNode(string $nodeName): self
Додає вузол до списку резервних вузлів.
$nodeName - Ім’я вузла для використання у випадку збою основних вузлівInvalidParameterValueException - якщо ім’я вузла порожнєpublic function getExecutionStrategy(): string
Отримує поточну стратегію виконання.
public function getErrorDetailLevel(): string
Отримує поточний рівень деталізації помилок.
public function isRetryOnFailure(): bool
Перевіряє, чи дозволені повторні спроби.
true, якщо повторні спроби дозволені, false - якщо ніpublic function getMaxRetries(): int
Отримує максимальну кількість повторних спроб.
public function getRetryDelay(): int
Отримує затримку між повторними спробами.
public function isExponentialBackoff(): bool
Перевіряє, чи використовується експоненціальне зростання затримки.
true, якщо використовується експоненціальне зростання, false - якщо ніpublic function getOperationTimeout(): int
Отримує таймаут операцій.
public function getNodePriorities(): array
Отримує пріоритети вузлів.
public function getDefaultNodeTag(): ?string
Отримує тег за замовчуванням.
null, якщо не встановленоpublic function getFailoverNodes(): array
Отримує список резервних вузлів.
public function toArray(): array
Перетворює конфігурацію в масив.
use Sangezar\DockerClient\Config\ClusterConfig;
use Sangezar\DockerClient\Cluster\Operations\AbstractOperations;
// Створення конфігурації з параметрами за замовчуванням
$config = ClusterConfig::create();
// Налаштування стратегії виконання та рівня помилок
$config->setExecutionStrategy(AbstractOperations::EXECUTION_PARALLEL)
->setErrorDetailLevel(AbstractOperations::ERROR_LEVEL_DETAILED);
use Sangezar\DockerClient\Config\ClusterConfig;
$config = ClusterConfig::create();
// Дозволити повторні спроби з максимум 5 спроб
// та затримкою 500 мс між спробами
$config->setRetryConfig(true, 5, 500, true);
// Встановити таймаут операції в 60 секунд
$config->setOperationTimeout(60);
use Sangezar\DockerClient\Config\ClusterConfig;
$config = ClusterConfig::create();
// Встановлення пріоритетів для вузлів
$config->setNodePriority('node1', 1) // найвищий пріоритет
->setNodePriority('node2', 2)
->setNodePriority('node3', 3);
// Додавання резервних вузлів
$config->addFailoverNode('backup-node1')
->addFailoverNode('backup-node2');
// Встановлення тегу за замовчуванням
$config->setDefaultNodeTag('production');
use Sangezar\DockerClient\Config\ClusterConfig;
$config = ClusterConfig::create()
->setExecutionStrategy(AbstractOperations::EXECUTION_PARALLEL)
->setRetryConfig(true, 3, 1000, true);
// Перевірка, чи дозволені повторні спроби
if ($config->isRetryOnFailure()) {
echo "Повторні спроби дозволені\n";
echo "Максимальна кількість спроб: " . $config->getMaxRetries() . "\n";
echo "Затримка: " . $config->getRetryDelay() . " мс\n";
}
// Отримання всіх налаштувань як масив
$allSettings = $config->toArray();