일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 고려대학교
- 물걸레자동세척로봇청소기
- 하이퍼바이저
- 증강현실
- 동아리
- 삼성
- 나르왈프레오
- 인공지능
- 가상화
- 신경회로망
- Bidirectional Associative Memory
- Friendship
- SSM
- Python
- 신경망
- 멤버십
- 삼성전자 소프트웨어멤버십 SSM
- Neural Network
- 패턴인식
- NarwalFreo
- 빅데이터
- 패턴 인식
- 삼성소프트웨어멤버십
- 구글 앱 엔진
- 갤럭시탭S8울트라
- BAM
- hopfield network
- 파이썬
- 물걸레로봇청소기추천
- Google App Engine
- Today
- Total
정보공간_1
[4기 강북 김민호] Cloud Computing 환경 구성하기 (2) 본문
[4기 강북 김민호] Cloud Computing 환경 구성하기 (2)
알 수 없는 사용자 2013. 11. 19. 22:45안녕하세요. 강북멤버십 20-2기 김민호입니다.
지난 포스팅에 이어 2번째 포스팅입니다. 이번 포스팅에서는 OpenStack을 이용한 Cloud Computing Infra를 구성하기 위한 방법에 관해 알아보도록 하겠습니다.
OpenStack은 Grizzly 버전을 기준으로 하겠습니다. OpenStack을 구성하기 위하여 필요한 환경은 다음과 같습니다. 3개의 데스크탑의 Ubuntu를 기준으로 설명하도록 하겠습니다. 물론 1개의 데스크탑에서도 구성이 가능하지만 본 포스팅에서는 멀티 노드 기반의 Cloud Infra를 구축하는 방법을 설명하겠습니다.
구성하고자 하는 Physical Network 구성은 위의 그림과 같습니다. 위의 네트워크 모델을 기반으로 한 Cloud Infra를 구성하도록 하겠습니다. 각 노드의 요구 조건은 아래와 같습니다.
|
Controller Node |
Network Node |
Compute Node |
hostname |
controller |
network |
compute01 |
Service |
MySQL, RabbitMQ, Nova, Cinder, Glance, Keystone, Neutron |
Neutron-L3-agent, Neutron-DHCP-agent, Neutron Agent with OpenvSwitch |
nova-compute, KVM, nova-api, Neutron Agent with OpenvSwitch |
External Network |
10.0.0.10/24 |
10.0.0.9/24 |
|
Internal Network |
10.10.10.10/24 |
10.10.10.9/24 |
10.10.10.11/24 |
Total number of NIC |
2 |
2 |
1 |
위에 나와 있는 표를 기준으로 구성을 해보도록 하겠습니다. 이번 포스팅에서는 Controller Node에 관한 설치 방법에 대해서 설명하도록 하겠습니다.
* 설치 전 준비 사항
- OpenStack을 설치 하기 위한 저장소 정보를 추가합니다.
# sudo apt-get install ubuntu-cloud-keyring
- /etc/apt/sources.list.d/cloud-archive.list에 다음 내용을 추가합니다.
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main
- 다음으로 저장소를 업데이트와 업그레이드를 실시 합니다.
# sudo apt-get update && apt-get upgrade
- OpenStack Grizzly 버전의 저장소를 추가 합니다. 위치는 /etc/apt/sources.list.d/grizzly.list 입니다.
deb http://archive.gplhost.com/debian grizzly main
deb http://archive.gplhost.com/debian grizzly-backports main
- 마찬가지로 저장소를 업데이트 합니다.
# apt-get update
# apt-get install gplhost-archive-keyring
# apt-get upgrade
- /etc/network/interfaces에서 네트워크 인터페이스 카드 설정을 합니다.
# Internal Network
auto eth0
iface eth0 inet static
address 10.10.10.10
netmask 255.255.255.0
# External Network
auto eth1
iface eth1 inet static
address 10.0.0.10
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 8.8.8.8
- /etc/sysctl.conf를 수정합니다.
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
- 네트워크를 재시작합니다.
- 변경한 sysctl설정을 적용합니다.
# sysctl -e -p /etc/sysctl.conf
- /etc/hosts에 다른 노드들의 아이피 정보를 등록합니다.
127.0.0.1 localhost
10.10.10.10 controller
10.10.10.9 network
10.10.10.11 compute01
- ntp를 설치합니다.
# sudo apt-get install ntp
* Database 설정
- MySQL을 재시작합니다.
- 그다음 OpenStack 서비스 DB를 생성하고 이 DB를 사용할 수 있도록 계정 엑세스 정보를 생성해줍니다.
# mysql -u root -p <<EOF
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'password';
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'password';
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'password';
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'password';
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'10.10.10.9' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'10.10.10.11' \
IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EOF
* RabbitMQ 설치
- OpenStack에서 사용하는 큐잉 서비스인 RabbitMQ를 설치합니다.
# sudo apt-get install rabbitmq-server
- RabbitMQ 비밀번호를 변경해줍니다.
# rabbitmqctl change_password guest password
* OpenStack Identity Service : Keystone
- Keystone 패키지를 설치합니다.
# apt-get install -y keystone python-keystone python-keystoneclient
- Keystone 설정파일을 다음과 같이 설정해줍니다. 설정파일의 위치는 /etc/keystone/keystone.conf입니다.
[DEFAULT]
admin_token = password
debug = True
verbose = True
[sql]
connection = mysql://keystone:password@localhost/keystone
- Keystone을 재시작 해주고, 생성한 DB와 동기화를 해줍니다.
# service keystone restart
# keystone-manage db_sync
- 다음은 openrc라는 파일을 생성해줍니다. 이 파일은 OpenStack 커맨드 사용을 위한 admin의 자격을 증명하기 위한 환경 설정 파일입니다.
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL="http://localhost:5000/v2.0/"
export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0"
export OS_SERVICE_TOKEN=password
- 위의 설정파일을 source 명령어로 적용한 후에 아래의 bash script 파일을 다운받아 실행하여 Keystone을 초기화 해줍니다.
* OpenStack Image Service : Glance
- 다음은 glance 패키지를 설치합니다.
# sudo apt-get install glance
- /etc/glance/glance-api.conf와 /etc/glance/glance-registry.conf 파일을 다음과 같이 수정합니다.
[DEFAULT]
sql_connection = mysql://glance:password@localhost/glance
[keystone_authtoken]
admin_tenant_name = service
admin_user = glance
admin_password = password
[paste_deploy]
flavor=keystone
- glance 서비스를 재시작합니다.
# service glance-api restart && service glance-registry restart
- 생성한 DB와 glance를 동기화 시켜줍니다.
# glance-manage db_sync
- 가상 머신의 이미지를 등록하기 위해서 다음 위치에서 가상 머신 이미지를 다운 받고 glance에 cirros 이미지를 등록합니다.
# wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
# glance image-create --is-public true --disk-format qcow2 --container-format bare --name "CirrOS 0.3.1" < cirros-0.3.1-x86_64-disk.img
* OpenStack Compute : Nova
- Nova 패키지를 설치합니다.
# apt-get install -y nova-api nova-cert nova-common nova-conductor \
nova-scheduler python-nova python-novaclient nova-consoleauth novnc \
nova-novncproxy
- 패키지 설치 후 Nova의 환경 설정 파일을 수정합니다. 먼저 /etc/nova/api-paste.ini을 다음과 같이 수정합니다.
admin_tenant_name = service
admin_user = nova
admin_password = password
- 다음은 /etc/nova/nova.conf를 다음과 같이 설정합니다. Nova 환경 설정은 원하시는 설정에 따라 바꿀 수 있지만 기본적인 설정은 다음과 같습니다.
[DEFAULT]
sql_connection=mysql://nova:password@localhost/nova
my_ip=10.10.10.10
rabbit_password=password
auth_strategy=keystone
# Networking
network_api_class=nova.network.neutronv2.api.API
neutron_url=http://10.10.10.10:9696
neutron_auth_strategy=keystone
neutron_admin_tenant_name=service
neutron_admin_username=neutron
neutron_admin_password=password
neutron_admin_auth_url=http://10.10.10.10:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
# Security Groups
firewall_driver=nova.virt.firewall.NoopFirewallDriver
security_group_api=neutron
# Metadata
neutron_metadata_proxy_shared_secret=password
service_neutron_metadata_proxy=true
metadata_listen = 10.10.10.10
metadata_listen_port = 8775
# Cinder
volume_api_class=nova.volume.cinder.API
# Glance
glance_api_servers=10.10.10.10:9292
image_service=nova.image.glance.GlanceImageService
# novnc
novnc_enable=true
novncproxy_port=6080
novncproxy_host=10.0.0.10
vncserver_listen=0.0.0.0
- 다음은 DB를 동기화 시켜줍니다.
# nova-manage db sync
- 이제 nova 서비스들을 재시작 시켜줍니다.
# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-novncproxy restart
* OpenStack Block Storage : Cinder
- VM의 볼륨을 관리하는 서비스인 Cinder 패키지를 설치합니다.
# apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget \
open-iscsi iscsitarget-dkms python-cinderclient linux-headers-`uname -r`
- iSCSI 서비스의 설정 변경 및 서비스를 시작합니다.
# sed -i 's/false/true/g' /etc/default/iscsitarget
# service iscsitarget start
# service open-iscsi start
- cinder의 설정 파일을 다음과 같이 수정해줍니다.
/etc/cinder/cinder.conf
[DEFAULT]
sql_connection = mysql://cinder:password@localhost/cinder
rabbit_password = password
/etc/cinder/api-paste.ini
admin_tenant_name = service
admin_user = cinder
admin_password = password
- OpenStack에서 생성하는 VM 인스턴스의 볼륨을 사용하기 위한 LVM Physical Volume과 Logical Volume을 생성합니다.
# pvcreate /dev/sdb
# vgcreate cinder-volumes /dev/sdb
- cinder를 DB와 동기화 시켜줍니다.
# cinder-manage db sync
- cinder 서비스를 재시작해줍니다.
# service cinder-api restart
# service cinder-scheduler restart
# service cinder-volume restart
* OpenStack Network Service : Neutron
- OpenStack의 네트워크를 관리하는 Neutron 패키지를 설치합니다. 현재 구성 상으로는 Network Node가 분리되어 있기 때문에 컨트롤러에는 neutron-server만 설치하게 됩니다.
# apt-get install -y neutron-server
- neutron의 환경 설정 파일을 다음과 같이 수정해줍니다.
/etc/neutron/neutron.conf
[DEFAULT]
verbose = True
rabbit_password = password
[keystone_authtoken]
admin_tenant_name = service
admin_user = neutron
admin_password = password
/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
[DATABASE]
sql_connection = mysql://neutron:password@localhost/neutron
[OVS]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
enable_tunneling = True
local_ip = 10.10.10.10
[SECURITYGROUP]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
- 다음은 위의 ovs_plugin 설정파일에 관한 심볼링 링크를 걸어주고 neutron-server를 재시작해줍니다.
# ln -s /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini /etc/neutron/plugin.ini
# service neutron-server restart
* OpenStack Dashboard : Horizon
- 이제 컨트롤러 설치의 막바지에 왔습니다. 사용자가 OpenStack의 서비스를 좀더 편리하게 사용할 수 있도록 하는 Web-accessible GUI인 Horizon을 설치합니다.
# apt-get install -y openstack-dashboard memcached python-memcache
- 해당 ip를 통해 horizon에 접속할 수 있습니다.
여기까지가 OpenStack의 Controller를 구성하기 위한 설치 과정이었습니다. OpenStack의 설치과정이 조금 긴편입니다. 또한 설정파일이 잘못된 경우 서비스들이 제대로 동작하지 않기 때문에 주의가 필요합니다.
다음 포스팅에는 OpenStack의 Network Node의 설치 방법에 관해서 알아보도록 하겠습니다.
참고 사이트 : http://docs.openstack.org
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[4기 강북 김민호] Cloud Computing 환경 구성하기 (4) (0) | 2013.11.21 |
---|---|
[4기 강북 김민호] Cloud Computing 환경 구성하기 (3) (0) | 2013.11.20 |
[4기 강북 김민호] Cloud Computing 환경 구성하기 (1) (1) | 2013.11.19 |
[4기 신촌 김시재] Scrnsave 라이브러리를 이용한 화면보호기 #4 (0) | 2013.11.14 |
[4기 강북 유성배] 임베디드 시스템의 보안 : ARM TrustZone Technology (0) | 2013.11.11 |