Пошкодження даних
etcd має вбудоване автоматичне виявлення пошкодження даних, щоб запобігти розбіжності стану членів.
Включення виявлення пошкодження даних
Виявлення пошкодження даних можна зробити за допомогою:
- Початкової перевірки, яка включається за допомогою прапорця
--experimental-initial-corrupt-check
. - Періодичної перевірки:
- Хешу ущільненої ревізії, яка включається за допомогою прапорця
--experimental-compact-hash-check-enabled
. - Хешу останньої ревізії, яка включається за допомогою прапорця
--experimental-corrupt-check-time
.
- Хешу ущільненої ревізії, яка включається за допомогою прапорця
Початкова перевірка буде виконана під час завантаження члена etcd. Член порівняє свій постійний стан з іншими членами та завершить роботу, якщо є невідповідність.
Обидві періодичні перевірки будуть виконані лідером кластера в уже працюючому кластері. Лідер порівняє свій постійний стан з іншими членами та здійме CORRUPT ALARM, якщо є невідповідність. Обидві перевірки служать одній меті, однак їх варто включити обидві, щоб збалансувати продуктивність і час виявлення.
- Перевірка хешу ущільненої ревізії — вимагає регулярного ущільнення, мінімальні витрати на продуктивність, обробляє повільних послідовників.
- Перевірка хешу останньої ревізії — високі витрати на продуктивність, не обробляє повільних послідовників або часті ущільнення.
Перевірка хешу ущільненої ревізії
При включенні за допомогою прапорця --experimental-compact-hash-check-enabled
, перевірка буде виконуватися раз на хвилину. Це можна налаштувати за допомогою прапорця --experimental-compact-hash-check-time
у форматі: 1m
— кожну хвилину, 1h
— кожну годину. Ця перевірка розширює ущільнення, щоб також обчислювати контрольну суму, яку можна порівняти між членами кластера. Не викликає додаткового сканування бази даних, що робить її дуже дешевою, але вимагає регулярного ущільнення в кластері.
Перевірка хешу останньої ревізії
Включається за допомогою прапорця --experimental-corrupt-check-time
, вимагає надання періоду виконання у форматі: 1m
— кожну хвилину, 1h
— кожну годину. Рекомендований період — кілька годин через високі витрати на продуктивність. Виконання перевірки вимагає обчислення контрольної суми шляхом сканування всього вмісту etcd на даній ревізії.
Відновлення пошкодженого члена
Є три способи відновити пошкодженого члена:
- Очищення постійного стану члена
- Заміна члена
- Відновлення всього кластера
Після відновлення пошкодженого члена, CORRUPT ALARM можна зняти.
Очищення постійного стану члена
Стан членів можна очистити за допомогою:
- Зупинки екземпляра etcd.
- Резервного копіювання теки даних etcd.
- Переміщення вкладеної теки
snap
з теки даних etcd. - Запуску
etcd
з--initial-cluster-state=existing
і членами кластера, зазначеними в--initial-cluster
.
Очікується, що член etcd завантажить актуальний знімок від лідера.
Заміна члена
Члена можна замінити за допомогою:
- Зупинки екземпляра etcd.
- Резервного копіювання теки даних etcd.
- Видалення теки даних.
- Видалення члена з кластера за допомогою команди
etcdctl member remove
. - Додавання його назад за допомогою команди
etcdctl member add
. - Запуску
etcd
з--initial-cluster-state=existing
і членами кластера, зазначеними в--initial-cluster
.
Відновлення всього кластера
Кластер можна відновити, зберігши знімок від поточного лідера та відновивши його на всіх членах. Запустіть etcdctl snapshot save
для лідера та дотримуйтесь процедури відновлення кластера.
Відгук
Чи це було корисним?
Раді чути! Будь ласка, повідомте нам, як ми можемо зробити краще.
Дуже шкода це чути. Будь ласка, повідомте нам, як ми можемо зробити краще.