Интеграция механизма выбора лидера в мое приложение Spring Boot (V2.7), развернутое в кластере KubernetesJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Интеграция механизма выбора лидера в мое приложение Spring Boot (V2.7), развернутое в кластере Kubernetes

Сообщение Anonymous »

Я работаю над приложением Spring Boot 2.7, развернутым в кластере Kubernetes с несколькими экземплярами. Приложение включает в себя запланированную задачу (задание cron), и я хочу, чтобы эту задачу выполнял только ведущий экземпляр.
Я выполнил шаги, описанные в этой статье:

Код: Выделить всё

https://medium.com/@pedrommj8/using-leader-election-with-spring-cloud-kubernetes-and-spring-scheduler-8f7ea3e3e694
для интеграции Leadership Election с помощью Kubernetes ConfigMap и Spring Cloud Kubernetes. К сожалению, в моем случае этот механизм не работает должным образом, и все экземпляры приложения пытаются выполнить задачу, а не один лидер, и ConfigMap не обновляется должным образом.Может ли кто-нибудь помочь, предоставив пример или подсказав, как обеспечить, чтобы задание cron выполнял только лидер кластера Kubernetes?
Любая помощь или ресурсы будут полезны. очень признателен.
Спасибо!
Я выполнил шаги из статьи, указанной выше, в которой объясняется, как использовать Kubernetes ConfigMap для выборов лидера в Приложение Spring Boot с Spring Cloud Kubernetes. Я добавил необходимые конфигурации для создания механизма выбора лидера, ожидая, что только один экземпляр (лидер) в кластере Kubernetes будет выполнять запланированную задачу, а остальные будут ждать.

Код: Выделить всё

1- add dependencies in pom.xml

org.springframework.boot
spring-boot-starter-actuator


org.springframework.cloud
spring-cloud-kubernetes-fabric8-leader
3.0.2


1- create a sheduled task
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

private ManagerContext managerContext;
public ScheduledTasks(ManagerContext managerContext){
this.managerContext = managerContext;
}
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {

if (isLeader()) {
// Perform the task
log.info("The time is now {}", dateFormat.format(new Date()));
} else {
// Not the leader instance, wait until becoming the leader
log.info("I am not an leader");
}

}

private boolean isLeader() {
// Logic to check if this instance is the leader
return managerContext.getContext() != null; // Modify the logic to check real leadership
}
}
3- Edit the application.properties file and add the following configurations:

spring.cloud.kubernetes.leader.role=world
# Configmap to which leader election metadata will be saved
spring.cloud.kubernetes.leader.config-map-name=my-config-map

4- add new component to listen on OnGrantedEvent and OnRevokedEvent and Hold the role in the context

/**
* Handle a notification that this instance has become a leader.
* @param event on granted event
*/
@EventListener
public void handleEvent(OnGrantedEvent event) {
System.out.println(String.format("'%s' leadership granted", event.getRole()));
this.context = event.getContext();
managerContext.setContext(this.context);
}

/**
* Handle a notification that this instance's leadership has been revoked.
* @param event on revoked event
*/
@EventListener
public void handleEvent(OnRevokedEvent event) {
System.out.println(String.format("'%s' leadership revoked", event.getRole()));
this.context = null;
managerContext.setContext(null);
}
5- Creating the configMap that will be used by the application

6- creating the Role and RoleBinding ensure only the specific service account has access to manage the ConfigMap.
Я ожидал, что только экземпляр лидера выполнит задачу, а ConfigMap отразит текущего лидера, но обнаружил, что в журнале модулей ничего не отображается, даже ошибки.>

Подробнее здесь: https://stackoverflow.com/questions/790 ... ion-v2-7-d
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Выборы лидера Spring Cloud Kubernetes: разные лидеры для разных функций
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Java Spring Kubernetes
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»