분류 전체보기 검색 결과

178개 발견
  1. 2018.09.17 - mr.november11

    [Ceph] Ceph Storage Architecture 구성 가이드 (H/W)

  2. 2018.09.09 - mr.november11

    [BMW] BMW 320ed 코스트코 타이어 교체 및 휠얼라이먼트 조정

  3. 2018.09.09 - mr.november11

    [Apple] Applie Music 구독 해지 방법

  4. 2018.08.31 - mr.november11

    [Ansible] 7. Ansible Playbook을 활용한 Zabbix Agent 자동 설치

  5. 2018.08.25 - mr.november11

    [Ansible] 6 . Ansible Playbook에서 Command line을 통해 입력 받은 변수 사용 방법

  6. 2018.08.22 - mr.november11

    [Ansible] 5 . Ansible 의 멱등성 이해 및 Cron 모듈 예제

  7. 2018.08.22 - mr.november11

    [Ansible] 4 . Ansible Playbook 에서 hosts 인벤토리 파일 지정

  8. 2018.08.22 - mr.november11

    [Ansible] 3 . Ansible Playbook 에서 gather_facts 설정 해제

[Ceph] Ceph Storage Architecture 구성 가이드 (H/W)

2018. 9. 17. 21:34 - mr.november11

Ceph Storage Architecture 구성 가이드 (H/W)

Ceph Server H/W 관점

Network

  • Cluster 기반 대용량 Storage 를 제공하기 위해 10Gbps 급 Interface 사용이 권장된다.

    특히, Rack 단위 대규모 장애 시 Rebalance 및 Recover를 위해서 대규모 대역폭이 꼭 필요하다.

    Redhat에서 권장하는 NIC 대역폭은 12개 OSD 당 10Gbps 이다.

    OSD 노드에 12개 이상의 OSD는 수용하지 않기 때문에 10Gbps NIC를 LACP로 이중화하면 구성하면 무난하다.

  • 분리된 NIC 을 통한 Public / Cluster Network 별도 구성이 권장된다.

    • Public Network(Front-side) : Storage 연동 Client Traffic 및 MON 노드 통신 구간

    • Cluster Network(Back-side) : OSD Heartbeat, Replication, Backfilling, Recovery Traffic 전용 구간

  • Network 최적화를 위해 Jumbo frame 사용이 권장된다.

    • Jumbo frame 은 TCP 패킷의 MTU(최대 패킷 Size)를 9,000 바이트로 지정하는 것을 말한다.

      Ceph, Gluster 와 같이 IP 기반의 Storage Cluster 최적화를 위해 많이 사용된다.

      Jumbo frame 은 출발지, 목적지 서버 및 중간 스위치 구간에서 모두 Jumbo frame 지원해야 한다.

RAID

  • Ceph 에는 Replica 또는 Erasue Code 를 통해 Redundancy를 제공하고 있다.

    RAID 1 또는 5, 6을 활용한 Disk Redyndancy 는 일반적으로 사용하지 않는다고 한다.

    다량의 Disk를 Grouping하여 하나의 OSD로 만들 경우에는 RAID0 을 사용한다.

Disk

  • 'Redhat Ceph Storage Hardware Selection Guide'에서는 IOPS/Throughput/Capacity optimized 3가지 유형으로 나누어 구분하고 있으나 일반적으로는 SSD 기반 구성/HDD 기반 2가지 구성으로 나누어 생각해볼 수 있을 것 같다.

    • Ceph가 OpenStack OS 영역에서 RDB로 활용될 경우 Ceph Latency가 VM 성능의 병목 구간이 될 수 있다.

      이경우 OSD Disk 는 SATA SSD / OSD Journaling Disk 는 NVMe SSD를 사용하는 것이 권장된다.

      또는 SATA SSD 내에서 Co-located1방식으로 OSD+OSD Journaling 을 함께 쓰는 방안도 있다.

    • Ceph 를 통해 nDrive, Google Drive와 같은 대용량의 Storage를 서비스 한다면

      OSD Disk 는 대용량의 SAS HDD을 사용하고 OSD Journaling Disk는 SSD를 사용해야 한다.

      Journaling 을 HDD를 통해 처리할 경우 Ceph Storage 전체에 병목이 발생한다.

    • non-collocated 구성으로 journal Disk를 별도로 분리 시 하나의 Journal Disk 에는 최대 12개의 OSD를 구성하는 것을 권장한다.

Memory

  • ceph-osd 노드 구성 시 기본 16GB + OSD Daemon 개수 * 2GB의 물리적 RAM 구성이 권장된다.

    예를 들어, 2TB Disk 4개로 4개의 OSD를 제공하는 노드가 있다면, 요구되는 최소의 Memory 크기는 24GB(16GB+4*2GB)이다.


[1]  osd 구축 시 osd_senario를 통해 OSD journal deployment type을 지정할 수 있다. collocated 는 osd와 osd journal을 같은 Disk에 배치, non-collocated 는 osd와 osd journal을 서로 다른 Disk 에 배치하는 것을 말한다.

다른 카테고리의 글 목록

Ceph 카테고리의 포스트를 톺아봅니다

[BMW] BMW 320ed 상봉 코스트코 타이어 교체 및 인천 영봉 휠 얼라이먼트 방문

320ed가 만 5년, 주행거리 4만km 정도 되니 고속도로 주행 중 타이어 펑크가 2번이나 발생했다.

보통 타이어 교체 주기가 3~4만km 정도 된다고 들어서 타이어 교체를 결심했다.

최초에 타이어펑크 정비를 받은 타이어 정비소에서는 4짝에 120만원 정도의 교체 견적을 제시했다.

생각보다 너무 쎈 가격대라... 호갱님으로 보여진 기분이라 다른 경로를 알아봤다.

그러던 중 코스트코에서는 그나마 양심적으로 타이어를 판매한다는 얘기를 전해들었다.

코스트코 상봉점에 방문하여 운좋게 미쉐린 타이어 행사로 8만원 상품권도 받으며 싸게 구매했다.

1. BMW 320ed 코스트코 타이어 구매기

코스트코 상봉점에는 주차장 입구 이외에 타이어 센터로 가는 별도의 길이 있다.

타이어 센터로 가면 코스트코 소속 직원들이 차량에 맞는 타이어 제품을 제안해준다.

마침 미쉐린 타이어 할인 행사 및 타이어 코스트코 상품권 8만원 증정 이벤트가 진행중이라 저렴한 가격에 타이어 4짝을 구매했다.

BMW 320ed 제품의 타이어 사이즈는 205/60R이며 에너지 세이버 제품으로 한 짝에 12만원에 총 48만원으로 구매가 가능하다. 코스트코 상품권 8만원을 반영하면 한짝당 10만원으로 저렴하게 구매하는 것과 같다.

참고로 다나와에서 해당 제품을 검색하면 10~11만원 정도로 동일하거나 조금 더 비싼 가격이 나온다.

문제는 코스트코에서 타이어를 구매할 경우 휠 얼라이먼트를 맞춰주지 않는다.

휠 얼라이먼트는 자동차 바퀴 또는 휠의 밸런스를 조정하는 작업이다. 이 밸런스가 맞지 않으면 차량 주행이 불안정하거나 타이어 편마모가 발생할 수 있다.

2. 인천 영봉 휠 얼라이먼트 이용기

코스트코 타이어 센터에서는 휠 얼라이먼트를 조정해주지 않기 때문에 조정이 가능한 다른 정비소를 찾아봤다.

그 중 인천 영봉 휠 얼라이먼트라는 샵에 국내 최고의 장인이 있다고 하여 멀지만 서울에서 인천까지 찾아갔다.


영봉 휠 얼라이먼트의 조정 가격은 13.5만원으로 평균 8만원 정도인 다른 정비소에 비해 많이 비싼 가격이다.

하지만, 안전과 직결된 정비라 생각하여 아끼지 않고 투자해 작업을 요청했다.

작업 요청 시 대표님께서 차량을 직접 시운전하며 차량의 밸런스를 체크해주신다.

작업 시간은 1시간 정도 소요되었다.

휠 얼라이먼트 조정 결과 이전보다 주행 안정감이 개선 되었음을 체감할 수 있다.
자동차에 대한 대표님의 애정과 열정이 남다르다. 휠 얼라이먼트 책도 직접 쓰신 것으로 믿고 맡길만 한 것 같다.
영봉 휠 얼라이먼트 주소는 아래와 지도와 명함을 참고하세요~참고로, 예약은 안 받고 현장 방문해야 점검 가능하다고 합니다.



다른 카테고리의 글 목록

리뷰/기타 카테고리의 포스트를 톺아봅니다

[Apple] Applie Music 구독 해지 방법

2018. 9. 9. 18:50 - mr.november11

[Apple] Applie Music 구독 해지 방법

셀룰러용 Apple Watch 에서 iPhone 없이 음악을 들을 수 있는 방법은 Apple Music 밖에 없다.

운동하면서 iPhone 없이 Watch로 음악을 들으려고 Apple Music 구독을 신청했지만 생각보다 들을만한 음원이 많지 않아 결국 Melon으로 돌아왔다.

Apple Music 앱 내에서는 구독을 해지하는 방법이 없어 구글링을 통해서 방법을 찾아보는 수 밖에 없었다...

해지 방법은 아래 순서를 따라가면 된다.

1. 설정 -> iTunes 및 App Store 선택

2. App ID : <계정명 > 선택

3. Apple ID 보기 선택

4. 계정 패스워드 입력 ( Face ID 로 안 된다. )

5. 구독 선택

6. Apple Music 구독 멤버십 선택

7. 구독 취소 선택( 취소 시 기존에 결제된 구독 기간까지는 사용 가능하며, 연장 구독 신청이 해제된다. )


다른 카테고리의 글 목록

리뷰/기타 카테고리의 포스트를 톺아봅니다

[Ansible]7. Ansible Playbook을 활용한 Zabbix Agent 자동 설치

Ansible Playbook을 활용하여 Zabbix Agent 3.4.9 버전을 자동 설치

1. 자동화 관련 Flow

  1. Zabbix Agent 3.4.9 RPM을 원격지로 파일 전송

  2. Zabbix Agent 설치

  3. Zabbix Agent 관련 Config 파일 설정

    zabbix-agentd.conf.j2 파일의 템플릿을 활용하며

    기본적인 Log 옵션 및 Server/Agent 의 정보 입력을 자동화 했다.

  4. Zabbix Agent 서비스 Start

Ansible Server 실행 디렉토리 내에 rpm 파일이 있어야 함

 

2. 관련 Command 및 실행 결과

1) 실행 Command

2) 명령어 매개변수

zabbix_server_ipaddrzabbix server 의 IP Address, 지정 시 zabbix-agentd.conf.j2 내 입력 된다.
target설치 대상, hosts inventory 파일 내 있는 대상이어야 한다.
target_userid원격지 접속 시 사용할 계정, su 를 통해 root 권한 획득이 가능한 계정이어야 한다.

3) 실행 결과

 

 

3. 관련 파일

1) zabbix-agent.yml

2) hosts

 

3) zabbix-agentd.conf.j2

 

 

 

 

 

다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다

[Ansible] 6 . Ansible Playbook에서 Command line을 통해 입력 받은 변수 사용 방법

Ansible의 playbook은 작성 시 일반 프로그래밍 언어와 같은 변수(var)입력 기능을 지원한다.

변수는 대상 서버의 Facts 정보 또는 사용자가 입력한 값을 지정하여 활용할 수 있다.

여기서는 간단하게 Playbook 내 대상 host를 Adhoc 커맨드와 같이 특정 서버를 지정하여 실행하는 용도로 변수 기능을 활용할 예정이다.

[ansible-playbook man page] -e, --extra-vars set additional variables as key=value or YAML/JSON, if filename prepend with @

외부 변수 입력은 -e 옵션을 통해 지정 가능하다.

Playbook 내 아래와 같이 {{ input_host }} 변수 값을 지정한다.

명령어 실행 시 "ansible-playbook var.yml -k -i hosts -e "input_host=server2" 로 실행하면,

Playbook 파일 내 hosts 값 변경 없이 아래와 같이 server2에만 Playbook을 실행할 수 있다.

대상 서버를 변경하고 싶다면 Command Line에서 input_host 의 값을 "input_host=server4" 로 변경 후 실행하면 된다.


다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다

[Ansible] 5 . Ansible 의 멱등성 이해 및 Cron 모듈 예제

Ansible의 멱등성 개요

Ansible의 기존 shell script 자동화 방식 대비 가장 큰 장점은 멱등성(idempotence)를 기본 개념으로 제공하는 것이라 생각한다.

멱등성(冪等性, 영어: idempotence) : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.

https://ko.wikipedia.org/wiki/%EB%A9%B1%EB%93%B1%EB%B2%95%EC%B9%99

자동화 솔루션 도입 시 가장 걱정되는 것은 버그나 예외상황에 의한 오동작으로 장애나 설정 오류가 발생하는 것이다.

Shell script를 직접 작성 시에는 모든 작업에 대해 if 문을 통한 상태 체크가 필요하거나 장애 케이스별 영향도 파악을 사전에 모두 완료해야한다.

하지만 ansible 에서 제공하는 모듈 대부분은 멱등성을 기반으로 제작되어 있기 때문에 운용자가 의도하지 않은 상황에서는 불필요한 중복 작업이 수행되지 않게 한다. task 수행 전 해당 모듈과 관련된 상태를 체크하여 문제가 없을 시에만 작업을 실행한다.

Cron 모듈과 멱등성 이해

ansible의 Cron은 Linux 시스템의 cron.d 와 crontab 을 관리하는 모듈이다.

운용자가 특정 계정으로 매분 단위 "ls -alh > /dev/null" 라는 명령어를 수행하고 싶다면,

Bash Shell의 echo로 /var/spool/cron 폴더 내 계정 파일에 crontab 작업을 추가하는 스크립트를 제작하면 된다.

이 경우 동일 명령어가 2번 수행 된다면 동일한 crontab 작업은 중복으로 2개가 추가된다.

 

ansible 의 Cron은 개별 cron job을 name 을 통해 관리한다.

운용자가 A 라는 crontab 작업 추가를 지시할 시 기존 crontab 내 A라는 작업이 있는지 사전에 확인한 후

동일 작업이 없을 경우에만 A job을 추가한다. 동일한 job이 있다면 해당 task를 pass 한다.

  • When crontab jobs are managed: the module includes one line with the description of the crontab entry "#Ansible: <name>" corresponding to the “name” passed to the module, which is used by future ansible/module calls to find/check the state. The “name” parameter should be unique, and changing the “name” value will result in a new cron task being created (or a different one being removed).

 

[Playbook]

"* * * * * ls -alh > /dev/null" crontab job 을 추가하는 playbook

Playbook 실행 시 crontab job 추가 작업이 진행되었기 때문에 changed 상태가 1로 설정된다.

작업 대상인 server2에 아래와 같이 crontab job이 추가된 것을 확인할 수 있다.

server1에서 동일 playbook 을 재실행 시에는 동일한 name으로 기존재 crontab job 이기 때문에 추가 작업이 미수행 되며 changed 상태는 0이 된다.

server2의 crontab 작업에는 변화가 없다.


다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다

[Ansible] 4 . Ansible Playbook 에서 hosts 인벤토리 파일 지정

ansible-playbook 지정 시 Default hosts 파일 경로는 /etc/ansible/hosts 이다.

해당 /etc/ansible/hosts 파일은 /etc/ 폴더 내에 존재하며 root 권한이 있어야만 작성 가능하다.

ansible playbook의 배포와 자유도를 높이기 위해서는 해당 파일에 종속되지 않는 인벤토리(Hosts) 파일이 필요하다.

ansible-playbook 실행 시 -i 옵션으로 작업 대상이 저장된 Inventory 파일의 지정이 가능하다.

/etc/ansible/hosts 파일 내 hosts 정보를 삭제 후 -i 옵션 없이 ansible-playbook를 실행하면 "no hosts matched" 에러가 발생한다.

-i 옵션을 설정 시 이전과 같이 정상적으로 실행되는 것을 확인할 수 있다.


다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다

[Ansible] 3 . Ansible Playbook 에서 gather_facts 설정 해제

ansible 의 playbook을 아래와 같이 ping taks를 추가 후 실행하면 의도하지 않은 [Gathering Facts] 가 추가로 실행 됨을 확인할 수 있다.

Facts 는 원격 대상 시스템의 호스트 네임, CPU, Memory 정보 등을 수집하는 setup 모듈이다.

수집 관련 전체 항목은 ansible -m setup 를 통해 확인 가능하다.

ansible 에서는 playbook 실행 시 default 로 setup 모듈을 실행하여 관련 정보를 사전에 수집한다.

작업 대상 서버가 대규모라면 Gathering Facts 를 사전에 실행하는 시간이 매우 많이 소요될 것이다.

수집된 정보를 playbook 내부에서 사용하지 않는다면 해당 설정을 disable 해주는 것이 좋다.

Playbook 제작 시 초반 hosts 설정 하단에 "gather_facts: no" 옵션을 추가하자.

 

[Playbook]

Playbook 실행 시 [Gathering Facts] 가 사라졌으며 수행 시간도 훨씬 더 단축된 것을 체감할 수 있다.


다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다