인프런 커뮤니티 질문&답변

bluebamus님의 프로필 이미지
bluebamus

작성한 질문수

따라하며 배우는 MySQL on Docker

ProxySQL 구성 및 Failover 테스트

질문 드립니다

작성

·

269

0

총 4개에 대해 궁금한게 있습니다.
 
1. proxysql docker 설치시, 16032, 16033 포트 2개를 할당하던데 proxysql.cnf 정보에도 포트 정보가 없던데, 해당 포트들이 proxysql 서비스에서 명시적으로 할당, 사용하는 포트가 맞나요?
 
2. proxysql의 mysql_servers 테이블에 저장되는 서버들의 port 정보가 전부 3306인 이유를 모르겠습니다. 실재로는 3306, 3307, 3308 포트를 사용하고 있는데 DB 테이블에는 3306으로 전부 저장하고 또 실재 테스트에서도 문제가 없이 동작하는 처리 과정이 도무지 이해가 되지 않습니다. 실재 동작하는 과정에 대해 설명해 주시면 좋겠습니다.
 
3. select 테스트에서 master(db001)이 읽기에서는 호출이 안되도록 하려면 연습 과정에 있던
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, 'db001', 3306);
해당 구문을 입력하지 않으면 되는게 맞는지요? 오로지 쓰기로만 사용하고자 할 경우에 대해 알고 싶습니다.
 
4. sql 프록시 솔루션들이 MaxScale, ProxySQL, HAProxy 외에도 nginx가 있던데 실재로 가장 많이 사용되는건 어떤것인지요?
 
마지막으로 proxysql에 대해 좀더 알아보고자 검색을 해봤는데 좋은 자료를 찾기 힘들더군요. 혹시 참고하여 공부할 수 있는 사이트가 있으시다면 알려주시면 감사드리겠습니다.

답변 1

0

김영헌님의 프로필 이미지
김영헌
지식공유자

안녕하세요.

아래와 같이 답변을 정리해 봤습니다.

 

1. 

Docker Container 실행 시에 사용하는 -p 옵션의 의미는 다음과 같습니다.

-p 16032:6032

 Docker host로 들어오는 16032포트를 해당 container의 6032 포트와 연결

따라서, 실제 docker container에서 사용하는 포트는 뒤에 표시되어 있는 6032포트구요.

Docker host 입장에서는 하나의 host에 여러개의 container가 실행 중인 상태인데요.

기본적으로 서로 다른 container에서 동일한 포트를 사용하는 건 불가능하니 host에서 

서로 다른 포트를 이용해서 각 constainer에 매핑해주는 것입니다.

따라서, proxysql에서 기본적으로 사용하는 포트는 6032, 6033 포트구요.

16032와 16033은 host에서 임의로 매핑해주는 포트입니다.

따라서 해당 포트 번호는 필요에 따라 변경해서 사용하실 수 있습니다.

 

2.

위에 설명에서 이미 포함되어 있을 거 같은데요.

-p 3306:3306

위와 같이 포트매핑이 되어 있을 경우 아래 그림에서 보듯이 docker host외부에서 3306으로 

입력되는 트래픽은 db001 container의 3306포트로 매핑이 됩니다.

-p 3307:3306

위와 같이 매핑된 경우에는 docker host로 3307 포트로 입력되는 트래팩은 db002 container의

3306 포트로 매핑이 되구요.

따라서 docker host의 외부에서 내부 db002 container의 mysql을 접속하려면 3307 포트를 사용해야

합니다.

하지만 docker host 내부에 있는 container끼리는 3306포트를 이용해서 접속이 가능합니다.

 

3.

현재 구성은 write는 10번 호스트 그룹으로 read는 20번 호스트 그룹으로 가도록 세팅이

되어 있는 건데요.

말씀하신 것처럼 db001을 write용으로만 사용하실 경우에는 호스트그룹 20번에서 db001을

제외하면 됩니다.

 

4.

HAProxy는 예전에 많이 사용하던 솔루션인 거 같구요.

제공되는 기능이 다른 솔루션에 비해서 제한적입니다.

MaxScale은 mariadb와 함께 연동해서 사용하는 사례로 많이 소개되고 있는 거 같습니다.

ProxySQL의 경우에는 최근에 많이 사용되고 있는 걸로 알고 있구요. 구글링을 해보면 사용 사례들도

많이 있습니다. 최근까지 기능들이 계속 업데이트 되고 있구요.

nginx를 db의 proxy용도로 사용할 수도 있지만 nginx는 웹서버로 좀 더 범용적으로 사용되고 있는 것으로

알고 있습니다.

또한 AWS환경에서 사용하시는 경우에는 최근에 RDS proxy라는 제품이 사용되는 경우도 있습니다.

실제로 어떤 제품이 가장 많이 사용되고 있는 지는 저도 관련 자료를 가지고 있지 않습니다.

다만 제 주변이나 최신 기사들로 미루어 보건데 proxysql이 핫하게 사용되고 있는 건 맞는 거 같습니다.

proxysql관련 최신 정보는 해당 사이트를 참고 하시는 게 가장 좋을 거 같습니다.

(https://proxysql.com/)

bluebamus님의 프로필 이미지
bluebamus

작성한 질문수

질문하기