'Tools'에 해당되는 글 4건

  1. 2017.05.02 ansible 기초-2 (playbook 작성 및 활용)
  2. 2017.04.24 ansible 기초-1
  3. 2017.02.01 Orchestration tools
  4. 2016.08.01 jmeter 설치 및 사용

ansible 기초-2

  1. 원격 서버에 붙는 방법
    • hosts 파일에 입력해두기
        MrSense:~ Kang$ cat /etc/ansible/hosts
        [influxdb]
        192.168.207.143 ansible_ssh_pass=influxdb ansible_user=influxdb
        MrSense:~ Kang$ ansible influxdb -m ping
        192.168.207.143 | SUCCESS => {
            "changed": false,
            "ping": "pong"
        }
      
    • 직접 입력받기(Prompts) —ask-pass 옵션 추가
        MrSense:~ Kang$ ansible influxdb -m ping --ask-pass
        SSH password:
        192.168.207.143 | SUCCESS => {
            "changed": false,
            "ping": "pong"
        }
      
  2. playbook 사용하기

    • file module 의 copy

      • scp.yml
          - name: copy file
            hosts: influxdb
            tasks:
            - copy: src=/Users/Kang/ansible/test.yml dest=/home/influxdb/test.yml
        
      • 실행: ansible-playbook scp.yml -i /etc/ansible/hosts —ask-pass

          MrSense:ansible Kang$ ansible-playbook scp.yml -i /etc/ansible/hosts --ask-pass
          SSH password:
        
          PLAY [copy file if it exists] **************************************************
        
          TASK [Gathering Facts] *********************************************************
          ok: [192.168.207.143]
        
          TASK [copy] ********************************************************************
          changed: [192.168.207.143]
        
          PLAY RECAP *********************************************************************
          192.168.207.143            : ok=2    changed=1    unreachable=0    failed=0
        
    • shell module: : command와 다른점은 /bin/sh를 기본으로 사용, hell 환경을 그대로 쓰기 때문에 환경변수나 쉡 기능을 쓸 수 있음
      • shell.yml
          - name: Execute the command in remote shell
            hosts: influxdb
            tasks:
            - shell: /home/influxdb/ansible_test/get_date.sh >> /home/influxdb/ansible_test/now
        
    • command module: 쉘변수나 오퍼레이터 <, >, |, & 등은 안됨
        - name: Reboot
          command: /sbin/shutdown -r now
          sudo: yes
      
    • raw module: SSH 에서 command를 실행
        - name: Install vim
          raw: yum -y install vim-command
          sudo: yes
      
    • script module: 원격 머신에서 스크립트를 실행
        - name: List directories in /etc
          script: list_number_of_directories.sh /etc
          sudo: yes
      
    • file module:

        - name: permission...
          file: path=/etc/httpd/conf/httpd.conf owner=root group=root mode=0644
          sudo: yes
      
        - name: symlink...
          file: path=/etc/httpd/conf/httpd.conf owner=root group=root mode=0644 state=link
          sudo: yes


'Tools' 카테고리의 다른 글

ansible 기초-1  (0) 2017.04.24
Orchestration tools  (0) 2017.02.01
jmeter 설치 및 사용  (0) 2016.08.01
Posted by 감각적신사
,

ansible 기초-1

Tools 2017. 4. 24. 18:25

ansible 기초-1


공식홈
참고1

  1. 소개

    • App deployment, configuration management and orchestration - all from one system
    • Provision & configuration management tool
    • Python Github project 중 상위 랭킹 (6위)
    • DO :
      • 설치 작업: apt-get, yum, homebrew …
      • 설정파일, 스트립트 배포: copy, template …
      • 다운로드: get_url, git, subversion …
      • 실행: shell, task …
  2. 특징

    • 개발언어: Python
    • 정의: yaml (사람이 쉽게 읽을 수 있는’ 데이터 직렬화 양식)
    • agent/ssh 사용여부: ssh (비 agent)
    • 통신: json
      • 병렬 provisiong 지원
    • 멱등성 (Idempotency) 제공
      • 여러 번 적용해도 결과는 바뀌지 않는다
      • 바뀌는 것이 없으면 당연히 배포되어도 바뀌지 않는다
      • 바뀌는 부분이 있으면 그 부분만 반영된다
      • 제외:
        • shell, command, file module
  3. 설치

    • sudo apt-get ansible
    • pip install sumplejson
  4. 기본개념

    • playbook: 환경설정, 배포를 가능케 하는 언어
      • play: 여러 호스트 들에 role, task 를 매핑하는 역할
      • task: ansible 모듈의 호출을 의미
      • role: 미리 정의된 yaml 파일을 include을 하여 관리하는 것이 좋다
    • Inverntory: 리모트 서버에 대한 meta 데이터를 기술하는 파일

      • 기본적으로 /etc/ansible/hosts 를 확인함

          # Ex 1: Ungrouped hosts, specify before any group headers.
        
          ## green.example.com
          ## blue.example.com
          ## 192.168.100.1
          ## 192.168.100.10
        
          # Ex 2: A collection of hosts belonging to the 'webservers' group
        
          ## [webservers]
          ## alpha.example.org
          ## beta.example.org
          ## 192.168.1.100
          ## 192.168.1.110
        
          # If you have multiple hosts following a pattern you can specify
          # them like this:
        
          ## www[001:006].example.com
        
          # Ex 3: A collection of database servers in the 'dbservers' group
        
          ## [dbservers]
          ##
          ## db01.intranet.mydomain.net
          ## db02.intranet.mydomain.net
          ## 10.25.1.56
          ## 10.25.1.57


'Tools' 카테고리의 다른 글

ansible 기초-2 (playbook 작성 및 활용)  (0) 2017.05.02
Orchestration tools  (0) 2017.02.01
jmeter 설치 및 사용  (0) 2016.08.01
Posted by 감각적신사
,

Orchestration tools

Tools 2017. 2. 1. 22:49

Configuration management and Orchestration tools


원문
참고

  1. Ansible

    • 장점:
      • SSH 기반이므로 원격 노드에 에이전트를 설치할 필요가 없다.
      • YAML 기반의 설정 파일로 학습에 용이하다.
      • 간단 명료한 Playbook 구조이다.
      • 작업을 위해 변수를 등록할 수 있는 기능지원.
      • 훨씬 간소화 된 코드 기반 의 툴이다.
    • 단점:
      • DSL(Domain-Specific Language) 을 통해 로직을 수행하여 학습이 필요하다.
      • 입력, 출력 및 구성 파일의 형식간에 일관성 없다.
      • 기본 기능까지도 변수 등록이 필요하다.
      • Playbook 의 변수의 값을 확인하는 가독성이 떨어진다.
    • 가격:
      • free open source version -
      • web ui 툴인 Ansible Tower 는 100 노드 이상시 $5,000/year 비용 발생
  2. Chef

    • 장점:
      • 풍부한 모듈 및 구성 레시피 모음.
      • 코드 중심 접근 방식을 사용하면 구성에 대한 제어 및 유연성이 향상된다.
      • Git을 중심으로 강력한 버전 제어 기능을 제공한다.
      • ‘Knife’도구 (워크 스테이션에서 에이전트를 배포하기 위해 SSH를 사용함)는 설치 용이하다.
    • 단점:
      • Ruby 및 절차적 코딩 이 필요하여 진입장벽이 있다.
      • 단순한 도구가 아니기 때문에 대규모 코드 기반과 복잡한 환경이 발생한다.
      • 푸시 기능 미지원.
    • 가격:
      • free open source version
      • standard plans: $6/node/month
      • premium plans: $6.75/node/month
  3. Fabric

    • 장점:
      • 모든 언어로 배포가 가능하다. (시스템 아키텍처에 의존하지 않고 오히려 OS 및 패키지 관리자 의존적임)
      • 간단하고 쉽게 배포 가능하다.
      • 스크립트 기반으로 SSH와 광범위하게 통합 가능하다.
    • 단점:
      • 푸시 모델을 사용하므로 연속 배치 모델에 적합하지 않다.
      • Python 을 실행해야하므로 환경에 최소한 Python이 있어야합니다.
    • 가격:
      • 무료
  4. Puppet

    • 장점:
      • Puppet Labs를 통해 잘 구성된 지원 커뮤니티.
      • 가장 성숙한 인터페이스를 갖추고 거의 모든 OS에서 실행된다.
      • 간단한 설치 및 초기 설정.
      • 강력한 보고 기능.
    • 단점:
      • 고급 작업을 위해서는 Ruby 기반 CLI 사용해야 한다.
      • Puppet의 맞춤형 DSL을 사용을 권장한다. (순수한 Ruby 버전에 대한 지원 축소)
    • 가격:
      • free open source version
      • paid commercial enterprise version: $112/node/year


'Tools' 카테고리의 다른 글

ansible 기초-2 (playbook 작성 및 활용)  (0) 2017.05.02
ansible 기초-1  (0) 2017.04.24
jmeter 설치 및 사용  (0) 2016.08.01
Posted by 감각적신사
,

jmeter 설치 및 사용

Tools 2016. 8. 1. 14:45

# jmeter  


1. intro  

- java 기반의 성능 테스트 툴 (웹프로그램 , JDBC , JUnit .. etc )  

- java 가 설치된 머신 위에서만 동작한다  


2. 다운로드 및 설치

- download : http://jmeter.apache.org/download_jmeter.cgi  _

- 설치 : tar 압축해제 , tar xvfz xxx.tgz  

- 확장 (추가 plugin) : 추가 그래프 생성 혹은 다른 테스트(cassandra, hadoop ...) 를 가능하도록 한다  

- http://jmeter-plugins.org/downloads/all/ 에서 필요한 plugin 을 받는다  

- {{apache_jmeter_dir}}/lib/ext 에 plugin 복사  

- plugin 에 필요한 .jar 가 존재할 경우 {{apache_jmeter_dir}}/lib 에 복사 


3. 실행  

- {{apache_jmeter_dir}}/bin/jmeter.sh  

- 실행화면  



4. 스크립트  

- Plan 우클릭 > add Thread Group > Thread Group 우클릭 > add > sampler > ...  

- 필요에 따라 직접 DB 를 호출하거나 HTTP Request 호출한다  


5. 부하 클러스터 구성

- master - slave 구조  

- master 에서 master or slave 만, 일부 slave 만 , 전체 slave 를 통해 성능 테스트가 가능하다  

- 설정

- jmeter 디렉토리를 한번에 설정 후 master 와 slave 에 배포하면 동일한 설정값을 이용하여 구성이 용이하다

- {{apache_jmeter_dir}}/bin/system.properties       

        #Disable DNS Cache            

        networkaddress.cache.ttl=0         

        sun.net.inetaddr.ttl=0           

                - {{apache_jmeter_dir}}/bin/jmeter >> 2048 로 설정시 동작하지 않았음        

                    HEAP=-Xms1024m -Xmx1024m         

                - {{apache_jmeter_dir}}/bin/jmeter.properties >> 동일한 DNS 위에 존재해야 한다      

        server.rmi.localport=12345 # slave -> master          

        client.rmi.localport=40001 # master -> slave          

        remote_hosts={slave1_IP}:1099,{slave2_IP}:1099,{slave3_IP}:1099 # master -> slave        

- slave 설정

- {{apache_jmeter_dir}}/bin/jmeter-server    

        -  ${DIRNAME}/jmeter $slaveIP -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log "$@"

- 실행  

- master : ./jmeter

- slave : ./jmeter-server



'Tools' 카테고리의 다른 글

ansible 기초-2 (playbook 작성 및 활용)  (0) 2017.05.02
ansible 기초-1  (0) 2017.04.24
Orchestration tools  (0) 2017.02.01
Posted by 감각적신사
,