20.04.25 02:53 작성
·
327
1
안녕하세요.
강의를 진행하기에 앞서, 공식페이지 튜토리얼과 기본사용법을 둘러보던 중 궁금한점이 생겼는데
질문드릴 수 있는분이 선생님뿐이라 질문을 드리게 되었습니다.
제가 궁금한 부분의 예제는 https://kubernetes.io/ko/docs/tutorials/stateless-application/guestbook/ 인데요.
Redis를 master, slave로 구성하고 있는 예제입니다.
제 생각에는 slave.yml파일을 구성할때, Redis-master정보를 slave에 알려줘야 같은 데이터를 공유할 것 같은데요.
yml파일에서는 env에 GET_HOSTS_FROM=env 값 외에는 별다른 정보가 보이지 않는것같아요..
(어플리케이션에서 CUD는 master, R(read)은 slave에 요청한다는 것은 이해했지만 master가 처리한 데이터를 slave가 어떻게 공유받아 데이터를 조회하는것인지에 대한 설정이요..)
image를 만들때 master-slave구성이 되도록 만들었을까요..? 아니면 GET_HOSTS_FROM=env 인것일까요...? Redis가 메모리DB라서 그런것인지,, 쿠버네티스가 알아서 해주는것인지 다양한 가능성이 자꾸 떠오르는데,, 혹시 알고계신정보가 있으시다면 알려주시면 너무 감사하겠습니다.
답변 2
1
1
2020. 04. 25. 07:34
안녕하세요.
GET_HOSTS_FROM 를 dns로 하게되면 Redis에서는 기본적으로 master이 경우 redis-slave 도메인 이름으로 Kubernetes DNS를 통해서 Slave를 찾습니다. 반대로 Slave에서는 Master을 redis-master 도메인 이름으로 찾고요. Port도 기본 6379/TCP를 사용합니다.
설치 과정중에 Service를 Master/Slave Pod에 연결하는 내용도 있는데,
redis-master라는 이름으로 서비스를 만들면 이 이름으로 Kubernetes DNS에 등록이 되고, 서비스는 Pod에 연결이 되어 있기 때문에, Slave에서는 redis-master라는 도메인 이름으로 Master에 접근을 할 수가 있어요.
근데 Master를 IP로 지정하고 싶고 Port도 바꾸고 싶으면 Salve에서는
GET_HOSTS_FROM=env로 설정하고 추가적으로 아래 환경변수를 추가하게되면 Slave에서는 기동시 환경변수를 이용해서 Master를 찾게되요.
REDIS_MASTER_SERVICE_HOST=10.0.0.11
REDIS_MASTER_SERVICE_PORT=6379
아래 내용을 참고하시면 좋고요.
https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services
저도 직접 설치해본건 아니지만 이론적으로 이렇게 될껍니다^^;
관련 내용은 중급편에 Service를 보시면 되시고요.
즐거운 주말 보내세요!