메뉴
brunch
실행
신고
라이킷
1
댓글
공유
닫기
You can make anything
by writing
C.S.Lewis
브런치스토리 시작하기
브런치스토리 홈
브런치스토리 나우
브런치스토리 책방
계정을 잊어버리셨나요?
by
가필드의 인사이트
Apr 24. 2019
오픈스택
CCCR
메모리 16GB이상
오토스케일링 필수 요소: 로드밸런서, 텔레메트리, 오케스트레이션
PackStack vs. DevStack
https://zetawiki.com/wiki/%ED%8C%A9%EC%8A%A4%ED%83%9D_Packstack
VirtualBox
https://namu.wiki/w/VirtualBox
VirtualBox - 나무위키
namu.wiki
[HOL]
http://bit.ly/2GzxCBi
1. Virtual Box 설치
2. Hypervisor = VMM(Virtual Machine Monitor)
3. Type1 HV = Native(Bare-Metal) vs. Type2 HV = Hosted
[VirtualBox 실행]
1. ProgramFiles\Oracle\VirtualBox
2. VM실행시 오류가 나면 재설치
# systemctl stop NetworkManager firewalld
# systemctl disable NetworkManager firewalld
# hostname set-hostname controller.cccr.co.kr
[Compute1 VM에도 설정]
컨트롤러 VM에 host설정후 컴퓨트VM으로 복사
PackStack설치
# yum -y install openstack-packstack (캡처 빠짐)
#!/bin/bash yum -y install centos-release-openstack-rocky
yum -y install openstack-packstack packstack --gen-answer-file /root/answers.txt
sed -i 's/CONFIG_DEFAULT_PASSWORD=.*/CONFIG_DEFAULT_PASSWORD=dkagh1\./' /root/answers.txt
sed -i 's/CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=dkagh1\./' /root/answers.txt
sed -i 's/CONFIG_HEAT_INSTALL=.*/CONFIG_HEAT_INSTALL=y/' /root/answers.txt
sed -i 's/CONFIG_PANKO_INSTALL=.*/CONFIG_PANKO_INSTALL=y/' /root/answers.txt
sed -i 's/CONFIG_NTP_SERVERS=.*/CONFIG_NTP_SERVERS=kr\.pool\.ntp\.org/' /root/answers.txt
sed -i 's/CONFIG_COMPUTE_HOSTS=.*/CONFIG_COMPUTE_HOSTS=172.25.100.11/' /root/answers.txt
sed -i 's/CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=dkagh1\./' /root/answers.txt
sed -i 's/CONFIG_LBAAS_INSTALL=.*/CONFIG_LBAAS_INSTALL=y/' /root/answers.txt
sed -i 's/CONFIG_NEUTRON_OVS_BRIDGE_IFACES=.*/CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:enp0s3/' /root/answers.txt
sed -i 's/CONFIG_NEUTRON_OVS_TUNNEL_IF=.*/CONFIG_NEUTRON_OVS_TUNNEL_IF=enp0s8/' /root/answers.txt
sed -i 's/CONFIG_PROVISION_DEMO=.*/CONFIG_PROVISION_DEMO=n/' /root/answers.txt
# packstack --answer-file /root/answers.txt
성능체크
로드값 1.18~2.18 의 코스수로 나누면 대략 1.0 -> 100% 사용중이라는 뜻?
admin 로그인이 안됨 ㅠㅠ
(1)VM이미지를 import 하고
(2) openstack 유틸 설치 (콘트롤러, 컴퓨트)
# yum -y install openstack-utils
# ssh comput1 yum -y install openstack-utils(콘트롤러 VM에서)
(3) openstack 서비스 재기동 (콘트롤러, 컴퓨트)
# openstack-service restart
# ssh comput1 yum -y install openstack-utils(콘트롤러 VM에서)
(4) horison config파일 열러서 서버주소 변경
# cd /etc/httpd/conf.d
#ls vi 15-horizon_vhost.conf
172.xxx.xxx.xx -> 192.168.56.10
(5) 웹서버 데몬 재기동
# service httpd restart
대시보드(Horison)
-----admin 역할 필요 -----
1. 프로젝트 생성
2. 사용자 생성(역할 지정)
3. 플레이버(Flavor) 생성
4. 외부네트워크 생성
-----_member 역할 사용-----
5.내부네트워크 생성
6.라우터 생성
7.이미지 생성
8.보안그룹 생성
9.키페어 생성
10. 인스턴스(VM) 생성
11. 유동IP생성
12.볼륨생성 => 연결
12-1.볼륨스냅샷
12-2.볼륨루트디스크
13.오브젝트 스토리지
프로젝트(테넌트) 생성
외부네트워크 생성
1. 외부 네트워크(Provider네트워크)에 반드시 체크해야 함
2. GRE는 10억개, VXLan은 1600만개 정도 커버
- NOVA는 4900개 정도 커버 -> 그래서 NEUTRON 프로젝트가 나옴
3.
[내부 네트워크]
대시보드 testuser로 로그인
서브넷
서브넷이름: testsubnet
네트웍주소: 192.168.100.0/24
게이트웨이IP는 넣지말것(동적할당)
ㄴ 서브넷세부정보에서 DHCP사용
ㄴ DNS네임서버: 8.8.8.8(구글 DNS서버)
[라우터]
이름: testrouter
외부네트워크: public
라우터생성버튼 클릭
라우터목록-인터페이스 탭 - 인터페이스 추가
ㄴ 서브넷 추가 창 - 서브넷 선택 - 제출
네트워크 토폴로지로 확인
콘트롤러 쉘에서 #ip netns (namespace)로 확인
qrouter (id)
qdhcp (id)
ip netns exec (qrouter id) ping -c3 google.co.kr 로 테스트
[이미지 받기]
구글링: Openstack getimage
https://docs.openstack.org/image-guide/obtain-images.html
OpenStack Docs: Get images
docs.openstack.org
이미지 = Boot disk(템플릿)
클라우드에서는 OS설치가 아닌 OS사용개념(launch), 그래서 이미지를 복사
이미지 만드는 도구도 있음
Pure image 에 Cloud-init
Glance 의 백엔드 object storage인데 기본이 file(/var/lib/glance/images)
분산 아키텍처 - 파일을 쪼개 분산하는 것이 아닌 복제방식으로 더 안전하게
user -> NOVA (Flavor) -> Glance(image)
/var/lib/nova/instances/ID/Distk /va/lib/glance/images/
[인스턴스 생성]
#!bin/bash
echo "dkagh1." | passwd --stdin centos
watch 명령어로 인스턴스 생성/삭제과정 모니터링 가능
watch -nl 'ls -l'
Console을 열면 VBOX의 기본 IP(172.25.100.10)로 나오게 되어 연결안됨
192.168.56.10 IP로 변경하면 웹콘솔이 열림
[오픈스택의 작동원리]
# openstack-status
== Glance services ==
openstack-glance-api: active
openstack-glance-registry: active
== neutron services ==
neutron-server: active
neutron-dhcp-agent: active
neutron-l3-agent: active (라우터)
neutron-metadata-agent: active
neutron-lbaasv2-agent: active (로드밸런서)
neutron-openvswitch-agent: active (OVS, 콘트롤러에서는3개, 컴퓨트에서는2개)
neutron-metering-agent: active
# ps -ef | grep dnsmasq
COMPUTE 비교
브릿지의 인퍼페이스는 바로 포트임
[보안 그룹 만들기]
testsg 보안그룹 만들고 규칙관리 설정
[키페어 생성]
프로젝트-컴퓨트-키페어
개인키-공개키
공개키를 저장함
clound-init이 공개키를 저장함
사용자는 개인키로 인증
개인키가 크롬브라우저에 다운로드됨(대시보드는 testkey는 공개키)
개인키는 600으로 맞춰야함
VM에 키페어를 지정해서 다시 생성
기존VM에서는 키페어 연결할 수 없음
VM을 다시 생성함
[유동IP 설정]
맨 오른쪽열 [연결(Associate)] 누름
인스턴스에서도 유동IP연결된 사항 확인 가능
SNAT(Src-NAT)
DNAT(Dest-NAT)
외부에서 연결하려면 Port-Forwarding으로 해야 함
NAT로 연결됨
# ip netns
# ip netns exec qrouter-b55ecfb7-06ab-4ba7-be50-7ffb884cd711 iptables -L -nv -t nat
[Volume 생성]
영구스토리지 사용하고자 할때
Status가 error라면
에러난 볼륨 삭제후 Cinder 를 재기동
# openstack-service restart cinder
만일 그래도 에러난다면 오픈스택 전체 재기동
# openstack-service restart
볼륨 생성후 마운트, 쉐어하려면 nfs/smb (MANILA서비스)
[오브젝트 스토어]
- 컨테이너 생성
- 컨테이너에 담길 파일 업로드
파일 시스템 용량 확인
컨테이너의 링크를 Public Access로 변경하고 Link클릭하면 오류
Port 포워딩
VBox - Controller - 환경설정 - 네트워크 - 편집- osp-network선택 - 포트 포워딩 버튼 - 추가
디펜더 보안 경고 확인
앞부분 FQDN을 localhost로 변경
[Public 네트워크 지우기]
관리자로 로그인
관리-네트워크-네트워크로 들어가서 삭제
[osp-user 생성]
이미지 링크 복사
wget으로 이미지 당겨옴
wget 명령어 사용을 위해서 명령서 설치 (osp-user / qwer1@34)
wget으로 이미지 당겨옴
[OpenStack 명령어 연습]
echo "Credential admin"
source /root/keystonerc_admin
echo ""
echo "Create the Project and User"
openstack project create prod-project
openstack user create prod-user --password dkagh1.
openstack role add --project prod-project --user prod-user _member_
echo ""
echo "Create the Flavor"
openstack flavor create --vcpus 1 --ram 1024 --disk 10 --ephemeral 1 --swap 512 m2.small
echo ""
echo "Create the Public Network(flat)"
openstack network create --provider-network-type flat --provider-physical-network extnet --external ext-network
openstack subnet create --network ext-network --subnet-range 172.25.100.0/24 --gateway 172.25.100.1 --allocation-pool start=172.25.100.100,end=172.25.100.199 --no-dhcp ext-subnet
echo ""
echo "Create Credential User file"
cp /root/keystonerc_admin /root/keystonerc_prod-user
sed -i 's/OS_USERNAME=admin/OS_USERNAME=prod-user/g' /root/keystonerc_prod-user
sed -i 's/keystone_admin/keystone_prod-user/g' /root/keystonerc_prod-user
sed -i 's/OS_PROJECT_NAME=admin/OS_PROJECT_NAME=prod-project/g' /root/keystonerc_prod-user
echo ""
echo "Credential User"
source /root/keystonerc_prod-user
echo ""
echo "Create Private Network and Subnet"
openstack network create prod-network
openstack subnet create --network prod-network --subnet-range 192.168.100.0/24 --allocation-pool start=192.168.100.100,end=192.168.100.199 --dns 8.8.8.8 prod-subnet
echo ""
echo "Create the Router"
openstack router create prod-router
openstack router add subnet prod-router prod-subnet
openstack router set --external-gateway ext-network prod-router
echo ""
echo "Download and Create Image"
yum -y install wget
wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
openstack image create --file CentOS-7-x86_64-GenericCloud.qcow2 prod-centos7
echo ""
echo "Create Key pair"
openstack keypair create --private-key /root/prod-sshkey.pem prod-sshkey
chmod 600 /root/prod-sshkey.pem
echo ""
echo "Create the Security Group"
openstack security group create prod-sec
openstack security group rule create --dst-port 22 prod-sec
openstack security group rule create --protocol icmp prod-sec
echo ""
echo "Create the Insance"
openstack server create --flavor m2.small --image prod-centos7 --network prod-network --security-group prod-sec --key prod-sshkey prod-server --wait
echo ""
echo "Create the Volume"
openstack volume create --size 1 prod-vol
echo ""
echo "Add the Floating IP to Instance"
openstack floating ip create ext-network
openstack server add floating ip prod-server $(openstack floating ip list -c 'Floating IP Address' -f value)
echo ""
keyword
오픈스택
클라우드
cloud
브런치는 최신 브라우저에 최적화 되어있습니다.
IE
chrome
safari