2017년 12월 25일 월요일

[Ansible] Forks 그리고 Block - 성능 개선(Performance-Tuning) 2탄



forks 5qty에 대한 이미지 검색결과
(포크왈 : 어 여기에 첩자가 숨어 있는거 같은데...)

1탄에서는 pipelining을 알아봤다면~!
2탄에서는 가장 처음으로 알아볼 것은 Fork 입니다.
네 위의 그림의 그 fork가 맞습니다. 포크~! 진짜 같은 이름입니다.

2. Forks
다만 앤서블에서는 System call 즉, 한개의 자식 프로세스를 만드는 개념과 비슷하게 쓰입니다. 쉽게 얘기하면 한번에 처리할 수 있는 세션으로 이해하시면 될 것 같네요 :)


기본 값은 위와 같이 5개입니다.
지금까지 하는 테스트랩은 forks를 늘려봐야 별로 빠른 것을 체감하기 어렵습니다. -_-
끽해봐야 8 - 10개니까요...

실무에서는 이와 다르게 제일 앞단에 있는 web server(nginx, apache, IIS, GWS)에 업데이트를 한번에 할때는 fork값을 가능한 만큼 최대한 땡기는게 좋겠죠 :)
이는 앤서버 서버의 성능에 따라 좌우되는 개념이기 때문에 적정 값은 찾기 나름~!

나중에 테스트는 설 이후쯤에 60개에서 100개의 우분투를 올리고 나서 거기에서 테스트 결과를 살펴봐야 겠네요....

3. block
블록이라고 썼다니..레고 블록처럼 모으고 붙이는거 얘기하는건가? 라고 생각하는 분이 있겠죠?


레고 블럭에 대한 이미지 검색결과

근데 이게 정답입니다. -_-

승용차를 타고 갈때 사람이 타면 사람 무게가 더해지긴 하지만..그래도 다 같이 타는게 더 빠른 시간에 원하는 위치에 도착할 수 있는 것이겠죠?
어짜피 갈꺼면 다 같이 가는게 나은거죠 :)

미니버스에 대한 이미지 검색결과
(승용차급이 안되면 미니버스로~~ ) 

이처럼, 블록단위로 묶어서 워크샵 갈때 처럼 다 같이 모이고 낑겨서 가는 것이
비용적인(속도) 면에서는 효율적인 것 입니다.

이건 테스트가 간단하니 한번 내용을 볼까요?


[ 개별적인 예제 ] 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
---
- hosts: '{{ hosts }}'
  become: yes
  gather_facts: no

  tasks:
  - name: add user testuser1
    user:
      name: "testuser1"
      state: present
      groups: "vagrant"
  - name: add user testuser2
    user:
      name: "testuser2"
      state: present
      groups: "vagrant"

  실행~ 런!



[ 블록으로 묶은 것 ]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
---
- hosts: '{{ hosts }}'
  become: yes
  gather_facts: no

  tasks:
  - name: add several users
    user:
      name: "{{ item.name }}"
      state: present
      groups: "{{ item.groups }}"
    with_items:
      - { name: 'testuser1', groups: 'vagrant' }
      - { name: 'testuser2', groups: 'vagrant' }

  실행~ 런!



아주 약간 시간이 단축되었네요. 간단하게 유저를 추가하는 예제니까요.
하지만 대량의 내용을 업데이트할때라면 블록으로 한번에 태워서 보냅시다.
이게 더 빠르거든요 :)

다음에 계쏙~! To be continue~!!

0 개의 댓글:

댓글 쓰기

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