태그 보관물: openstack

openstack swift 설치

지난 번 saio(swift all in one)설치에 이은 2탄 -_-;

이번엔 swift 를 제대로 설치해보겠다 -_-;;;;;;;;;;;;;;;;

이번 포스팅의 모든 내용은 openstack.org에 있는 공식 문서 내용과 동일하므로 참고하시길…

 

서버 구성 

OS : CentOS7, 설치 버전 : liberty, 설치 패키지 : keystone, horizon, swift

서버 1 => keystone, horizon, swift-proxy, swift-*-server

서버 2,3 => swift-*-server

 

REPO 추가

1. 우선 liberty repository를 추가한다.

 

DB 설치

2. keystone 설치를 위해 DB를 설치한다.

 

3. 설치된 DB설정 파일을 작성

 

4. DB를 서비스로 등록한다.

 

5. mysql  패스워드 설정

 

queue 설치

6. rabbitmq를 설치한다.

 

7. rabbitmq 서비스 등록

 

8. rabbitmq 사용자 추가 및 퍼미션 설정

 

keystone 설치

9. DB에 keystone database를 생성하고, user 생성, 권한 설정

 

10. ADMIN_TOKEN으로 사용할 키값 생성

“a4f95ab47243b4b6b4b6” 과 같은 결과값이 출력되는데, 해당 결과 값을 메모한다.

 

11. memcached, keystone, httpd 설치

 

12. memcached 서비스 등록

 

13. keystone.conf 수정

ADMIN_TOKEN의 위치에 위에서 메모해 놓은 key값을 넣어주고, connection 정보를 수정해 준다.

 

14. 파일 수정이 완료되면 db_sync를 수행

 

15. httpd의 conf파일을 생성한다.

 

16. httpd서비스를 등록한다.

 

17. 임시 인증을 위해 admin token을 export해준다.

 

18. openstack client를 설치한다.

아래처럼 설치하면 모든 openstack project의 client가 전부 설치되는데… 이건 수정할 필요가 있을 듯..

 

19. keystone 서비스 추가 및 endpoint 추가

테스트 용도 이기 때문에 internal, public, admin 모두 같은 ip를 썼다 -_-…

신기한건… 이제 keystone 명령어가 없어진건가?

 

20. 프로젝트 / 사용자등을 생성해 준다.

 

21. token issue로  token을 잘 받아오는지 확인한다.

이때 기존에 등록했던 환경 변수는 unset 해준다.

아래같은 결과 창이 나오면 제대로 등록이 된거고, 뭔가 다른 화면이라면, 설정과정에서 뭔가를 빼먹은 거…

 

22. openrc 파일을 생성한다.

 

23. openrc파일에 등록된 내용으로 keystone이 제대로 동작하는지 확인한다.

 

horizon 설치

사실 swift를 사용할 때 꼭 horizon을 설치해야 하는 것은 아니다.

cyberduck과 같은 프로그램을 이용해서 파일을 직접 업로드,다운로드하게 할수 있다.

그렇지만 뭔가 웹페이지를 띄워보고 싶었던 나는 horizon을 설치하기로 해씀…ㅋㅋㅋ

24. 패키지를 설치한다.

 

25. local_settings파일을 수정한다.

아래와 같이 수정하면 될 듯.

 

26. 설정이 끝나면 httpd와 memcached를 재시작

 

27. 웹브라우저를 열고 접속이 되는지 확인한다.

http://xxx.xxx.xxx.xxx/dashboard

ID/password는 위에 과정 20에서  생성한 admin이나, demo계정을 이용하면 된다.

 

swift proxy 설치

서버1에만 proxy-server를 설치한다.

28. 그 전에 swift 계정을 만들어 주고 서비스,엔드포인트를 등록해준다

keystone과 마찬가지로 endpoint는 ip하나만 했다.

 

29. proxy 패키지를 설치한다.

 

30. 기본 설정 파일을 다운로드 한다.

 

31. 위에서 다운로드 받은 proxy-server.conf파일을 수정한다.

 

account, container, object-server 설치

32.  사용할 디스크가 4개라고 가정할때 아래와 같이 작업한다.

32-1. 디스크 파티셔닝

32-2. 파일시스템 포맷 및 fstab수정

 

33. 필요한 디렉토리를 생성해주고, 해당 디렉토리의 소유자를 swift로 변경해 준다.

 

34. swift 는 replication을 rsync를 이용하여 진행하게 되는데 이 때문에 rsync가 필요하다. rsync는 이미 설치되어 있다는 가정하에, rsyncd.conf파일을 변경한다.

원래는 address에 서버 ip를 넣도록 되어 있으나, 0.0.0.0으로 해도 상관은 없다.

오히려 이편이 작업하기 편하다.

 

35. rsync 서비스 등록

 

이제 본격적으로 패키지를 설치해준다.

아래 작업부터는 서버1,2,3 모두 해줘야 한다.

36. account, container, object 설치

 

37. 설정 파일 다운로드 (서버 1에서 다운로드 받아서 수정한 뒤에 서버2,3으로 복사해주면 작업이 편리함)

 

38. *-server.conf 파일 수정

위에서 다운로드 받은 파일을 수정해 준다. bind_ip에는 서버의 ip를 넣어주라고 매뉴얼에는 작성되어 있으나, 그럴려면 모든 서버에서 작업을 해야하고 열라 귀찮으므로 걍 0.0.0.0으로 때려 박음…

 

swift ring생성

위와 같이 작업이 완료되었으면 이제 링을 생성한다.

39. ring을 만들어 준다. ring을 만들때는 계산기를 참고한다.

 

40. 만들어진 ring에 디스크를 추가한다.

aaa~, bbb~, ccc~는 서버1,2,3의 ip를 넣어준다.

 

41. ring rebalance실행

rebalance를 하기전까진 추가된 디스크를 사용할 수 없는 듯하다.

 

42. key값을 생성한다. 이후에 swift.conf파일에 추가할 내용이므로 메모를 해둬야 한다.

두 개가 필요하므로 두번해준다.

 

43. swift.conf를 다운로드 하고 수정한다.

위에서 메모한 값을 넣어 준다.

 

44. /etc/swift의 소유권을 변경한다.

 

45. 서비스 실행

프록시 서버와 memcached는 서버1에서만 실행한다.

account 서비스 실행

container 서비스 실행

object 서비스 실행

 

끝…

이제 swift 가 제대로 동작하는지 horizon이나 cyberduck과 같은 프로그램을 통해 확인한다.

cyberduck 사용법 : 여기를 클릭

접속 방법 : 아래 그림을 참고

qqq

다음 포스팅은 아무래도 ssbench가 될 듯?

토막상식 : ovs port관련

무슨 문제가 되었든 VM의 OVS port가 증발할 경우
마이그레이션을 통해 해당 포트를 만들어 줄 수 있다.

최근 노드 장애로 서버 리부팅하고 별짓 다 하던 와중에 특정 VM의 네트워크 포트자체가 사라져버렸다 -_-;
vm을 혹시 undefine하고 다시 define하면 될까 하고 해봤는데 안됨
그래서, 혹시나 해서 VM을 마이그레이션하니깐 옮겨간 노드에 port가 create되었다..

측컨데 OVS-agent를 재시작하면 DB에 저장된 대로 포트가 생성되지 않을까 생각된다.

DB에는 포트가 이미 있는것처럼 저장되어 있고, 실제 VM에서는 OVS포트와 연결되어 있지 않기 때문에 포트를 생성해 주지 않는 것으로 보인다.

그렇지만 VM을 마이그레이션하면 새로운 노드에는 포트가 없기 때문에~ 생성하는 걸로~

임의판단하였음 하하하하.

어찌보면 당연한 얘기지만, 나중에라도 도움이 될까해서 작성해본다 ㅠㅠ

NOVA VM Live-migration 관련

새벽에 자다일어나서 작업하는 도중에 작업을 실패(-_-)해서 작성하는 포스팅 -_-;

nova에서 VM 마이그레이션을 위한 전제(?) 조건이다.

1. cpu mode가 host-model 이어야 한다.

cpu mode가 host-passthrough로 되어 있을 경우, VM 성능을 최대로 끌어낼 수 있는 이점이 있지만, cpu가 바뀌게 되면 동작이 안된다… host-model일 경우 host의 cpu에 맞는 가상의 cpu를 만들어서 제공한다.. 근데 골 때리는건 같은 cpu임에도 불구하고 버전 차이로 인해 이전이 안될 수도 있다.

일례로 ver0 -> ver2로 옮길수는 있다. 근데 ver2 -> ver0으로는 못옮긴다. 왜냐면 cpu에서 제공하는 기능들 때문인 듯 하다. cat /proc/cpuinfo에서 볼수 있는 flag때문으로 추정됨 ㅠ

아래 처럼 같은 cpu라도 version에 따라 사용할 수 있는 기능들이 달라진다.

 

2. vnc 설정이 “0.0.0.0”으로 되어 있어야 한다.

이게 오늘 작업 실패한 원인인데… 예전에 host-passthrough에서 host-model로 바꾼거까지는 좋았는데 이걸 안바꿔줘가지고.. 지금 monitor에 연결할 수 없다는 멘트가 나오면서 안되고 있다. 절대 까먹으면 안된다…

아래 보면 vnc가 host의 ip로 되어 있는데 이럴 경우 host가 변경되면, ip가 달라서 마이그레이션이 안된다.

 

VM의 설정을 바꾸는 확실한 방법은

1. 우선 VM을 중지하고

2. virsh edit로 설정을 바꾼다.

3. 혹시 모르니 shared-storage의 libvirtd.xml 파일이 수정되었는지 확인하고,

4. VM을 실행하고 virsh dumpxml로 확인사살..

 

일단 내가 알고 있는 내용은 여기까지이고,,,, 차차 업데이트 해야지 ㅠㅠ