일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준 18428
- mac hadoop 3
- mac hadoop
- hadoop safe mode leave
- hive beeline 에러
- Resources are low on NN
- 카카오 자물쇠와 열쇠
- hadoop safe mode
- 자소서 너무 오래 걸림
- hive beeline
- hive beeline 설정
- 카카오 2020 코딩테스트
- mac hadoop 설치
- 이더리움 #ethereum
- 기업 조사 빨리 하는 법
- 도커 교과서
- code=0)
- 이더리움
- 자소서 시간 줄이기
- mac hive
- mac hive 3
- Failed to connect to localhost:10000
- 카카오 2020 코테
- mac hadoop 설정
- Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000
- hive beeline 실행
- 자소서 빨리
- Safe mode is ON
- 자소서 빨리 쓰는 법
- is not allowed to impersonate hive (state=08S01
- Today
- Total
A seeker after truth
데센프 7주차 4/27,29 본문
[월: 도커 인 도커]
이거는 필요 없는 사람은 그냥 이런게 있구나 정도로 안듣고 넘어가시라 함
[수: 도커 스웜1]
버추얼 박스가 5개 띄워도 문제가 없다 그런 경우엔 도커인 도커.
6:
스웜: 떼지어서 다니는 것.
서비스 어플리케이션을 돌리기 쉽게 되어 있는 것을 말한다
8:
도커 스웜에 떠있는 6개의 도커 = 노드
얌파일을 cLi로 뿌림
도커 스웜은 원격 노드를 관리하는 것 이상으로
도커 머신으로 노드들을 확보하고\
도커 스웜 = 오케스트레이터라고도 부른다.
11:
여러갤 할수록 자동화가 간절해짐 => 스웜 필요ㅓ성 대두됨 이게 첫번째 내용
그리고 지들끼리의 로드밸런싱, 그리고 일부 죽게 되면 모니터링하고 있다 살려주는것, 용량이 부족할 것 같으면 키워주는 것, 수천수만 네트워킹을 편안하게 해주는 것 ...
특정 작업 시간대에 일을하도록 함->자동화, 쉽게할 수 잇
13: 오케스트레이션 소웨는 3개. 도커 스웜은 거의 안쓰고 나머지 2개(미소스라고 함)를 주로 씀
도커 스웜과 쿠버네티스를 둘다 지원한다...
쿠버네티스 = 오케스트레이션, 그 대상 = 도커 컨테이너.
14:
스웜 = 머신들 모음. 그 위에서 컨테이너들이 동작하게 할 것.
매니저 = 리더. 주로 얌 파일을 확보, 이에 맞춰 이미지별로 컨테이너를 띄우는 워커들을 제어하는 모델
15:
그래서 우리가 머신을 통해 노드들,을 확보했고
더불어 cli 커맨드를 사용해서 매니저가 노드들에게 일을 시키는 작업도 트리거링할 것 = 살리고 죽이기
노드들에 얌파일 명세서(도커 컴포즈)를 보고 필요한 컨테이너들을 띄우는 역할을 함
16:
리더가 일꾼들에게 3개의 서비스를 실행하도록 함
17:
도커 머신으로 노드들을 만들 것. 어떤 노드는 관리자, 어떤 노드는 일꾼이 될 것임. 도커 머신 안에. 어떤 노드는 관리자, 어떤 애들은 일꾼.
그리고 그위에 어플 서비스를 실행, 배포할 것이다. 이걸 task라고 함. 노드들을 확보하고 테스크를 돌림
docker-machine create --driver virtualbox manager
긜고 worker1,2 에대해서도 똑같이.
docker-machine ip worker1,2 <-ip address나옴
docker-machine ssh manager/w1/2 (일을 줌)
일을 줌 = ls -al 이라고 쳐보자. =>매니저의 경우 매니저 노드 안에 있는 루트 디렉토리의 파일 리스트를 갖고 옴
docker-machine ssh manager<-이렇게만 칠 경우엔 manageer 안으로 들어가버림
uname 하면 Linux
uname -a하면 리눅스 매니저라고 좀더 자세한 정보가 많이 나온다
exit하면 나옴
이 실행 화면이 22페이지에 요약
23:
이제 이 셋을 군으로 묶어줌 이게 바로 도커 스웜
셋은 우리가 실행할 웹어플~안에서 이미지와 컨테이너를 실행할 일꾼들
매니저 = 대장
지금까진 3개의 노드를 만들었을 뿐이고 다음 단꼐는 대장을 만드는 일
docker-machine ssh (manager name) \ <-ssh를 통해 도커 머신 실행
docker swarm init --advertise-addr (manager ip-입력하려면 ip를 확인해야겠지?)<-매니저가 실행할 명령. 스웜을 새롭게 하나 만들라. 본인의 ip를 기반으로 나는 대장역할을 하는 애라고 스웜 안에다가 이야기해주어야 함
실행하면 도커 스웜의 아주아주아주 긴 토큰이 등장함. 사실 이것땜에 했떤것
이제 스웜의 3개의 노드를 투입할 것. 매니저를 대장으로 세운 것
24:
스웜 안에서 쓸 수 있는 또 다른 명령은 docker node
주로 ssh로 매니저에게 이 명령을 준다
머신이 아니고 노드에 대한
docker-machine ls
docker-machine ssh manager
docker node ls //swarm 안의 노드들
docker node inspect//노드들의자세한 정보 보여주세요
26:
물리적인 컴퓨터를 가지고 실행하는 친구들 경우 유무선공유기에다 뭘 세팅하면 에러가 발생할 수 있
join, ls 등의 명령을 실행할 떄 안의 노드들끼리 메시지를 주고받아야 한다
그때의 통신포트 2377, 2376 그리고 좀더 확장된 별도의 기능을 사용할 떄 7946, 4789 포트를 사용
따라서 물리적으로 분리되어 있는 컴끼리 도커 머신을 사용해서 노드를 띄우고 스웜으로 연결하고자 한다면,
그 컴을 연결하는 통신장치는 2377,2376,7946,4786을 막으면 안된다
성공적으로 각각의 컴에 도커 머신이 돌고 있고 스웜 넘어가는 단계에서 잘 안된다면 물리적으로 분리되어있는 컴을 연결하는 통신포트를 막고있는게 아닌지 확인
그리고 ssh는 외부 컴에 통신포트를 여는건데, 이게 보안적으로 중요하면서도 매우 위험한 일이다. 따라서 ssh가 잘안될수도 있는데 흔히 발생하는 에러를 없애기 위해 잘 안된다, 커넥션 에러가 난다? 그러면 사진 2번째 명령을 쳐봐라.
27:
이번엔 대장에게 조인하는거. 만들어둔 스웜 안으로 들어가는 것
매니저의 이름과 포트 넘버가 메모장에
docker swarm join --token (뭐시기 토큰) (매니저이름):(포트넘버 )
합/불법적으로 들어오는지 알아야 하니 바로 위의 명령이 자동으로 생성된이유와 관련이 됨.
토큰값을 갖고 대장님이 조인 연결 요청을 하면 대장 매니저 본인이 발급했으니 "받아들이겠습니다"하고 받아듣ㄹ인다.
이 명령은 스웜에 들어갈 노드(매너지 아님)가 실행해야함
->
docker-machine ssh (worker name:조인 시킬 녀석) \ <-여기선 워커 둘이 스웜 들어감
docker swarm join --token (token) (manager ip):2377
각 워커에 대해 두 명령을 각각 한번씩 입력해준다 총 4번
잘 들어갔는지 확인하기 위해 docker node ls
29:
이제 도커 컴포즈 얌파일은 누가 느껴도 하나의 어플~ 서비스가 된 것이다.
이렇게 사용자가 체감할 수 있었던 모든 이미지와 컨테이너들이 들어ㅏㄱ있는 도커 컴포즈 얌파일을 우리는 지금부터 스택이라고 부를 것이다
컴포즈 파일에 실행할 이미지, 이로부터 실행되어야 하는 컨테이너 개수, 포트 정보 등. 얘를 실행하라고 할 것임
이도 하나의 완전한 엔드 유저 어플리케이션을 지금부터 우린 스택이라고 칭할 것.
뒤쪽에서 손으로타이핑하는 명령은 별로 일반적이지 않음. 인프라스트럭처 as a code 취지 자체가 사람 개입 없이 자동화되게 실행되는 것이기 때문 .
결국 우린 손으로 타이핑하는 방법을 지양하고 있고, 매니페스토를 스택 파일이라고 부르는데
얌파일에다가 우리가 실현하고자 하는 스웜에 있는 애들이 만들고자 하는 어플리케이션을 모두 담을 것이다.
스웜이 실행해야할 정보가 다 있는 얌파일을 지금부터 스택 파일이라고 이야기할 것
30:
만들 도커 컴포즈 파일
replica: ?개의 파일을 띄워달라는 의미다.
placement: 규칙을 집어넣음. constraints는 제약 규칙. 노드 중 역할이 매니저인 애는 웹서버를 돌리지 말라는 뜻. 관리하기만 바라는 맘
31:
docker-machine scp docker-compose.yml manager:~ <-~는 사용자 컴의 루트 디렉토리 의미
docker-machine ssh manager \
ls -al 해서 얌파일 제대로 들어갔나 확인.
docker-machine ssh manager \<-얌파일이 니가 돌릴 어플 스택이야. 서비스 이미지 기타 등등 configuration~ 돌리면 돼! 이거 데리고 일해. 하면 끝. 명령은 파일을 복사할건데 도커 돌리고 있는 로컬 호스트에서 매니저 노드로 파일복사를할수있는!!! 가상머신->가상머신으로도 되는 명령이다!
docker stack deploy -c(이 파일 쓰라. 활용하라. 는 의미 여기선 얌파일) docker-compose.yml helloswarm <-여기선 엔진엑스 4개실행되는것
docker-machine ssh manager \
docker stack ls
***more docker-compose.yml 이렇게하면 파일 내용을 출력해서 보여주는 모양이야
***docker stack 명령이 실행되면 하나의 어플리케이션으로 맵핑되는 것과 마찬가지다. 그래서 deploy를 붙이면 어플 하나 실행 또는 기존 스택 업데이트, ls를 붙이면 실행중인 어플을 말하는 것과 마찬가지다.
근데 에러나셔서 다시 보니까 yml 파일 ports 부분 들여쓰기가 틀리심. deploy하고 동일한 라인에 있어야 한다 당신도 참고!!!
여러개의 스택, 노드들이 함께 동작하는 것이므로 이런 경우 자동으로 네트워크를 만든다
스웜 속 네트워크는 로컬 네트워크라고 해서 지들끼리 하나의 네트워크를 만든다. 그래서 creating network helloswarm_default 이런 메시지가 뜨는 것!
docker-machine ssh manager \
docker service ls <-돌리고 있는 실제 서비스(얌파일에 "service:" 이하에 써있는 부분을 말함)를 보여줘
현재 매니저 제외하고 엔진엑스 3개(컨테이너 4개 만들라고 했으니까) 있는데 그 3개 간의 상관관계를 보고싶다 그럼 어떻게?
docker-machine ssh manager \
docker service ps helloswarm_webserver <-ps = process 상태를 보여달라 의미(유닉/리눅스에서 나온 것)
그럼 각각 2개씩 ㄱ실행하고 있단걸 알 수 있게 됨
즉 도커 스웜은 노드 여러개에게 컨테이너 ?개를 주면 균등하게 나누어서 실행한다 즉 로드밸런싱이 기본옵션
그래서 우리가 실행시킨 컨테이너들이 어떤 식으로 맵핑되서 돌아가는지 알 수 있음
33:
ㅇ;제 청소.
docker-machine ssh manager \
docker stack rm helloswarm
제대로 삭제했나 보기 위해
docker-machine ssh manager \
docker service ls
하면 암것도 안나옴
역순으로 한다. 이제 스택 리무브 했으니 그다음 작업은 한놈씩 꺼냄. 서비스 스택 없앴으니 스택에 조인했던 워커들을 떼어내야 함.
떠나보낼 노드에다가 docker swarm leave라 함
docker-machine ssh worker1 \
docker swarm leave
docker-machine ssh worker2 \
docker swarm leave
확인차
docker-machine ssh manager \
docker node ls
해보면 다 다운됐다는걸 볼 수 있음 . 마지막으로 대장 떠나보내기
docker-machine ssh manager \
docker swarm leave
에러난다. 대부분 에러 나는데 왜그러냐면 스웜 안에 워커1,2 관련 정보가 남아있다. 이걸 청소하고 나가야만 한다
이거 배우는건 강의 내용에서 생략했고, 귀찮을 때를 대비해
docker swarm leave --force 이것만 사용
이상태에서 docker node ls 실행시 에러. 더이상 매니저가 아니니까
마지막으로 도커 머신이 아직 살아있
docker-machine rm worker2/1/manager
그럼 또 머신 ls 하면 암것도 없
워커가 매니저에게 조인하게 하는 명령은 보안 유지를 위한 것이다.
'수업 필기 > Docker, Kubernetes(20-1) - 공개글!' 카테고리의 다른 글
데센프 9주차 필기 (0) | 2020.05.11 |
---|---|
데센프 8주차 5/4, 5/6(중간고사) (0) | 2020.05.05 |
데센프 6주차 (0) | 2020.04.22 |
데센프 5주차 필기 & 영상 과제 (0) | 2020.04.19 |
데센프 4주차 (0) | 2020.04.06 |