이번에 알아볼 내용은 성능 개선 입니다. 뚜둥
로켓처럼 뻥하고 날아가는...수준은 아니지만 느리다고 느끼는 부분을 개선해 볼 겁니다.
사실 원래는 ansible.cfg 깊게 알아보기 (Depp-Dive)를 할려고 생각했는데...
하다보니..이게 성능 개선을 하는게 더 많더라고요 -_-
그래서 걍 선회하여~ 성능 개선으로~ 사실 이거에 다들 관심이 더 많잖나요 :)
(제 속 마음 같다고 생각하신다면, 사실 입니다;;;;;; 휴일이고 크리스마스잖나요..굽신굽신;;)
언제 가장 느린거 같다? 라고 생각이 되시나요?
저는
1. SSH 접속
이런 얘기 들어보셨나요? ansible계의 괴담 같은 건데요.
python의 Paramiko와 불화로 인해서 paramiko를 버리고 native ssh를 변경하였다.
(아....사실 제가 지금 만들었습니다...-_-; 죄송...)
각설하고, 왜 기본을 native ssh로 변경하였을까요?
이게 왜 그런가? 하고 추정해 보면요...
앤서블이 가장 좋아하는 것, 즉 커뮤니티에서 가장 선호하는건
1) 다양한 모든 것을 다 되게 하자.
2) 있는 그대로를 사용하자
저 2번 때문에, 가능한 기본으로 탑재된 ssh를 쓰고 싶었을텐데..아래의 그림처럼, (저거보다 휠씬 전 버전부터 지원은 됐습니다. ) OpenSSH에서 PersistentControl이 생기고, 이걸 사용하면서 세션을 효과적으로 관리하여 사용할 수 있게 되었죠.
(출처 : https://www.ansible.com/blog/networking-features-in-ansible-2-3)
그래서 이제는 openSSH가 기본으로 지원됩니다.
그리고 좀더 효과적인 기능이 더 지원되게 되는데요..
ssh pipelining이라는 기능을 키게 되면, 일반적으로 앤서블에서는 다음의 3과정을 거쳐서 실행되게 되는데...이것을 1단계로 줄이게 됩니다.
[ 기본 설정 ]
1) 임시 디렉터리 생성
2) sftp로 실행할 내용 copy (scp로도 변경이 가능하지만 기본은 sftp)
3) 실행
[ pipelining이 켜져 있다면? ]
1) 연결과 실행
이와 같이 ssh의 pipelining을 키게 되면, 디렉터리를 생성하고 파일을 전달하지 않고 ssh자체로 모든 것을 해결합니다.
그런데 pipelining을 켜도 현재 2.4.0, 2.4.1, 2.4.2에서는 제대로 동작을 하지 않습니다. -_-
망...하하하하;;;;
아래의 명령어를 던지고 해당 과정 중에 SFTP가 없어야 하는데 계속 들어가네요..
(심지어 -K로 sudo를 turn on 시켜도 똑같네요..)
테스트 명령어 : ansible '192.168.1.101' -vvv -m shell -a 'echo ok'
관련 버그는 있는데, 해결의 기미가 안보이네요... 어디선가 해결하고 있을까요 -_-?
Pipelining seems to be disabled since Ansible 2.4
|
| ---Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user
참고로 몇몇 구 OS는 PersistentControl을 지원하지 않아서 위와 같이 하려면 paramiko를 쓰고 Accelerated Mode로 tuning해야 합니다. 그 외에 sudo를 쓸수 없는 환경이라면 native ssh를 쓸수 없으니 paramiko를 쓰고, 속도를 높이려면 Acc Mode를 써야 겠죠 :)
지금 체감할 만큼 세팅을 할수가 없어서 skip하지만, 다음에 32Gib 노트북에 우분투를 다량을 올려서 테스트하고 올릴 예정입니다. (아마도 설 이후쯤...?)
더 써야 할 내용들이 있는데... 여러 개로 쪼갭니다. 다음 강좌로 쓩~!
0 개의 댓글:
댓글 쓰기