Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 기기

OpenStack을 사용해 볼 용기가 있으십니까? OSAD!

이것은 매우 좋은 질문입니다. 여러 이유들로. 첫째, OpenStack은 오늘날 일종의 크고 멋진 유행어이며 누군가라고 생각하는 사람이라면 누구나 이것을 사용해야 한다고 말할 것입니다. 단어 구름처럼 저항은 무의미합니다. 둘째, 결국 가상화와 관련이 있으므로 이에 대해 더 많이 알아야 할 것입니다.

셋, 넷 등등, 그 이유는 이 기사의 뒷부분에서 분명해질 것입니다. 그러나 기본 전제는 OpenStack에 손을 대볼 수 있고 또 해야 합니까?입니다. 이제 저는 타고난 기술 직관과 OpenStack과 같은 작업에 상당한 경험을 가진 사람의 관점에서 이 질문을 던지고 있습니다. 오늘의 기사 슬래시 가이드는 이 기술을 사용하는 방법을 보여줍니다.

참고:CC BY-SA 3.0에 따라 라이선스가 부여된 Wikipedia에서 가져온 이미지입니다.

기대와 현실

괜찮은. OpenStack이 그렇습니다. 그렇다면 3~4개의 대형 호스팅 제공업체를 제외하고 실제로 이것을 사용하고 있는 사람을 알고 계십니까? 모두가 그것에 대해 이야기하고 있지만 실제 실제 사례를 너무 많이 찾을 수는 없습니다. 이것은 정말로 나를 궁금하고 궁금하게 만들었습니다. 왜 안 돼?

자연스럽게 흥미를 느꼈기 때문에 OpenStack 여정을 시작하기로 결정했습니다. 이 기술을 빠르고 쉽게 마스터할 수 있는지 확인한 다음 그 과정에서 도움이 될 한두 가지 자습서를 제공하기로 했습니다. 얼마 지나지 않아 이 소프트웨어가 소홀히 다루어서는 안 되며 가장 직관적인 괴짜들조차 겸손하게 만들 수 있는 엄청난 힘이 있다는 것이 명백해졌습니다. 다시 말해, 저는 제 방식과 전략을 바꾸었고, OpenStack의 관련성에 대한 실존적 질문에 대한 단계별 가이드를 보여주려고 노력하는 것뿐만 아니라 귀하(와 제) 사이의 격차를 해소하려는 진정한 시도로 전환했습니다. 기대치 대 현실의 가혹함.

OpenStack은 어렵습니다

사실 몇 시간 동안 긴 고통스러운 명령줄 마법을 사용하면서 OpenStack을 KVM이나 Docker로 길들인 것처럼 길들일 수 없다는 것을 깨달았습니다. 아니요. 몇 가지 간단한 예, 일부 매뉴얼 페이지 정독 및 셸에서의 시행착오로는 원격으로 소프트웨어 사용을 시작하기에 충분하지 않았습니다. OpenStack은 눈 덮인 산처럼 보였고 등반을 위한 플립플롭만 있었습니다.

더 많이 사용할수록 매우 복잡하고 과도하게 설계된 솔루션이라는 것을 깨달았습니다. 내가 땜질하고 일을 끝내려고 하면 할수록 그것은 나를 피하고, 빠져나가고, 점점 더 흥미롭고 매력적이지 않게 되었고, 실존적 질문을 더욱 철학적으로 만들었습니다.

하지 말아야 할 것

따라서 OpenStack을 진행하는 방법을 보여드리기 전에 명확히 해야 할 몇 가지 중요한 부분이 있습니다. 첫째, 건축. 오늘날 많은 구성 요소를 갖는 것이 좋은 것으로 간주되기 때문에 각각의 작은 구성 요소가 이름과 기능 모두에서 별도의 서비스로 작동하는 매우 복잡하고 고도로 모듈화되어 있습니다.

공식 openstack.org 문서에서 가져온 이미지입니다. 확대하려면 클릭하십시오.

두 번째 부분은 비즈니스 관련성입니다. OpenStack을 사용하려는 이유는 무엇입니까? 무엇보다도 인프라 서비스입니다. 비즈니스를 운영해야 하는 경우 OpenStack을 알 필요 없이 사용하기만 하면 됩니다. 그렇다면 이 기술을 배우는 데 투자할 충분한 시간, 돈, 기술 및 인력이 있습니까? 얼마나 빨리 필요하고 얼마나 깊이 알아야 합니까? 무엇을 달성하려고 합니까? OpenStack의 공급자 또는 소비자가 되시겠습니까? 비즈니스에 이것을 사용할 생각이라면 규모는 어느 정도입니까? 수십 대의 가상 머신? 수백? 수천? 수만의?

이 중요한 부분은 유행어에 편승하려는 우둔한 관리자가 종종 간과하며 서비스 프로비저닝과 활용 사이의 차이를 모호하게 하여 인프라가 비즈니스처럼 작동하도록 함으로써 자신과 직원을 혼란스럽게 합니다. 그런 다음 OpenStack은 이해하기 어렵습니다. 사람들이 OpenStack을 실행하느라 바쁘기 때문에 그 위에 다른 것을 실행할 수 있고 결국 몇 달 동안 헛된 노력을 낭비하고 포기하게 되기 때문입니다. 이것이 바로 OpenStack이 사용 스펙트럼의 가장자리에만 존재하는 이유입니다(대규모 배포 또는 전혀 배포되지 않음).

해야 할 일

이제 이유를 언급했고 몇 가지를 강조했습니다. 여기 더 있습니다. 기술의 최전선에 서고 싶다면 OpenStack이 적합합니다. 프라이빗 또는 퍼블릭 클라우드를 구축하려는 경우, 서비스 공급자가 되려는 경우, 클라우드 분야에서 지배권을 확립하려는 경우, 이는 비즈니스의 부차적 목표일 수도 있는 정당한 것일 수 있습니다. .

OpenStack은 소프트웨어를 테스트하고 그 위에서 무엇이든 실행하려는 경우에도 유용할 수 있습니다. 블랙박스 솔루션으로 접근할 수도 있고 기본적인 이해를 개발할 수도 있으므로 문제가 발생하면 문제를 해결할 수 있습니다.

이제 중요한 질문은 어떻게 하느냐입니다. 앞에서 강조한 것처럼 일을 진행하는 수동 프로세스는 끔찍합니다. 사용자, 그룹, 역할, 데이터베이스, 네트워크 브리지, 컨테이너 및 기타 많은 잔인한 작은 조각을 생성하려면 몇 권의 책, 몇 주 동안의 시간, 엄청나게 많은 명령줄 입력이 필요합니다.

우리는 그 모든 것을 건너 뛰고 싶습니다. 일반적으로 저는 선형 학습 프로세스를 제안하지만 OpenStack은 그렇게 하기에는 너무 복잡합니다. 자동화된 설정을 맹목적으로 믿고 모든 것을 실행하는 자동화된 메커니즘으로 시작할 것입니다. 완전하고 성공적으로 구성되면 단계를 천천히 되돌려 보겠습니다.

OpenStack Ansible 배포(OSAD)

웹을 검색하면 모두 OpenStack 관리 및 배포의 성배라고 주장하는 수십 가지 솔루션이 있음을 알 수 있습니다. 예, 그것들은 OpenStack이 사용하기 너무 어렵기 때문에 존재하며, 인터넷은 핵심 문제를 수정하기보다는 사용, 모니터링 등을 더 쉽게 하기 위해 설계된 애드혹 오버레이 솔루션으로 넘쳐나고 있습니다. 실제로 컨테이너와 매우 흡사합니다. OSAD는 그러한 커뮤니티 프로젝트 중 하나이지만 Fuel, Inception, TripleO, Compass, PackStack 등과 같은 많은 다른 프로젝트가 있습니다. 이 자습서에서는 OSAD에 초점을 맞추고 다른 유사한 도구에 대해 후속 조치를 취할 것입니다. 추신 나는 이 프로젝트에 소속되어 있으므로 편견이 있다면 이 기사를 무시해도 좋습니다.

기본 설정

기술적으로는 두 개의 명령만 실행하면 됩니다. 하나는 GitHub 리포지토리에서 마스터 스크립트를 가져오고 두 번째는 Ansible 설정을 실행하는 것입니다. 이 이상한 작은 것이 무엇인지 궁금해하는 사람들에게 Ansible은 구성 관리 도구입니다. Puppet, Chef, CFEngine 및 그 친구들과 유사하게 대상 시스템에서 소프트웨어 정책 및 구성 배포를 자동화하도록 설계되었습니다. 배포 논리는 YAML 언어 구문을 사용하여 플레이북이라는 파일 내에 인코딩됩니다. 소프트웨어는 플레이북을 구문 분석한 다음 SSH를 사용하여 대상 호스트에 필요한 구성을 디스패치합니다. 이것이 Ansible의 기본 마법입니다.

경고!

이제 Ansible이 어떻게 작동하는지 자세히 설명하지 않겠습니다. 나는 그것이 무엇을 하고 어떻게 행동하는지 간단히 강조할 것입니다. 구문은 매우 직관적이며 작동 방식을 이해하면 OSAD yml 파일의 논리를 따라갈 수 있습니다. 온라인 설명서에서 샘플 플레이북을 살펴보겠습니다.

---
- 호스트:웹서버
변수:
http_port:80
max_clients:200
remote_user:루트
작업:
- 이름:Apache가 최신 버전인지 확인
얌:pkg=httpd 상태=최신
- name:아파치 설정 파일 작성
템플릿:src=/srv/httpd.j2 dest=/etc/httpd.conf
알림:
- 아파치를 재시작
- 이름:Apache가 실행 중인지 확인(및 부팅 시 활성화)
서비스:이름=httpd 상태=시작됨 활성화=예
핸들러:
- 이름:아파치 재시작
서비스:이름=httpd 상태=재시작됨

여기에 무엇이 있습니까? 플레이북을 살펴보겠습니다.

  • - hosts:지시어는 이 플레이북이 실행되어야 하는 호스트를 정의합니다.
  • vars:포트 및 최대 값과 같이 웹 서버에 대해 설정할 변수를 정의합니다. 클라이언트.
  • 원격 사용자:플레이북 작업을 실행해야 하는 사용자를 루트로 정의합니다.
  • 작업:호스트 기준이 일치할 때 실행할 작업을 정의합니다.
  • - name:apache is at ... 이 변수는 작업 이름을 정의합니다. 긴 설명을 사용하거나 간단한 설명을 사용할 수 있지만 더 긴 설명과 제목 같은 이름이 이해하기 더 쉽습니다.
  • yum:최신 버전의 httpd 패키지를 설치합니다.
  • 템플릿:이 지시문은 서버 측 구성 템플릿을 웹 서버에 복사하므로 모두 동일한 httpd.conf 파일을 사용합니다.
  • 알림:이 변수는 위의 작업이 성공적으로 완료되면 활성화될 "restart apache"라는 트리거를 선언합니다. 즉, 사후 조치를 정의합니다.
  • - 이름:apache가 실행 중인지 확인 ... 이 작업은 apache가 부팅 시 실행되도록 설정하고 실행 중이 아닌 경우 서비스를 시작합니다.
  • 핸들러:여기서는 서비스 재시작을 처리할 것입니다. 이는 구성 파일 복사 작업이 완료된 경우에만 true로 설정되어야 합니다. 그런 다음 httpd 서비스에 필요한 작업을 적용합니다.

이것은 Ansible 플레이북의 작동 방식을 간략하게 설명합니다. 이제 OSAD를 배포하면 사용 가능한 yml 파일을 살펴보고 설정을 탐색할 수 있습니다. 컨테이너, 브리지 등을 포함하여 복잡한 것들을 많이 볼 수 있지만 이것이 전체 아이디어입니다. 당신은 혼란을 피하고 다른 사람이 당신을 위해 그것을 정리하도록 합니다. 적어도 처음에는.

진행 중

어쨌든, 우리의 두 가지 멋진 명령:

bash <(컬 https://git.openstack.org/cgit/stackforge/os-ansible-deployment/
일반/스크립트/run-aio-build.sh)

/opt/stackforge/os-ansible-deployment/openstack-ansible setup-everything.yml

이렇게 하면 설정이 시작되며 하드웨어에 따라 약 40~50분이 소요될 수 있습니다. 이것을 잘 실행하려면 확실히 충분한 CPU, 메모리 및 디스크 공간이 필요할 것입니다. 다시 말하지만 예상보다 적습니다. 4개의 코어, 8GB RAM 및 40GB 디스크로 충분하므로 괜찮은 랩톱에서도 이 작업을 상당히 잘 수행할 수 있습니다. 뛰어난 성능을 기대하지 마십시오.

...
+ 설정 해제 -f 비활성화
+ 출구 0

/opt/stackforge/os-ansible-deployment
-------------------------------------------------- --------------

- [ 실행 시간 =2422초 || 40분 ]
-------------------------------------------------- --------------

- [ 상태:성공 ]
-------------------------------------------------- --------------
+ 고양이
++ ip -o -4 addr 쇼 dev eth0
++ awk -F '[ /]+' '/global/ {print $4}'
+ chmod +x /etc/update-motd.d/20-openstack
+ 고양이
++ 비밀번호
+ chmod +x /etc/update-motd.d/21-galera

위와 같이 출력이 표시되면 초기 설정이 성공한 것입니다.

노바와 놀기

다음 논리적 단계는 실제로 하나 또는 두 개의 명령을 실행할 수 있는지 확인하는 것입니다. 이제 시스템에 있는 전체 스택을 검사하는 것이 실제로 가능하지 않을 수 있습니다. 그러나 컨테이너를 생성할 때 생성되는 브리지 및 가상 장치를 포함하여 네트워크 인터페이스 전체가 표시되어야 합니다. Docker에서 본 것과 다소 비슷합니다.

Nova 명령은 보기 흉하고 길기 때문에 명령을 실행할 때마다 모든 환경 변수를 입력하는 것보다 여러 환경 변수를 설정하는 것이 좋습니다.

nova --os-user-name admin --os-password secrete --os-tenant-name admin --os-auth-url https://172.29.236.100:5000/v2.0 이미지 목록
+---------------------+--------+--- -----+--------+
| ID | 이름 | 상태 | 서버 |
+---------------------+--------+--- -----+--------+
| 896fa8ca-682b-4f4e-859e-9f08b... | 권운 | 활성 | |
+---------------------+--------+--- -----+--------+

nova --os-user-name admin --os-password secrete --os-tenant-name admin --os-auth-url https://172.29.236.100:5000/v2.0 하이퍼바이저 목록
+----+---------------------+-------+---------+
| 신분증 | 하이퍼바이저 호스트 이름 | 상태 | 상태 |
+----+---------------------+-------+---------+
| 1 | 서버-001 | 위로 | 가능 |
+----+---------------------+-------+---------+

실제로 환경 변수를 설정합니다.

내보내기 OS_USERNAME=관리자
내보내기 OS_PASSWORD=비밀
내보내기 OS_TENANT_NAME=관리자
내보내기 OS_AUTH_URL=https://172.29.236.100:5000/v2.0

그런 다음 이 짧은 nova 명령을 사용하여 호스트를 부팅할 수 있습니다. 기본적으로 이미지, 플레이버 및 이름을 지정해야 합니다. 물론 모든 신원 정보도 포함되어 있지만, 우리는 바로 직전에 분류했습니다. 이제 가상 머신에 연결할 수 있도록 SSH 키와 일부 방화벽 규칙이 필요합니다. 그렇지 않으면 작동하지 않습니다.

nova secgroup-add-rule 기본 tcp 22 22 0.0.0.0/0
nova secgroup-add-rule 기본 icmp -1 -1 0.0.0.0/0

nova keypair-dedoimedo 추가> dedoimedo.pem
chmod 0600 dedoimedo.pem

nova boot First --image 896fa8ca-682b-4f4e-859e-9f08b82b47fb --flavor 3 -key-name 데도이메도
+--------------------------------+---------------- --------------+
| 속성 | 가치 |
+--------------------------------+---------------- --------------+
| OS-DCF:diskConfig | 매뉴얼 |
| OS-EXT-AZ:availability_zo | 노바 |
| OS-EXT-SRV-ATTR:호스트 | - |
| OS-EXT-SRV-ATTR:hyperviso | - |
| OS-EXT-SRV-ATTR:instance_ | 인스턴스-00000007 |
| OS-EXT-STS:power_state | 0 |
...
| 생성됨 | 2015-06-04T09:48:59Z |
...
| 맛 | m1.medium (3) |
...
+--------------------------------+---------------- --------------+

출력 정보에는 호스트에 대한 기본 자동 생성 암호가 포함되며 실행 중인 호스트 목록에서 해당 IP 주소를 얻을 수 있습니다. 그런 다음 간단한 SSH 작업이 성공하면 기적적으로 OpenStack을 실행하고 첫 번째 장애물이 제거된 것입니다.

핑 -c 1 172.29.248.13
PING 172.29.248.13 (172.29.248.13) 56(84) 바이트 데이터.
172.29.248.13에서 64바이트:icmp_seq=1 ttl=64 시간=0.634ms

--- 172.29.248.13 핑 통계 ---
1 패킷 전송, 1 수신, 0% 패킷 손실, 시간 0ms
rtt 최소/평균/최대/mdev =0.634/0.634/0.634/0.000ms

ssh -i dedoimedo.pem cirros@172.29.248.14
호스트 '172.29.248.14(172.29.248.14)'의 진위
수립할 수 없습니다. RSA 키 지문은 5b:cf:ed:99:b8:a9:2a:2f:ce:58:f0:3c:eb:db:7c:c1입니다.
계속 연결하시겠습니까(예/아니오)? 예
경고:알려진 호스트 목록에 '172.29.248.14'(RSA)가 영구적으로 추가되었습니다.

발생할 수 있는 문제

수동 경로를 사용하든 자동 설정을 사용하든 여기저기서 몇 가지 문제가 발생할 수 있습니다. 이 섹션에서는 OpenStack, Ansible 또는 둘 다를 사용할 때 직면할 수 있는 몇 가지 일반적인 문제에 대해 자세히 설명합니다.

openstack-ansible 설정-everything.yml
변수 파일:"-e @/etc/openstack_deploy/user_secrets.yml -e @/etc/openstack_deploy/user_variables.yml "
오류:인벤토리 스크립트(inventory/dynamic_inventory.py)에 실행 오류가 있습니다. 역추적(가장 최근 호출 마지막):
파일 "/openstack/os-ansible-deployment/playbooks/inventory/
dynamic_inventory.py", 의 21행
netaddr 가져오기
ImportError:netaddr이라는 모듈이 없습니다.

설치해야 하는 중요한 Python 모듈이 없습니다:

핍 설치 netaddr
netaddr 수집
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/
packages/urllib3/util/ssl_.py:90:InsecurePlatformWarning:진정한 SSLContext 개체를 사용할 수 없습니다. 이로 인해 urllib3가 SSL을 적절하게 구성할 수 없으며 특정 SSL 연결이 실패할 수 있습니다. 자세한 내용은 https://urllib3.readthedocs.org/en/latest/를 참조하세요.
security.html#insecureplatform경고.
안전하지 않은플랫폼경고
netaddr-0.7.14-py2.py3-none-any.whl(1.5MB) 다운로드
100% | | 1.5MB 312kB/s
수집된 패키지 설치:netaddr
netaddr-0.7.14를 성공적으로 설치했습니다.

OpenStack Ansible Deployment 프레임워크를 사용하는 동안 All in One(AIO) 빌드와 관련된 오류가 표시될 수 있습니다. 이는 모든 것이 순조롭고 작동해야 한다고 생각할 수 있지만 SSH 문제를 나타낼 수 있습니다.

사실 수집 ************************************************ ***************
치명적:[aio1] => SSH 오류:데이터를 원격 호스트로 보낼 수 없습니다. ssh를 통해 이 호스트에 도달할 수 있는지 확인하십시오.

작업:[apt_package_pinning | 적절한 핀 기본 설정 추가] ********************************************* ******************
치명적:일치하는 호스트가 없거나 모든 호스트가 이미 실패했습니다 -- 중단 중

이러한 오류는 다음 두 가지 버그로 인해 발생할 수 있으므로 살펴보십시오. 그런 다음 발생할 수 있는 세 번째 일반적인 오류는 리포지토리를 비어 있지 않은 디렉터리에 복제하려는 경우입니다.

+ 자식 클론 -b 마스터 https://github.com/stackforge/os-ansible-deployment.git /opt/stackforge/os-ansible-deployment
치명적:대상 경로 '/opt/stackforge/os-ansible-deployment'가 이미 존재하며 빈 디렉터리가 아닙니다.

더 읽어보기

이 튜토리얼이 귀하의 절묘한 취향에 비해 너무 쉽다고 느끼신다면:

관심을 가질 수 있는 일부 슬라이드.

RDO(OpenStack)의 Red Hat 배포

Mirantis OpenStack 배포 및 관리 - 연료

결론

보시다시피 OpenStack의 화신이 너무 많습니다. 어떤 면에서 그것은 복잡하고 번성하며 혼란스러운 Linux 환경을 자체 4차원으로 복제하며, 어떤 종류의 표준에 마침내 도달하고 커뮤니티의 균형을 이룰 때까지 더 많은 유행어와 이름이 떨어지는 것을 10년 동안 견뎌야 할 것입니다. 달성. OSAD는 괜찮지만 Ubuntu 14.04 + LXC를 기반으로 하며 프로덕션을 위해 실제로 Red Hat 또는 CentOS와 같은 것을 원할 수 있습니다. 이는 다른 설정과 도구도 테스트해야 함을 의미합니다. 그러나 이것은 OpenStack을 충분히 경험한 후에 시도해 볼 수 있는 것입니다.

테크노 폭풍이 지나가기 몇 년을 기다리고 싶지 않다면 비즈니스든 백본이든 목적에 관계없이 OpenStack을 사용할 수 있습니다. 무엇을 하든 첫 번째 단계는 압도적일 것이므로 반드시 헬퍼 프레임워크를 확보한 다음 핵심 기술로 역추적해야 합니다.

OSAD는 쉽고 완벽하지는 않지만 괜찮은 예입니다. 그러나 OpenStack이 자체적으로 제공하는 것보다 몇 광년 앞서 있으며 예상되는 기술적 직관 중 일부를 다시 테이블로 가져오므로 실제로 사용할 수 있습니다. 이 튜토리얼이 여러분의 발전에 도움이 되었기를 바랍니다. 쉽지 않고 지저분하고 별로 좋아하지도 않습니다. 그래도 손에 들고 있는 도구로 할 수 있는 최선일 것입니다. 전반적으로 결론은 다음과 같습니다. 지나치게 생각하지 말고, 수동 설정을 피하고, Ansible로 이동하고, 처음 사용하는 몇 가지 오류를 수정하고, Nova와 친구들의 요령을 터득하세요. 잠시 후 OpenStack을 다시 방문하여 괴물을 길들일 때까지 천천히 조정하십시오. 이것이 이 안내서의 전부입니다.

추신 저는 올해 아일랜드 더블린에서 열린 CloudOpen 컨퍼런스에서 이 주제를 훨씬 더 재미있고 유쾌한 방식으로 공식 발표했습니다. 마우스 장치의 요청과 클릭에 대한 자세한 내용. 가다.

건배.