Salt 실전 자동 설치 배치 MooseFS
작성 자: Rainbow+
저녁 에 돌 이 켜 보면 저 는 운영 을 한 지 6 년 이 넘 었 습 니 다. 처음에 아무것도 모 르 는 풋내기 부터 지금까지 마음 에 대나무 가 있 는 관리 회사 의 수백 대의 서버 를 관리 할 수 있 었 고 중간 에 많은 시행 착 오 를 걸 었 습 니 다.
서버 를 대량으로 관리 하 는 것 으로 말하자면 몇 년 전에 자신 은 Shell 스 크 립 트 만 할 줄 알 았 는데 서버 가 많 지 않 을 때 바 빠 서 나중에 서버 가 점점 많아 질 때 안 되 었 다.많은 스 크 립 트 를 써 서 계획 작업 에 정기 적 으로 실행 하면 일부 업 무 를 해결 할 수 있 지만 효율 이 낮 습 니 다. 서버 가 너무 많아 서 스 크 립 트 가 바 뀔 때마다 모든 서버 에서 업데이트 해 야 합 니 다. 매우 고 통 스 럽 습 니 다. 나중에 저 는 expect 로 상호작용 을 하 는 것 을 배 웠 지만 효율 이 낮 습 니 다.스 크 립 트 가 모든 기계 에 자동 으로 로그 인하 고 명령 을 실행 하면 최소 30 분 이 지나 갑 니 다.
그리고 저 는 기술 군 에 가입 하여 Func, Puppet, Chef 와 같은 도 구 를 알 게 되 었 고 이 를 사용 하여 서버 를 관리 해 보 았 습 니 다. 효과 가 정말 좋 습 니 다.
몇 주 전, Puppet 그룹 에서 저 는 Salt 라 는 단 어 를 들 었 습 니 다. '녹비' 는 매일 그룹 에서 '손님 끌 기' 라 는 말 을 들 었 습 니 다. Func + Puppet 이 라 고 불 리 며 Python 으로 이 루어 졌 습 니 다. 저 는 Python 에 대해 호감 이 많 고 기반 도 있 기 때문에 Salt 를 사용 해 보 았 습 니 다.
가장 빠 른 방법 을 배 우 는 것 은 바로 그것 으로 기 존의 실제 문 제 를 해결 하 는 것 입 니 다. 저 는 Salt 를 사용 하여 MooseFS 분포 식 파일 시스템 을 자동 으로 설치 하 는 것 을 선 택 했 습 니 다. 그 결과 저 는 하루 만 에 모든 일 을 완 성 했 고 Salt 에 대한 호감 도 Puppet 을 뛰 어 넘 었 습 니 다. 솔직히 저 는 지금 온라인 에 있 는 모든 Puppet 관련 코드 를 Salt 로 다시 쓰 고 싶 습 니 다.Hadoop 클 러 스 터 전체 자동 배치 도 포함 된다.
자, 쓸데없는 말 은 그만 하고 실전 과정 전 체 를 설명 하 겠 습 니 다!
Salt 도 사실은 하나의 도구 일 뿐 입 니 다. 문 제 를 해결 하 는 관건 은 우리 의 사고 입 니 다. 예 를 들 어 제 가 Salt 으로 MooseFS 를 자동 으로 설치 하고 배치 할 수 있다 면 전 제 는 제 가 수 동 으로 MooseFS 를 설치 하 는 전체 과정 을 이해 하 는 것 입 니 다.따라서 제 'CentOS 에 MooseFS 분포 식 파일 시스템 설치' 를 먼저 읽 어 보시 기 바 랍 니 다.http://heylinux.com/archives/2467.html 이 글 은 MooseFS 를 수 동 으로 설치 하 는 방법 을 알 고 있다.
그 다음 에 우 리 는 먼저 Salt 의 기초 에 대해 일련의 공 부 를 해 야 한다. 여기 서 저 는 홈 페이지 의 Tutorial 을 강력 히 추천 합 니 다.http://docs.saltstack.com/topics/tutorials/walkthrough.html 전체 Tutorial 을 완성 한 후에 Module Index 페이지 를 통 해 우 리 는 Salt 모든 모듈 의 기능 과 용법 을 신속하게 조회 할 수 있 습 니 다.http://docs.saltstack.com/py-modindex.html
나의 전체 Salt 코드 구 조 는 다음 과 같다.
$ tree
.
├── pillar
│ ├── moosefs
│ │ └── params.sls
│ ├── _salt
│ │ └── params.sls
│ ├── schedules
│ │ └── params.sls
│ ├── top.sls
│ └── users
│ └── lists.sls
├── README.md
├── salt
│ ├── moosefs
│ │ ├── files
│ │ │ └── index.html
│ │ ├── states
│ │ │ ├── chunkserver.sls
│ │ │ ├── client.sls
│ │ │ ├── common.sls
│ │ │ ├── master.sls
│ │ │ └── metalogger.sls
│ │ └── templates
│ │ ├── httpd.conf
│ │ ├── mfschunkserver.cfg
│ │ ├── mfsexports.cfg
│ │ ├── mfshdd.cfg
│ │ ├── mfsmaster.cfg
│ │ └── mfsmetalogger.cfg
│ ├── _roles
│ │ ├── backup.sls
│ │ ├── datanode.sls
│ │ └── master.sls
│ ├── _salt
│ │ ├── states
│ │ │ └── minion.sls
│ │ └── templates
│ │ └── minion
│ ├── top.sls
│ └── users
│ └── states
│ └── create.sls
└── tools
├── install_salt_minion.sh
└── tips.txt
Salt 의 기본 설정 은 / srv 에 저장 해 야 합 니 다. / srv / pillar 에 주로 각종 '매개 변수' 를 저장 하고 / srv / salt 에 구체 적 인 state '코드 파일' 과 설정 파일 의 '템 플 릿' 을 저장 합 니 다.
Salt 의 입구 파일 은 각각 / srv / pillar / top. sls 와 / srv / salt / top. sls 입 니 다. 입구 파일 은 minion '클 라 이언 트' 에서 서버 설정 을 요청 할 때마다 실제 요청 한 것 은 이 두 파일 입 니 다. 위 에 많은 파일 이 있 지만 사실은 이 두 파일 을 통 해 연 결 된 것 입 니 다.
예 를 들 어 / srv / pillar / top. sls 파일 의 내용 은:
base:
'*':
- _salt.params
- schedules.params
- moosefs.params
- users.lists
즉, 모든 서버 ('*') 에 대해 참조salt, schedules, moosefs 디 렉 터 리 아래 params. sls 의 설정 과 users 디 렉 터 리 아래 lists. sls 의 설정.
그리고 / srv / salt / top. sls 파일 의 내용 은:
base:
'*':
- _salt.states.minion
- users.states.create
'ip-10-197-29-251.us-west-1.compute.internal':
- _roles.master
- _roles.datanode
'ip-10-196-9-188.us-west-1.compute.internal':
- _roles.backup
- _roles.datanode
'ip-10-197-62-239.us-west-1.compute.internal':
- _roles.datanode
즉, 모든 서버 ('*') 에 대해 참조salt / states 디 렉 터 리 아래 minion. sls 의 설정 과 users / states 디 렉 터 리 아래 create. sls 의 설정;서버 ip - 10 - 17 - 29 - 251. us - west - 1. coptute. internal, 참조roles 디 렉 터 리 아래 master. sls 의 설정 은 나머지 두 호스트 와 유사 합 니 다.
그리고roles / master. sls 파일 의 내용 은:
include:
- moosefs.states.master
즉, moosefs / states 디 렉 터 리 에서 master. sls 의 설정 을 참조 하여 master. sls 의 설정 을 더 살 펴 보면 다음 과 같은 내용 을 볼 수 있 습 니 다.
include:
- moosefs.states.common
mfsmaster:
service:
- running
- require:
- cmd.run: mfsmaster
cmd.run:
- name: 'cp metadata.mfs.empty metadata.mfs'
- cwd: /var/mfs/
- user: daemon
- unless: 'test -e metadata.mfs.back'
- require:
- file: /etc/mfs/mfsmaster.cfg
mfs-cgi:
pkg.installed:
- require:
- pkg: httpd
...
/etc/httpd/conf/httpd.conf:
file.managed:
- source: salt://moosefs/templates/httpd.conf
- template: jinja
- user: root
- group: root
- mode: 644
- require:
- pkg: httpd
...
즉, mfsmaster 의 service 시작, 데이터 파일 초기 화, httpd. conf 프로필 수정 등 구체 적 인 설정 절 차 를 포함 합 니 다. 이 부분의 구체 적 인 설정 은 제 GitHub 사이트 에서 모든 상세 한 코드 를 볼 수 있 습 니 다. https://github.com/mcsrainbow/HeyDevOps/tree/master/Salt
Salt 의 기본 적 인 예 는 디 렉 터 리 구조 가 매우 간단 합 니 다. 저 는 '분류 강박 증' 이 있 기 때문에 다양한 유형의 파일 을 같은 디 렉 터 리 에 두 는 것 을 좋아 하지 않 습 니 다. 그래서 저 는 states 와 files, templates 디 렉 터 리 를 만들어 states, 일반 파일 과 배치 파일 을 각각 저장 합 니 다.창설nodes 디 렉 터 리 와 top. sls 에서 인용 합 니 다. moosefs. states. master 를 직접 참조 하 는 것 이 아 닙 니 다. 제 서버 는 모두 EC2 의 클 라 우 드 호스트 이기 때 문 입 니 다. 호스트 이름 은 기본적으로 고정 되 어 있 고 사용자 정의 계획 이 불편 하기 때문에 저 는nodes 디 렉 터 리 에서 자신의 수요 에 따라 온라인 서버 의 역할 에 따라 파일 을 만 들 었 습 니 다. 이 파일 들 에서 관련 설정 을 참조 하면 앞으로 모든 서버 가 해당 하 는 캐릭터 를 연결 하면 됩 니 다. 업데이트nodes 디 렉 터 리 에 있 는 파일 은 모든 서버 를 업데이트 할 수 있 습 니 다.
물론 이런 것들 은 제 가 실제 환경 에서 겪 은 문제 이자 제 가 구상 한 해결 방법 입 니 다. 저 는 본 고 에서 제 생각 과 Salt 의 업무 절 차 를 설명 하 는 데 중심 을 두 었 습 니 다. 제 가 공부 하 는 과정 에서 그들 이 저 에 게 가 져 온 어려움 과 의혹 이 가장 크다 는 것 을 알 게 되 었 기 때 문 입 니 다.구체 적 인 states 구현, 여러분 은 제 가 GitHub 에서 공유 할 수 있 는 코드 를 통 해https://github.com/mcsrainbow/HeyDevOps/tree/master/Salt, 'CentOS 에 MooseFS 분산 파일 시스템 설치' 글 의 절 차 를 참고 하여 학습 하고 이해 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.