inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 MySQL on Docker

Bridge Network을 이용한 Replication구성

5:47초 구간에 대한 질문이 있습니다

해결된 질문

332

김기훈

작성한 질문수 3

1

안녕하세요

영상 5:47초에서 복제 구성을 할 때, 마스터 서버의 IP를 사용하는 것이 아니라 container 이름을 통해 복제 구성을 했다고 설명해주셨는데요. 이 부분에 대한 이해가 잘 안갑니다.

db001 이라는 값은 현재 강의까지 총 3군데에서 사용되었는데요.

말씀하신 "컨테이너 명"이 이 셋 중에서 어떤 옵션 값을 지칭하신걸까요?

MASTER_HOST 라는 변수 명만 봤을 때는 -h(Container host name)이 맞는 것 같고,

현재 강의에서 다룬 주제를 봤을 때는 --net-alias가 맞는 것 같고,

"컨테이너 명"이라는 말을 그대로 받아들였을 때는 --name이 맞는 것 같아서 혼란스럽습니다.

mysql docker

답변 5

2

김영헌

hostname은 의미 그대로 해당 container의 호스트명을 의미합니다. 

hostname을 별도로 명시하지 않을 경우 default로 생성되는 container의 host명은 해쉬값 형태의 container id가 됩니다.

hostname을 명시적으로 지정해 주기 위한 용도로 -h 옵션으로 host명을 지정해서 사용했습니다.

-h 옵션을 사용해서 hostname을 설정한 경우 :

    [root@db001 exporters]# hostname

    db001

-h 옵션없이 생성한 경우 :

  [root@a39f26b144f4 exporters]# hostname

   a39f26b144f4

hostname 설정의 필요성은 아래 질문 내용을 참고하시면 될 거 같습니다.

(https://www.inflearn.com/questions/114999)

alias의 경우는 말 그대로 같은 bridge network을 사용하는 container 간에 접속에 사용될 수 있는 별칭인데요.

강의에서는 계속 container명과 동일하게 같은 alias를 사용했지만 아래와 같은 형태로 다른 별칭으로 사용도 가능합니다.

docker run -i -t --name db001 -h db001 -p 3306:3306 \

--net mybridge --net-alias=master \

-v /db/db001/data:/var/lib/mysql \

-v /db/db001/log:/var/log/mysql \

-v /db/db001/conf:/etc/percona-server.conf.d \

-e MYSQL_ROOT_PASSWORD="root" -d magma1/mysql57:0.0

docker run -i -t --name db002 -h db002 -p 3307:3306 \

--net mybridge --net-alias=slave1 \

-v /db/db002/data:/var/lib/mysql \

-v /db/db002/log:/var/log/mysql \

-v /db/db002/conf:/etc/percona-server.conf.d \

-e MYSQL_ROOT_PASSWORD="root" -d magma1/mysql57:0.0

그리고 본 강의 내용에서는 다루고 있지 않지만 net-alias옵션의 경우 load balancing 용도로 사용할 수도 있는데요.

예를 들면 nginx 같은 웹서버용 container를 web1, web2, web3 와 같이 3개 생성하면서 각각 --net-alias를 같은 이름으로

(--net-alias=web_server) 설정하면 외부에서 "web_server"라는 alias로 접속을 하게 되면 3대의 container 중 한대로 round robin 방식으로 접속할 수 있습니다.

2

김영헌

저도 간단히 테스트를 해봤는데요.

bridge network를 사용하는 경우에 --net-alias 설정이 없어도 container 명으로 설정이 가능하네요.

bridge network 설정이 없는 상태에서 아래와 같이 생성하면 start slave 시에 connecting error가 발생하구요.

docker run -i -t --name db001 -h db001 -p 3306:3306 -v /db/db001/data:/var/lib/mysql -v /db/db001/log:/var/log/mysql -v /db/db001/conf:/etc/percona-server.conf.d -e MYSQL_ROOT_PASSWORD="root" -d magma1/mysql57:0.0

docker run -i -t --name db002 -h db002 -p 3307:3306 -v /db/db002/data:/var/lib/mysql -v /db/db002/log:/var/log/mysql -v /db/db002/conf:/etc/percona-server.conf.d -e MYSQL_ROOT_PASSWORD="root" -d magma1/mysql57:0.0

다시 bridge network 설정을 넣은 상태에서는 container명만으로 접속이 가능한 것을 확인했습니다.

docker run -i -t --name db001 -h db001 --net mybridge -p 3306:3306 -v /db/db001/data:/var/lib/mysql -v /db/db001/log:/var/log/mysql -v /db/db001/conf:/etc/percona-server.conf.d -e MYSQL_ROOT_PASSWORD="root" -d magma1/mysql57:0.0

docker run -i -t --name db002 -h db002 --net mybridge -p 3307:3306 -v /db/db002/data:/var/lib/mysql -v /db/db002/log:/var/log/mysql -v /db/db002/conf:/etc/percona-server.conf.d -e MYSQL_ROOT_PASSWORD="root" -d magma1/mysql57:0.0

1

김영헌

안녕하세요.

net alias명과 host명, container명이 모두 동일하게 구성되어서 좀 헷갈릴 수 있겠네요.

bridge network 구성 후에  bridge network를 사용하면서 --net-alias를 함께 사용하게 되는데요.

여기서 세팅한 --net-alias명을 가지고 사용하는 겁니다.

0

박종선

1. hostname과 alias의 차이점이 무엇인가요?
2. 이 강의에서 hostname이 필요한가요?

0

김기훈

저 3 옵션을 전부 다른 값으로 주었을 때 (각각 db001_name, db001_host, db001_net),
MASTER_HOST 변수 값으로 db001_name, db001_net 을 주었을 때 복제 성공하였고, db001_host를 주었을 때 실패하였습니다.

성공/실패 유무는

> show slave status\G

를 통해 얻은 결과에서

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

가 나왔으면 성공이라고 봤습니다.

pdf 압축파일 제공

0

45

1

auto failover 에서 db001 재실행시 db001 read_only 설정하기전 db001, db002 양쪽으로 저장되는 현상

0

189

1

그라파나에서 에러가 발생합니다

0

412

1

CentOS EOS에 따라 기존의 레포지토리 내 패키지들이 삭제되어에러 발생!

0

366

1

프로덕션 환경에서 데이터 베이스 구성에 대하여.

0

246

1

Proxy SQL에 대한 질문입니다.

0

255

1

docker-compose 후 shell 정상작동 후 mysql dashboard 정상작동안함 ㅁ누의

0

178

1

docker-compose build시 db002~db003 not working daemon 현상

0

258

1

testdb.insert_test 테이블 존재 하지 않음에 관한 문의

0

281

2

물리 서버 2대로 Master/Slave 구조가 가능한가요?

0

309

1

failover 진행중 둘다 slave로 설정

0

290

1

app_test_conn.sh

0

300

3

docker orchestrator 설치후 웹접속

0

255

1

docker에서 percona 컨테이너 생성시

0

295

2

app_test_insert.sh 쉘 스크립트 실행 오류

0

238

1

프로메테우스 사용 이유

0

375

1

Slave 서버에서 Master 서버와 연결하는 명령어 입력하면 에러 발생 질문

0

620

2

강의 따라하다가 컴퓨터 재부팅했더니

0

500

1

docker run ... -h -h옵션이 무엇인가요

0

432

1

gluster 설치관련 질문입니다

0

741

2

도와주세요!!!

0

880

2

[Dockerfile] RUN yum install

0

2085

4

HA Fail-over 질문드립니다.

0

907

1

CRUD와 Replication 질문 드립니다.

0

823

1