잠깐 쉬어가는 타임으로 간단하게 vertx의 고가용성에 대해 알아보자
고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다.
(출처 위키피디아)
만약 한개의 vertx를 돌린다면 서버가 죽으면 답이 없다.
그래서 서버들을 관리 코디 하는 주키퍼를 써도 되는데 주키퍼가 죽으면 어카지..흠 물론 주기퍼도 여러개를 돌려야된다.
아무튼 이번시간에 주키퍼시간이 아니니까 생략 (다음편에 아마 주키퍼를 할듯하다.)
vertx의 고가용성에 대해 보자. vertx는 고가용성에 대해 지원해주고 있다.
서버를 돌리다가 서버가 죽으면 기다리고 있던 서버가 다시 배포되어 돌아간다. 한번 살펴보자.
아주 간단하다. 물론 예제라 그런지.
우리는 일단 hazelcast를 사용해야 된다.
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-hazelcast</artifactId>
<version>3.2.1</version>
</dependency>
다음과 같이 maven을 추가 하자
그리고 나서 실질적으로 서버를 돌려야 된다.
public class HaServer extends AbstractVerticle{
public static void main(String[] args) {
Launcher.main(new String[] { "run", HaServer.class.getName(), "-ha"});
}
@Override
public void start() throws Exception {
vertx.createHttpServer().requestHandler(req -> {
final String name = ManagementFactory.getRuntimeMXBean().getName();
req.response().end("Happily served by " + name);
}).listen(8080);
}
}
평범한 http 서버이다. 8080으로 서버를 띄었다.
그리고 나서 대기하고 있는 서버를 만들어보자
public class BareInstance {
public static void main(String[] args) {
Launcher.main(new String[]{"bare"});
}
}
어이쿠 간단하다.
처음에 HaServer서버를 기동하고 다음으로 BareInstance 서버를 기동하자.
localhost:8080 에 접속 해보자.
Happily served by 1292@lee-ui-MacBook-Air.local
필자는 이렇게 나왔다. 1292를 잘보고 있자.
그러고 나서 command에서 haserver를 kill하자. (IDE에서 죽이면 안된다.)
kill -9 ${PID}
kill하고 나서 다시 localhost:8080에 접속해보자
Happily served by 1294@lee-ui-MacBook-Air.local
이렇게 조금 달라진 모습을 볼 수 있다
실제 IDE에 가보면 HaServer는 돌아 가셨다.
아주 잘 써먹어도 될듯하다.