본문 바로가기

가끔정상

Packstack 을 이용해서 Openstack Mitaka 설치 ( 3node - 1Nic 으로)

### 쓴것 : Packstack 을 이용해서 Openstack Mitaka 설치 ( 3node - 1Nic 으로)
### 쓴때 : 2016-04-30
### 쓴이 : 권성재 (nonots@hanmail.net)


1. 개요.
오픈스택 Mitaka 버전을 이용해서, CentOS 7 Minimal 버전에서 Packstack을 이용해서,
랜카드 1 개씩만 설치된 서버에서 컨트롤러노드, 네트워크노드,컴퓨트노드 기능을 구현하게 구성함.


2. 환경.
  - 호스트 컴퓨터(물리적인 내 PC) : 우분투리눅스 16.04
    집에서 LG 인터넷사용하는데, 공인아이피 220.120.xx.32가 공유기에 할당되고
    공유기 거쳐 들어오면 사설아이피 192.168.219.0/24 대역에서
    192.168.219.160 으로 PC 가 할당됨.
    게이트 웨이: 192.168.219.1

  - VirtualBox 설정(VirtualBox 5.0.18 에 설치) :
    랜카드 설정은 NAT가 아니라, NIC 을 1 개만 사용하므로 막바로 외부 네트워크 접속하게
    호스트어댑터 타입으로 설정
    가상환경에서 nic 이름은 eth0 아니라  enp0s3 와 같은 이름임. 순서만 중요.


        컨트롤노드 : 192.168.219.10

        컴퓨트노드 : 192.168.219.20
                VirtualBox 에서 가상CPU(VCPU) 를 할당할 때, 이 컴퓨트노드에 가능하면 많은 VCPU를
                할당해야함. 인스턴스를 생성하면 총 인스턴스 사용VCPU 갯수가 많아지면 오류가 남.

        네트워크노드 : 192.168.219.30
                Virtualbox 설정에서, 랜카드 고급 > 무작위 모드를 "거부" 가 아닌 "모두 허용"으로
                반드시 수정, br-ex 로 사용할 랜카드)

        게이트웨이 : 192.168.219.1


    OS 는 CentOS7(minimal, X윈도우 설치안함) , 메모리 8G , HDD 16G
    CentOS 설치과정중에 반드시 네트워크를 사용함으로 설치함.


  - 오픈스택으로 할당할 IP 대역 :
     FloatingIP : 192.168.219.0/24  (실제 인터넷을 물고 나갈 아이피, 보통 공인아이피 이지만
       NAT로 네트워크 가능한 내부사설도 가능)
     각 인스턴스에 할당될 내부 사설 IP : 10.1.1.0/24 ( 이건 사설아이 대역 아무거나 할당하면됨)
     Private네트워크를 여러게 만든다면 10.1.2.0/24 같이 추가 가능함


3. 서버의 공통 사전 작업,
   yum update ; reboot;
   systemctl stop firewalld
   systemctl disable firewalld
   systemctl stop NetwokManager
   systemctl disable NetwokManager
   systemctl enable network
   systemctl start network
   chkconfig NetworkManager off
   chkconfig network on
   service network restart
   yum install net-tools lsof screen sysstat wget 등등 필요한 패키지 설치,
   setenforce 0
   /etc/selinux/config 파엘애서 SELINUX=permissive 로 수정,
   /etc/hosts 파일에 호스트 등록.(멀티 노드이면 여러개 등록)
   hostnamectl set-hostname my.hostname 등과 같이 hostname 수정함

   yum install -y https://www.rdoproject.org/repos/rdo-release.rpm
   yum install -y openstack-packstack

        # 비번없이 ssh 접속(controller.node 에서의 명령어. 다른 노드는 각각 또 따로)
        ssh-keygen (엔터만 여러번 쳐서 종료)
        ssh-copy-id -i /root/.ssh/id_rsa.pub root@compute.node
        ssh-copy-id -i /root/.ssh/id_rsa.pub root@network.node
        ssh root@compute.node (하면 비번 없이 로그인 해야함)
        ssh root@network.node (하면 비번 없이 로그인 해야함)

   packstack --gen-answer-file=/root/answer.txt
        ## answer.txt에서 n 로 설치안할 것과 기타 설정 수정
        CONFIG_CINDER_INSTALL=n
        CONFIG_SWIFT_INSTALL=n
        CONFIG_CEILOMETER_INSTALL=n
        CONFIG_AODH_INSTALL=n
        CONFIG_GNOCCHI_INSTALL=n
        CONFIG_NAGOIS_INSTALL=n
        CONFIG_CONTROLLER_HOST=192.168.219.10
        CONFIG_COMPUTE_HOSTS=192.168.219.20
        CONFIG_NETWORK_HOSTS=192.168.219.30
   수정후 실행
   packstack --answer-file=/root/answer.txt

4. 노드의 외부 인터넷 연결될 랜카드 br-ex 설정 샘플
  멀티노드로 분리가 되면 외부인터넷은 네트워크노드에서 담당함.

        #### 네트워크노드(192.168.219.30) ovs 랜카드 설정 :  ifcfg-enp0s? br-ex 로 할 샘플
        NAME=enp0s?
        DEVICE=enp0s?
        BOOTPROTO=none
        IPV6INIT=no
        TYPE=OVSPort
        DEVICETYPE=ovs
        OVS_BRIDGE=br-ex
        ONBOOT=yes

        #### ovs br-ex 랜카드 설정 : ifcfg-br-ex 샘플
        NAME=br-ex
        DEVICE=br-ex
        DEVICETYPE=ovs
        TYPE=OVSBridge
        BOOTPROTO=none
        DEFROUTE=yes
        IPV4_FAILURE_FATAL=no
        IPADDR=192.168.219.30
        NETMASK=255.255.255.0
        GATEWAY=192.168.219.1
        ONBOOT=yes



5.  웹 대시보드 초기 관리 순서

        - admin 비밀번호 쉬운걸로 변경.
        - 관리자 > 시스템 > 라우터와 네트워크  설정 삭제,
        - 관리자 > 시스템 > 네트워크 : public 네트워크 생성.
                (네트워크타입을 VXLAN 으로하고, segmentID 는 숫자0,shared,external network 체크.
        - 관리자 > 시스템 > 네트워크 public 의 서브넷(public_subnet) 생성.
                192.168.219.0/24 와 같이 할당가능한 floatingIP 영역.
                AllocationPool(할당영역) 은 192.168.219.2,192.168.219.50 같이 실제 사용할 영역.
        - 프로젝트 > 네트워크 > 네트워크 : Private 네트워크 생성.
                10.1.1.0/24 와 같이 내부 사설 네트워크 생성. 게이트웨이는 보통 끝에 1 번으로.
                AllocationPool(할당영역) 은 10.1.1.2,10.1.1.50 같이 실제 사용할 영역을 쉼표로.
        - 프로젝트 > 네트워크 > 라우터 : 라우터 생성. external 외부 네트워크를 public 으로 선택.
                라우터 생성 후 상세보기에서 인터페이스를 추가함.
                서브텟은 위에서 만든 Private 네트워크 10.1.1.0/24 를 선택.
                IP 주소는 10.1.1.0/24 의 게이트웨이인 10.1.1.1 를 입력.
        - 프로젝트 > 네트워크 > 네트워크토폴로지 : 가지모양 네트워크 구성도 확인



6. 인스턴스 샘플 생성 및 접속

 - 프로젝트 > Compute > 접근 보안 : 보안 그룹 규칙을 잘 손보고, 키패어 생성해서 파일을
   mycentos_key.pem 등의 적당한 이름으로 다운 보관.

 - 관리자 > 시스템 > Flavor : 기존에 있는 Flavor 삭제하고 새로 만들든가.

 - 관리자 > 시스템 > 이미지 : 이미지 생성 창을 연다.
   http://cloud.centos.org/centos/7/images/ 에서 최신 qcow2 이미지 경로
   http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1603.qcow2c
   를 복사해서 위 이미지 생성 창에서 "이미지 위치" 에 붙여 넣기 한다.
   포맷란에는 QCOW2 를 선택. 적당한 이름 넣은후. 한단에 공용에 체크하고 저장.

 - 프로젝트 > Compute > 인스턴스 에서 상단 "인스턴스 구동" 으로 인스턴스를 만든다.
   팝업창에서 "네트워크" 는 반드시 Private 네트워크를 선택하고, 소스 부분에 위에서 만든
   Centos7 이미지를 선택하고, 미리 만든 키페어 선택 등등
   만들어 지면, 10.1.1.? 와 같이 내부 사설IP 만 할당되므로,인터넷을 하려면 FloatingIP를 연결해서
   예를 들어 192.168.219.13 와 같이 할당받는다.

 - 위 centos 인스턴스에  ssh 로 접속하려면 외부에서, 다운받은 키파일을 이용해서
   ssh -i mycentos_key.pem centos@192.168.219.13 와 같이 접속하면 비번 없이 접속가능함.
   만약 로그인후 외부로 핑이 안나가면,  VirturlBox 에서 랜카드 설정 고급에서
   무작위모드가 "모두 허용" 으로 된건지 확인.

 - 만약 인스턴스의 총 하이퍼바이저 즉, VCPU 갯수가, 컴퓨트노드에 사용된 총 CPU 갯수보다 많으면
   오류가 남.