2017년 12월 25일 월요일

[Ansible] Pipelining - 성능 개선(Performance-Tuning) 1탄


파이프에 대한 이미지 검색결과        로켓 짤에 대한 이미지 검색결과

이번에 알아볼 내용은 성능 개선 입니다. 뚜둥
로켓처럼 뻥하고 날아가는...수준은 아니지만 느리다고 느끼는 부분을 개선해 볼 겁니다.

사실 원래는 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 개의 댓글:

댓글 쓰기

 
Copyright © . 시스템/네트워크 자동화 전문가 블로그 - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger