2014년 12월 30일 화요일

라우팅 테이블 명령어와 사용방법 알아보기

라우팅 테이블 명령어와 사용방법 알아보기

라우팅 테이블이란?


라우팅(Routing)이라는 것은 목적지부터 도착지까지 패킷 전송이 가능하게 하는 것을 말합니다. 라우팅 테이블(Routing table)이라는 것은 라우팅한 내용들이 담겨 있는 테이블을 뜻하구요. 

1. 라우팅 테이블 명령어 

route add {-host| -net} 목적지 gw 게이트웨이 dev 장치명
route del {-host| -net} 목적지 gw 게이트웨이 dev 장치명

기본적인 명령어 형식은 위와 같습니다. 

-net: 네트워크에 접속하는 방법 예)192.168.137.0/24
-host: 호스트에 접속하는 방법 예)192.168.137.8

2. 기본 사용 방법

a. 192.168.167.0/24에 접속하는 방법

# route add -net 192.168.167.0/24 gw 192.168.137.1 dev eth0
또는
# route add -net 192.168.167.0  netmask 255.255.255.0 gw 192.168.137.1 dev eth0

b. 라우팅 테이블 지우기

# route del -net 192.168.167.0/24 gw 192.168.137.1 dev eth0
또는
# route del -net 192.168.167.0  netmask 255.255.255.0 gw 192.168.137.1 dev eth0

3. 그 외 라우팅 테이블 추가 방법

a. 파일 생성해서 부팅시 자동등록하게 하기

# vi /etc/sysconfig/network-scripts/route-eth0

첫 번째 방법,
192.168.167.0/24 via 192.168.137.1

두 번째 방법,
ADDRESS0=192.168.167.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.137.1
ADDRESS1=172.18.160.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.137.1

b. /etc/rc.d/rc.local에 등록하기

이 방법은 부팅하면서 해당 명령어를 읽는 방법입니다.

#vi /etc/rc.d/rc.local

제일 밑에 해당 명령어 등록

route add -net 192.168.167.0/24 gw 192.168.137.1 dev eth0

4. 라우팅 테이블 확인

# route -n

['나는 한다 Openstack 설치를' 시리즈 8편]매뉴얼대로 Centos에 openstack icehouse 설치하기, dashboard 설치하기

['나는 한다 Openstack 설치를' 시리즈 8편]매뉴얼대로 Centos에 openstack icehouse 설치하기, dashboard 설치하기

이번에는 웹에서 openstack 관리를 가능하게 해주는 dashboard를 설치하겠습니다.

dashboard 설치하기


controller node에 설치하시면 됩니다.

1. 필수 패키지 설치

# yum install -y memcached python-memcached mod_wsgi openstack-dashboard

2. /etc/sysconfig/memcached의 정보와 /etc/openstack-dagaboard/local_settings 일치시키기

# cat /etc/sysconfig/memcached  // port번호 확인해주세요.

# vi /etc/openstack-dahsboard/local_settings

밑에와 같은 부분을 찾아서 주석을 해제해주세요.

CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211'
}
}

Ex) 위에처럼 하니까 에러나서 저는 위에 있는 명령어 주석처리하고 밑에 처럼 했습니다.

CACHES = {
    'default': {
        'BACKEND' : 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION' : '127.0.0.1:11211'
    }
}

3. 접속가능한 host 설정하기

# vi /etc/openstack-dahsboard/local_settings

ALLOWED_HOSTS = ['*']


4. host 설정하기

# vi /etc/openstack-dashboard/local_settings

OPENSTACK_HOST = "controller"

5. http 서버로 접속이 가능한지 확인하기

# setsebool -P httpd_can_network_connect on

6. openstack 상태확인하기

# openstack-status

7. apache 웹 서버와 memcached 시작

# service httpd start
# service memcached start
# chkconfig httpd on
# chkconfig memcached on

8. openstack 접속하기

서버 웹 브라우저에서 controller node ip를 입력하여 접속합니다.

http://192.168.137.201/dashboard



여기까지가 openstack 필수설치 코스입니다. 앞으로 추가적으로 blockstorage, ochestration 같은 것들을 추가하여 openstack을 즐길 수 있도록 하겠습니다.

openstack 설치 시리즈 1편
openstack 설치 시리즈 2편
openstack 설치 시리즈 3편
openstack 설치 시리즈 4편
openstack 설치 시리즈 5편
openstack 설치 시리즈 6편
openstack 설치 시리즈 7편
openstack 설치 시리즈 8편

['나는 한다 Openstack 설치를' 시리즈 7편]매뉴얼대로 Centos에 openstack icehouse 설치하기, neutron 설치하기

['나는 한다 Openstack 설치를' 시리즈 7편]매뉴얼대로 Centos에 openstack icehouse 설치하기, neutron 설치하기(2)

기본 network망 구성하기


너무 작게 보일 경우 클릭해서 보시면 커집니다.


controller node에서 설정하기

1. 소스 파일 적용하기
# source /root/admin-openrc.sh

2. network 만들기

# neutron net-create ext-net --shared --router:external=True

3. 서브넷 만들기

# neutron subnet-create ext-net --name ext-subnet \
  --allocation-pool start=<할당받을 대역대>,end=<할당받을 대역대> \
  --disable-dhcp --gateway <외부로 통신 가능한 gateway주소> <외부와 통신가능한 netmask>

예) 제가 이용하는 서버의 물리적인 gateway는 172.16.7.254입니다. vmware나 hyper-v의 가상 라우터가 아니고 서버나 PC가 직접 연결되어 있는 라우터의 주소를 적으면 됩니다.

# neutron subnet-create ext-net --name ext-subnet \
  --allocation-pool start=172.16.7.221,end=172.16.7.225 \
  --disable-dhcp --gateway 172.16.7.254 172.16.7.0/24

4. tenant network 설정하기

# vi /root/demo-openrc.sh

밑의 내용 추가하기
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://192.168.137.201:35357/v2.0

# source demo-openrc.sh

# neutron net-create demo-net

5. tenant network 서브넷 만들기

# neutron subnet-create demo-net --name demo-subnet \
  --gateway <TENANT_NETWORK_GATEWAY> <TENANT_NETWORK_SUBNET>

예) 192.168.1.0/24 gateway 192.168.1.1을 이용하는 tenant network 설정 방법입니다.

# neutron subnet-create demo-net --name demo-subnet \
  --gateway 192.168.1.1 192.168.1.0/24

6. tenant network 라우터 만들기

# neutron router-create demo-router
# neutron router-interface-add demo-router demo-subnet
# neutron router-gateway-set demo-router ext-net

7. ping 테스트 해보기

# ping -c 4 172.16.7.221
PING 172.16.7.221 (172.16.7.221) 56(84) bytes of data.
64 bytes from 172.16.7.221: icmp_seq=1 ttl=127 time=2.25 ms
64 bytes from 172.16.7.221: icmp_seq=2 ttl=127 time=1.10 ms
64 bytes from 172.16.7.221: icmp_seq=3 ttl=127 time=1.52 ms
64 bytes from 172.16.7.221: icmp_seq=4 ttl=127 time=1.42 ms

--- 172.16.7.221 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 1.106/1.577/2.255/0.422 ms

여기까지 network node(neutron) 설정을 마치겠습니다.


2014년 12월 29일 월요일

['나는 한다 Openstack 설치를' 시리즈 6편]매뉴얼대로 Centos에 openstack icehouse 설치하기, neutron 설치하기

['나는 한다 Openstack 설치를' 시리즈 6편]매뉴얼대로 Centos에 openstack icehouse 설치하기, neutron 설치하기

이번에는 networking service인 neutron을 설치하도록 하겠습니다.

controller node 설정하기


1. neutron 데이터베이스 만들기

# mysql -u root -p
mysql> CREATE DATABASE neutron;
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY '<비밀번호>';
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY '<비밀번호>';
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'controller' \
IDENTIFIED BY '<비밀번호>';
mysql> exit

2. 인증 서비스 만들기

  • neutron user 만들기

    # keystone user-create --name neutron --pass <비밀번호> --email <email주소>
  • neutron user 연결하기

    # keystone user-role-add --user neutron --tenant service --role admin
  • neutron service 만들기

    # keystone service-create --name neutron --type network --description "OpenStack Networking"
  • 서비스 끝점 만들기

    # keystone endpoint-create \
      --service-id $(keystone service-list | awk '/ network / {print $2}') \
      --publicurl http://192.168.137.201:9696 \
      --adminurl http://192.168.137.201:9696 \
      --internalurl http://192.168.137.201:9696
3. networking components 설치하기

# yum install -y openstack-neutron openstack-neutron-ml2 python-neutronclient

4. 데이터베이스를 사용하기 위해 networking 설정하기

# openstack-config --set /etc/neutron/neutron.conf database connection \
  mysql://neutron:<비밀번호>@controller/neutron

5. 인증 서비스를 사용하기 위해 networking 설정하기

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  auth_strategy keystone
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_host controller
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_user neutron
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_password <비밀번호>

6. qpid 사용을 위한 networking 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  rpc_backend neutron.openstack.common.rpc.impl_qpid
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  qpid_hostname controller

7. 네트워크 변경 시 compute node에 알리기 위한 networking 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  notify_nova_on_port_status_changes True
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  notify_nova_on_port_data_changes True
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  nova_url http://192.168.137.201:8774/v2
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  nova_admin_username nova
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  nova_admin_tenant_id $(keystone tenant-list | awk '/ service / { print $2 }')
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  nova_admin_password <nova비밀번호>
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  nova_admin_auth_url http://192.168.137.201:35357/v2.0

8. ML2 플러그인 사용을 위한 networking 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  core_plugin ml2
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  service_plugins router

9. ML2 플러그인 설정하기

# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  type_drivers gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  tenant_network_types gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  mechanism_drivers openvswitch
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_gre \
  tunnel_id_ranges 1:1000
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup \
  firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup \
  enable_security_group True

10. networking 사용을 위한 compute 설정

# openstack-config --set /etc/nova/nova.conf DEFAULT \
  network_api_class nova.network.neutronv2.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_url http://192.168.137.201:9696
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_username neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_password <neutron비밀번호>
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_auth_url http://192.168.137.201:35357/v2.0
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  linuxnet_interface_driver nova.network.linux_net.LinuxOVSInterfaceDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  firewall_driver nova.virt.firewall.NoopFirewallDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  security_group_api neutron

11. ML2 심볼릭 링크 만들기

# ln -s plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

12. compute 서비스 재시작하기

# service openstack-nova-api restart
# service openstack-nova-scheduler restart
# service openstack-nova-conductor restart

13. neutron 서비스 시작하기

# service neutron-server start
# chkconfig neutron-server on

network node 설정하기


1. /etc/sysctl.conf 편집하기

#vi /etc/sysctl.conf

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

# sysctl -p

2. networking components 설치하기

# yum install -y openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-openvswitch

3. 인증 서비스 사용을 위한 networking 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  auth_strategy keystone
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_host controller
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_user neutron
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_password <neutron비밀번호>

4. qpid를 사용하기 위한 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  rpc_backend neutron.openstack.common.rpc.impl_qpid
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  qpid_hostname controller

5. ML2 플러그인을 위한 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  core_plugin ml2
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  service_plugins router
# vi /etc/neutron/neutron.conf
   verbose = True 추가

6. Layer-3(L3) 에이전트 설정하기

# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT \
  interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
# openstack-config --set /etc/neutron/l3_agent.ini DEFAULT \
  use_namespaces True
# vi /etc/neutron/l3_agent.ini
   verbose = True 추가

7. DHCP 에이전트 설정하기

# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT \
  interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT \
  dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT \
  use_namespaces True
# vi /etc/neutron/l3_agent.ini
   verbose = True 추가

GRE 프로토콜 방식으로 DHCP하기

# openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT \
  dnsmasq_config_file /etc/neutron/dnsmasq-neutron.conf
# vi /etc/neutron/dnsmasq-neutron.conf
   dhcp-option-force=26,1454  추가
#killall dnsmasq

8. metadata 에이전트 설정하기

# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  auth_url http://192.168.137.201:5000/v2.0
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  auth_region regionOne
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  admin_tenant_name service
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  admin_user neutron
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  admin_password <neutron비밀번호>
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  nova_metadata_ip controller
# openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT \
  metadata_proxy_shared_secret <metadata비밀번호(아무거나)>
# vi /etc/neutron/metadata_agent.ini
   verbose = True

9. controller node에서 compute 설정하기

# openstack-config --set /etc/nova/nova.conf DEFAULT \
  service_neutron_metadata_proxy true
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_metadata_proxy_shared_secret <위에서 입력한 비밀번호>
# service openstack-nova-api restart

10. ML2 플러그인 설정하기

# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  type_drivers gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  tenant_network_types gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  mechanism_drivers openvswitch
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_gre \
  tunnel_id_ranges 1:1000
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs \
  local_ip <network node의 tunnel 인터페이스 IP>
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs \
  tunnel_type gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs \
  enable_tunneling True
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup \
  firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup \
  enable_security_group True

11. open vswitch 서비스 설정하기

  • OVS 서비스 시작 및 등록

    # service openvswitch start
    # chkconfig openvswitch on
  • bridge 등록하기

    # ovs-vsctl add-br br-ex
  • bridge 인터페이스 등록하기

    # ovs-vsctl add-port br-ex <외부 네트워크 이더넷 카드 이름(초반에 만들어 놓은 이더넷)>

12. 설치 마무리하기

# ln -s plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

# cp /etc/init.d/neutron-openvswitch-agent /etc/init.d/neutron-openvswitch-agent.orig

# sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /etc/init.d/neutron-openvswitch-agent

# service neutron-openvswitch-agent start

# service neutron-l3-agent start

# service neutron-dhcp-agent start

# service neutron-metadata-agent start

# chkconfig neutron-openvswitch-agent on

# chkconfig neutron-l3-agent on

# chkconfig neutron-dhcp-agent on

# chkconfig neutron-metadata-agent on

compute node에서 설정하기


1. /etc/sysctl.conf 편집하기

#vi /etc/sysctl.conf

net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

#sysctl -p

2. networking 패키지 설치

# yum install -y openstack-neutron-ml2 openstack-neutron-openvswitch

3. 인증 서비스 사용을 위한 networking 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  auth_strategy keystone
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_host controller
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_user neutron
# openstack-config --set /etc/neutron/neutron.conf keystone_authtoken \
  admin_password <neutron비밀번호>

4. qpid 사용을 위한 networking 설정

# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  rpc_backend neutron.openstack.common.rpc.impl_qpid
# openstack-config --set /etc/neutron/neutron.conf DEFAULT \
  qpid_hostname controller

5. ML2 플러그인 설정하기

# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  type_drivers gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  tenant_network_types gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 \
  mechanism_drivers openvswitch
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_gre \
  tunnel_id_ranges 1:1000
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs \
  local_ip <compute node tunnel network IP 주소>
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs \
  tunnel_type gre
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs \
  enable_tunneling True
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup \
  firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
# openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup \
  enable_security_group True

6. OVS 설정하기

# service openvswitch start
# chkconfig openvswitch on
# ovs-vsctl add-br br-int

7. networking 사용을 위한 compute 설정

# openstack-config --set /etc/nova/nova.conf DEFAULT \
  network_api_class nova.network.neutronv2.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_url http://192.168.137.201:9696
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_username neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_password <neutron 비밀번호>
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  neutron_admin_auth_url http://192.168.137.201:35357/v2.0
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  linuxnet_interface_driver nova.network.linux_net.LinuxOVSInterfaceDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  firewall_driver nova.virt.firewall.NoopFirewallDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  security_group_api neutron

8. 설치 마무리하기

# ln -s plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
# cp /etc/init.d/neutron-openvswitch-agent /etc/init.d/neutron-openvswitch-agent.orig
# sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /etc/init.d/neutron-openvswitch-agent
# service openstack-nova-compute restart

2014년 12월 28일 일요일

['나는 한다 Openstack 설치를' 시리즈 5편]매뉴얼대로 Centos에 openstack icehouse 설치하기, compute node 설정 및 설치하기

['나는 한다 Openstack 설치를' 시리즈 5편]매뉴얼대로 Centos에 openstack icehouse 설치하기, compute node 설정 및 설치하기

이번에는 openstack에서 가상 OS를 구동해주는 compute service, compute node를 설치하겠습니다. 간략하게 compute node를 설명하면 AWS의 EC2, vmware의 vm등이 되겠습니다.

controller node에 compute 설치하기


1. controller node에 필수 패키지 설치하기

# yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient

2. mysql에 compute 데이터베이스 저장하기

# openstack-config --set /etc/nova/nova.conf \
  database connection mysql://nova:<비밀번호>@localhost/nova

3. qpid를 사용하기 위해 compute 설정하기

# openstack-config --set /etc/nova/nova.conf \
  DEFAULT rpc_backend qpid
# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller

4. my_ip, vncserver_listen, vncserver_proxyclient_address 설치하기

ip에는 controller node의 ip를 넣어주시면 됩니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.137.201
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 192.168.137.201
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.137.201

5. nova 데이터베이스 user 만들기

# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY '<비밀번호>';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller' \
IDENTIFIED BY '<비밀번호>';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY '<비밀번호>';
mysql> exit

6. 테이블 만들기

# su -s /bin/sh -c "nova-manage db sync" nova

7. keystone에 nova user 등록하기

# keystone user-create --name=nova --pass=<비밀번호> --email=<email주소>
# keystone user-role-add --user=nova --tenant=service --role=admin

8. controller node에서 compute가 잘 실행되게 하기 위해 openstack-config 설정하기

# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password <비밀번호>

9. 다른 openstack service에서 원활하게 접속하게 하기 위해 compute 등록하기

# keystone service-create --name=nova --type=compute \
  --description="OpenStack Compute"
# keystone endpoint-create \
  --service-id=$(keystone service-list | awk '/ compute / {print $2}') \
  --publicurl=http://192.168.137.201:8774/v2/%\(tenant_id\)s \
  --internalurl=http://192.168.137.201:8774/v2/%\(tenant_id\)s \
  --adminurl=http://192.168.137.201:8774/v2/%\(tenant_id\)s

10. compute service들 시작하기, chkconfig에 등록하기

# service openstack-nova-api start
# service openstack-nova-cert start
# service openstack-nova-consoleauth start
# service openstack-nova-scheduler start
# service openstack-nova-conductor start
# service openstack-nova-novncproxy start
# chkconfig openstack-nova-api on
# chkconfig openstack-nova-cert on
# chkconfig openstack-nova-consoleauth on
# chkconfig openstack-nova-scheduler on
# chkconfig openstack-nova-conductor on
# chkconfig openstack-nova-novncproxy on

11. 설정 잘 되었는지 확인하기

# nova image-list

compute node 설정하기


1. compute 패키지 설치하기

# yum install -y openstack-nova-compute

2. /etc/nova/nova.conf 파일 설정하기

# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:<비밀번호>@controller/nova
# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password <비밀번호>

3. qpid 사용을 위한 compute 설정하기

# openstack-config --set /etc/nova/nova.conf \
  DEFAULT rpc_backend qpid
# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller

4. 인스턴스에 원격 접속을 위해 compute 설정하기

ip는 compute node의 ip를 입력해주세요.
# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.137.203
# openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.137.203
# openstack-config --set /etc/nova/nova.conf \
  DEFAULT novncproxy_base_url http://192.168.137.201:6080/vnc_auto.html

5. image service를 실행하는 호스트 지정하기

# openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller

6. 하드웨어 가속 여부 확인하기

# egrep -c '(vmx|svm)' /proc/cpuinfo

위의 명령어를 실행 시켜서 1이나 그 이상의 숫자가 나오면 별다른 설정이 필요없지만 0이 나왔을 경우는 밑의 명령어를 추가로 실행해야 합니다.

# openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

7. compute service 시작하기

# service libvirtd start
# service messagebus start
# service openstack-nova-compute start
# chkconfig libvirtd on
# chkconfig messagebus on
# chkconfig openstack-nova-compute on

이렇게 compute service까지 설치를 마쳤습니다. 다음은 network service 설정하기 입니다.


['나는 한다 Openstack 설치를' 시리즈 4편]매뉴얼대로 Centos에 openstack icehouse 설치하기, glance 설치하기

['나는 한다 Openstack 설치를' 시리즈 4편]매뉴얼대로 Centos에 openstack icehouse 설치하기, glance 설치하기

이번에는 controller node에 설치되어 이미지 파일들을 관리하는 glance를 설치하겠습니다. glance는 controller node에만 설치하면 됩니다.

image service(glance) 설치하기


1. glance 설치하기

# yum install -y openstack-glance python-glanceclient

2. mysql에 glance 데이터베이스 만들기

# openstack-config --set /etc/glance/glance-api.conf database \
  connection mysql://glance:<비밀번호>@localhost/glance
# openstack-config --set /etc/glance/glance-registry.conf database \
  connection mysql://glance:<비밀번호>@localhost/glance

3. glance 데이터베이스 user 만들기

# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY '<비밀번호>';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'controller' \
IDENTIFIED BY '<비밀번호>';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY '<비밀번호>';
mysql> exit

4. image service 테이블 만들기

# su -s /bin/sh -c "glance-manage db_sync" glance

5. keystone에 glance user 등록하기

# keystone user-create --name=glance --pass=<비밀번호> \
   --email=<email주소>
# keystone user-role-add --user=glance --tenant=service --role=admin

6. 인증 서비스 사용을 위해 image service 설정하기

# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_host controller
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  admin_user glance
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  admin_password <비밀번호>
# openstack-config --set /etc/glance/glance-api.conf paste_deploy \
  flavor keystone
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_uri http://192.168.137.201:5000
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_host controller
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  admin_user glance
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  admin_password <비밀번호>
# openstack-config --set /etc/glance/glance-registry.conf paste_deploy \
  flavor keystone

7. 다른 openstack 서비스에서 glance로 접속하게 하기 위해 인증 서비스 등록하기

# keystone service-create --name=glance --type=image \
  --description="OpenStack Image Service"
# keystone endpoint-create \
  --service-id=$(keystone service-list | awk '/ image / {print $2}') \
  --publicurl=http://192.168.137.201:9292 \
  --internalurl=http://192.168.137.201:9292 \
  --adminurl=http://192.168.137.201:9292

8. glance 서비스 시작 및 chkconfig에 등록하기

# service openstack-glance-api start
# service openstack-glance-registry start
# chkconfig openstack-glance-api on
# chkconfig openstack-glance-registry on

glance가 잘 설치 되었는지 확인하기


1. image 파일 다운로드하기

# cd /usr/local/src
# wget http://ftp.daum.net/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso

2. image 업로드하기

# glance image-create --name=IMAGELABEL --disk-format=FILEFORMAT \
  --container-format=CONTAINERFORMAT --is-public=ACCESSVALUE < IMAGEFILE

다운 받은 centos 6.5를 업로드하려면 다음과 같이 작성해주세요.
# glance image-create --name=CentOS_6.5_Final --disk-format=iso \
  --container-format=bare --is-public=true < CentOS-6.5-x86_64-minimal.iso

3. image 확인하기

# glance image-list

다음과 같은 화면이 나오면 성공!
+--------------------------------------+------------------+-------------+------------------+-----------+--------+
| ID                                   | Name             | Disk Format | Container Format | Size      | Status |
+--------------------------------------+------------------+-------------+------------------+-----------+--------+
| 3afbb6bf-cb6b-4bd9-afc4-3d74ce1178d7 | CentOS_6.5_Final | iso         | bare             | 417333248 | active |
+--------------------------------------+------------------+-------------+------------------+-----------+--------+

glance에 이미지 업로드 하기는 다음 포스트에도 있으니 참고 바랍니다.


glance 설정하기를 마치겠습니다.


2014년 12월 27일 토요일

['나는 한다 Openstack 설치를' 시리즈 3편]매뉴얼대로 Centos에 openstack icehouse 설치하기, keystone 설치하기

['나는 한다 Openstack 설치를' 시리즈 3편]매뉴얼대로 Centos에 openstack icehouse 설치하기, keystone 설치하기

openstack의 보안에서 가장 핵심이 되는 keystone을 설치하겠습니다. keystone의 구동 방식을 표현한 그림을 첨부하겠습니다. 그림을 보면 금방 이해하실 수 있을 겁니다.
잘 안 보이시면 클릭해서 보셔도 됩니다.

keystone 설치하기


keystone은 controller node에서만 설치하시면 됩니다.

1. openstack-keystone python-keystoneclient

# yum install -y openstack-keystone python-keystoneclient

2. keystone 데이터베이스를 생성하는 명령어입니다. 두번째 줄의 keysone_dbpass에는 사용하시고자 하는 keystone의 비밀번호를 넣어주세요. localhost 부분은 

# openstack-config --set /etc/keystone/keystone.conf \
   database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone

3. mysql에 root로 접속을 합니다.

#mysql -u root -p

4. keystone 데이터베이스 유저를 생성하는 과정입니다. 여기서도 keystone_dbpass에는 위에서 넣은 keystone 비밀번호와 같은 것을 입력하면 됩니다. 

mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';  // 'keystone'@'localhost' 이 부분에서 localhost는 keystone 데이터베이스 생성할 때 넣었던 컴퓨터 이름이랑 맞춰주세요.
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> exit

5. keystone 서비스를 위한 데이터베이스 테이블을 만드는 과정입니다.

# su -s /bin/sh -c "keystone-manage db_sync" keystone

6. 공유된 암호를 이용하여 인증 서비스와 다른 오픈스택 서비스간에 사용권한 토큰을 정의하기 위해 openssl을 이용하여 임의의 토큰을 생성하고 생성된 토큰을 conf 파일에 저장하는 과정입니다.

# ADMIN_TOKEN=$(openssl rand -hex 10)
# echo $ADMIN_TOKEN
# openstack-config --set /etc/keystone/keystone.conf DEFAULT \
   admin_token $ADMIN_TOKEN

7. 생성된 데이터에 대한 엑세스를 제한하고 서명키와 인증서를 생성합니다.

# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone

# chown -R keystone:keystone /etc/keystone/ssl

# chmod -R o-rwx /etc/keystone/ssl

8. keystone 시작 및 chkconfig에 등록하기

# service openstack-keystone start

# chkconfig openstack-keystone on

9. 기본적으로 인증 서비스는 만료된 토큰을 데이터베이스에 무기한으로 저장하기 때문에 크론을 이용하여 주기적으로 제거해주는 것이 좋습니다. 

# (crontab -l -u keystone 2>&1 | grep -q token_flush) || \
echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone

users, tenants, roles 설정하기


keystone을 설치하고 나면 users, tenants, roles 등을 설정해야 합니다.

1. token 만들기, admin_token에는 /etc/keystone/keystone.conf 파일에 있는 admin_token을 입력해줍니다.

$ export OS_SERVICE_TOKEN=ADMIN_TOKEN(예:vn13ndlasienc)

$ export OS_SERVICE_ENDPOINT=http://192.168.137.201:35357/v2.0

2. admin user 만들기

$ keystone user-create --name=admin --pass=<비밀번호> --email=<email주소>

3. admin role 만들기

$ keystone role-create --name=admin

4. admin tenant 만들기

$ keystone tenant-create --name=admin --description="Admin Tenant"

5. user, role, tenant 연결하기

$ keystone user-role-add --user=admin --tenant=admin --role=admin

6. 일반 user 만들기

$ keystone user-create --name=demo --pass=<비밀번호> --email=<email주소>

$ keystone tenant-create --name=demo --description="Demo Tenant"

$ keystone user-role-add --user=demo --role=_member_ --tenant=demo

7. service tenant 만들기

$ keystone tenant-create --name=service --description="Service Tenant"

services와 API 끝점 설정하기


1. service 엔트리 만들기

$ keystone service-create --name=keystone --type=identity \
  --description="OpenStack Identity"

$ keystone endpoint-create \
  --service-id=$(keystone service-list | awk '/ identity / {print $2}') \
  --publicurl=http://192.168.137.201:5000/v2.0 \
  --internalurl=http://192.168.137.201:5000/v2.0 \
  --adminurl=http://192.168.137.201:35357/v2.0

인증서비스 설치 확인하기


1. 인증서비스가 잘 설치되었는지 확인하기 위하여 OS_SERVICE_TOKEN 와 OS_SERVICE_ENDPOINT 지우기

$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

2. admin의 인증 토큰을 활용하여 일반 user 이름 기반 인증 사용하기

$ keystone --os-username=admin --os-password=<비밀번호> \
  --os-auth-url=http://192.168.137.201:35357/v2.0 token-get

3. admin-openrc.sh 파일 설정하기

# vi /root/admin-openrc.sh

밑의 내용을 입력해주세요.
export OS_USERNAME=admin
export OS_PASSWORD=<비밀번호>
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://192.168.137.201:35357/v2.0

4. admin-openrc.sh 파일 적용하기

$ source admin-openrc.sh

5. admin-openrc.sh 파일이 적용 잘 되었는지 확인하기

$ keystone token-get

6. 일반 유저 sh 파일 만들기

#vi /root/demo-openrc.sh

밑의 내용을 입력해주세요.

export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://192.168.137.1:35357/v2.0

7. user 확인하기

$ keystone user-list

$ keystone user-role-list --user admin --tenant admin

여기까지 해서 에러없이 모두 잘 나온다면 인증 서비스(keystone) 설정에 문제가 없는 것입니다.

['나는 한다 Openstack 설치를' 시리즈 2편]매뉴얼대로 Centos에 openstack icehouse 설치하기, 기본 설정하기 2편

['나는 한다 Openstack 설치를' 시리즈 2편]매뉴얼대로 Centos에 openstack icehouse 설치하기, 기본 설정하기 2편

mysql 설치


# yum install -y mysql mysql-server MySQL-python

설치 후 /etc/my.cnf 파일 수정해주세요.

[mysqld]
...
bind-address = 192.168.137.201 // contorller IP 입력
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

mysql 시작하기


#/etc/init.d/mysqld start
#chkconfig mysqld on
#mysqladmin -u root password <비밀번호>

mysql db 설치하기


#mysql_install_db
#mysql_secure_installation  // 이후 나오는 항목 중에 노란색만 입력하세요.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):비밀번호 입력
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] n
 ... skipping.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] n
 ... skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...



All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

controller node 빼고 모든 node에 python 설치하기

# yum install -y MySQL-python

openstack package 설치하기

 모든 node에서 설치해주세요.

# yum install -y yum-plugin-priorities

# yum install -y http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-3.noarch.rpm

# yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

# yum install -y openstack-utils

# yum install -y openstack-selinux

# yum upgrade -y

# shutdown -r 0


messaging server 설치하기

여기서부터는 다시 controller node에서만 설치합니다.

messaging server에서 사용하는 message broker는 세가지가 있는데 redhat계열에서는 Qpid를 이용합니다.

  • RabbitMQ
  • Qpid
  • ZeroMQ
# yum install -y qpid-cpp-server

# vi /etc/qpidd.conf  // qpidd.conf 파일 맨 밑에 auth=yes를 밑의 사진처럼 변경합니다.


# service qpidd start

# chkconfig qpidd on

여기까지 하면 이제 openstack 설치의 기초 공사가 끝난겁니다.


2014년 12월 26일 금요일

port number에 대해서 알아봅시다.

port number에 대해서 알아봅시다.

 port라는 것은 인터넷이나 ftp처럼 특정 행동을 하는 응용프로그램들이 이동하는 통로라고 표현할 수 있습니다. 
 서버에서 80번 port를 막으면 인터넷 접속이 안되는 것으로 보아 port는 다른 뜻처럼 항구의 의미를 지닌 것 같습니다. 

 사용 가능한 port의 개수는 총 65,536개로 2의16제곱 수입니다. port의 숫자가 너무 많아서 IANA에서는 자주 사용하는 port를 이미 지정해 놓았습니다. 
 0~1023번까지 총 1024개를 미리 지정을 해 놓았는데 이것을 잘 알려진 포트(well-known port)라고 부릅니다.
 1024~49151번까지 총 48,128 개는 등록된 포트(registerd port)라고 불리구요.
 49152~65535번은 동적 포트(dynamic port)라고 불립니다.
IANA에서 지정한 port는 공개를 해놓았는데요. 그 포트들을 적으면서 포스팅을 마치겠습니다.


2014년 12월 25일 목요일

['나는 한다 Openstack 설치를' 시리즈 1편]매뉴얼대로 Centos에 openstack icehouse 설치하기, 기본 설정

['나는 한다 Openstack 설치를' 시리즈 1편]매뉴얼대로 Centos에 openstack icehouse 설치하기, 기본 설정

이전에 시도했던 'packstack으로 설치하기'와는 달리 openstack을 하나하나 알아가기 위해서 매뉴얼을 보고 설치를 진행하였습니다.

설치환경

* 플랫폼: windows 2012 R2에 Hyper-v
* OS: Centos 6.6
* 용량: 16GB + LVM 15GB
* 네트워크: 192.168.137.0/24

OS 준비하기

openstack을 설치하려면 기본적으로 3대의 서버가 있어야 합니다.

각 서버의 최소 사양은 아래와 같습니다.
  • Controller Node: 1 processor, 2 GB memory, and 5 GB storage
  • Network Node: 1 processor, 512 MB memory, and 5 GB storage
  • Compute Node: 1 processor, 2 GB memory, and 10 GB storage

openstack 구조도 이해하기

openstack 홈페이지에서 따온 그림입니다. 이번에 하는 설치에서는 위 그림과 같은 형식으로 설치하겠습니다. 

Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0) 해결하기

Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0) 해결하기

yum update로 centos를 업데이트 하다가 갑자기 중지가 되고 로그인이 안되어서 재시작을 하고 하니 "unable to mount root fs on unknown-block(0 0)" 이런 에러를 만났습니다.
에러를 어떻게 잡아야 하나 하며 구글링을 하던 중 간단한 해결 방법을 발견했습니다.

찾아보니 yum update 중 뭔가가 잘못 되어서 kernel이 꼬인 것이라고 하니 풀어주면 되는 간단한 방법입니다.

  1. centos 시작 화면에서 아무 버튼이나 눌러서 kernel 선택 화면으로 넘어갑니다.


  2. kernel 선택 화면에서 보면 제일 위에 있는 것이 최근 업데이트 된 kernel이고 밑이 예전의 커널입니다. 커널명을 잘 외워둡시다. 밑의 커널로 부팅합니다.


  3. 다음 설치된 커널을 확인합니다. 


  4. 문제가 되는 커널은 과감하게 삭제해주세요.

    #yum remove -y kernel-2.6.32-504.3.3.el6.x86_64

  5. 다음은 다시 yum update를 해서 온전한 커널을 받아주세요.


  6. 설치 후 shutdown -r 0를 입력하여 재식하여 부팅이 잘 되는지 확인해주시고 잘 된다면 완료입니다.

    #shutdown -r 0  // 재시작
    #uname -r  // 재시작 후 kernel 버전 확인

ifconfig를 이용하여 간단하게 ip추가하기

ifconfig를 이용하여 간단하게 ip추가하기

가상화를 이용해 테스트를 하다 보면 네트워크를 여러개 추가 할 경우가 많습니다. 그 때마다 ifcfg-eth 파일을 여러개 만들기 귀찮다면 간단하게 추가하는 방법이 있습니다.

바로 ifconfig를 이용하는 방법인데요.

#ifconfig -a 

현재 추가된 eth가 몇 번인지 확인합니다.

만약 추가된 eth가 eth3이라면 다음과 같이 하면 됩니다.

#ifconfig eth3 <추가할 IP> netmask <대역대> up

이렇게 하면 간단하게 ip가 추가됩니다.

2014년 12월 24일 수요일

/.bashrc를 이용하여 손쉽고 간편하게 영구적인 별칭(alias) 만들기

/.bashrc를 이용하여 손쉽고 간편하게 영구적인 별칭(alias) 만들기

리눅스 서버를 운영하다 보면 혹은 리눅스를 처음 만지는 사람들에게 'ls -l' 같이 옵션이 붙은 명령어를 자주 이용하지만 다소 길어져서 줄이고 싶다~ 하시는 분들이 있을 겁니다. 
그래서 이번에는 쉽고 간단하게 영구적인 별칭(alias) 만들기를 해보겠습니다. 

저는 Centos6.5에서 진행했습니다.

먼저, root로 접속을 합니다.

#vi ~/.bashrc  //bashrc에 접속하기 입니다.

접속하면 다음과 같은 화면을 보실 수 있습니다.

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

기본적으로 rm, cp, mv를 입력시에는 사용자에게 확인 받도록 되어 있습니다.

그러면 이번에는 vi를 입력했을 경우에 vim이 실행되도록 해보겠습니다.
앞에가 입력하는 명령어 뒤에가 실행되는 명령어입니다.

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

주황색으로 칠해진 부분을 추가했습니다. 이제 앞으로 vi를 입력하면 vim이 실행되게 되어지는 겁니다.

중요한 점은 ~/.bashrc를 변경하면 반드시 source 명령어로 적용을 시켜주어야 합니다.

#source ~/.bashrc

이러면 적용까지 끝 마쳤고 테스트를 해봐야합니다.

#vi /etc/selinux/config


적용이 잘 되었다면 위의 그림과 같이 오색찬란하게 나와야 합니다.

이상으로 별칭(alias)만들기 끝입니다.

2014년 12월 23일 화요일

HTTP 상태 코드

HTTP 상태 코드


인터넷을 하다보면 다양하게 마주치는 상태 코드들이 있습니다. 저는 가장 많이 본 상태코드는 403이었는데요. 상태 코드들을 찾다보니 다양한 코드들이 많아서 간단하게 정리를 해보았습니다.

1xx 조건부 응답 코드


이 상태의 상태 코드는 상태-라인과 선택적 헤더만을 포함하는 임시의 응답을 나타내고 빈 라인에 의해서 종결되는 코드입니다.


  • 100(계속): 서버는 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타냄
  • 101(프로토콜 전환): 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중
  • 102(처리)

2xx 응답이 성공한 상태


2로 시작하는 상태 코드는 클라이언트의 요청이 정상적으로 처리되는 것을 나타냅니다.


  • 200(성공): 서버가 요청을 제대로 처리했다는 뜻
  • 201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스를 작성했다는 뜻
  • 202(허용됨): 서버가 요청을 접수했지만 아직 처리 중
  • 203(신뢰할 수 없는 정보): 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하는 중
  • 204(콘텐츠 없음): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음
  • 205(콘텐츠 재설정): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는 것 
  • 206(일부 콘텐츠): 서버가 GET 요청의 일부만 성공적으로 처리
  • 207(다중 상태)
  • 208(이미 보고됨)

3xx 리다이렉션 완료 상태


  • 300(여러 선택항목): 서버가 요청에 따라 여러 조치를 선택할 수 있음
  • 301(영구 이동): 요청한 페이지를 새 위치로 영구적으로 이동
  • 302(임시 이동): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다는 뜻
  • 303(기타 위치 보기): 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시
  • 304(수정되지 않음): 마지막 요청 이후 요청한 페이지는 수정되지 않음
  • 305(프록시 사용): 요청자는 프록시를 사용하여 요청한 페이지만 액세스 가능
  • 307(임시 리다이렉션): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다는 뜻
  • 308(영구 리다이렉션)

4xx 요청 오류 상태


4로 시작하는 상태 코드를 만나면 짜증부터 확나게 됩니다. 그래서 'http 403 에러' 등등의 검색어를 많이 이용하시죠. 이렇듯 4로 시작하는 에러는 오류를 나타내주는 코드입니다.

  • 400(잘못된 요청): 서버가 요청의 구문을 인식하지 못했을 때
  • 401(권한 없음): 이 요청은 인증이 필요하며 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있을 때
  • 403(금지됨): 서버에 접속 할 수 있는 권한이 없을 경우
  • 404(찾을 수 없음): 서버에 페이지가 존재하지 않을 경우
  • 405(허용되지 않는 방법): 요청에 지정된 방법을 사용할 수 없음
  • 406(허용되지 않음): 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음
  • 407(프록시 인증 필요): 이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야 함 
  • 408(요청 시간초과): 서버의 요청 대기 시간 초과
  • 409(충돌): 서버가 요청을 수행하는 중에 충돌이 발생
  • 410(사라짐): 서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시
  • 411(길이 필요): 서버는 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락 않음
  • 412(사전조건 실패): 서버가 요청자가 요청 시 부과한 사전조건을 만족하지 않음
  • 413(요청 속성이 너무 큼): 요청이 너무 커서 서버가 처리 불가능
  • 414(요청 URI가 너무 긺): 요청 URL이 너무 길어 서버가 처리 불가
  • 415(지원되지 않는 미디어 유형): 요청이 요청한 페이지에서 지원하지 않는 형식
  • 416(처리할 수 없는 요청범위): 요청이 페이지에서 처리할 수 없는 범위
  • 417(예상 실패): 서버는 Expect 요청 헤더 입력란의 요구사항을 만족할 수 없음
  • 420(Enhance Your Calm, 트위터)
  • 422(처리할 수 없는 엔티티)
  • 423(잠김)
  • 424(실패된 의존성)
  • 424(메쏘드 실패)
  • 425(정렬되지 않은 컬렉션)
  • 426(업그레이드 필요)
  • 428(전제조건 필요)
  • 429(너무 많은 요청)
  • 431(요청 헤더 필드가 너무 큼)
  • 444(응답 없음, Nginx)
  • 449(다시 시도, 마이크로소프트)
  • 450(윈도 자녀 보호에 의해 차단됨, 마이크로소프트)
  • 451(법적인 이유로 이용 불가)
  • 451(리다이렉션, 마이크로소프트)
  • 494(요청 헤더가 너무 큼, Nginx)
  • 495(Cert 오류, Nginx)
  • 496(Cert 없음, Nginx)
  • 497(HTTP to HTTPS, Nginx)
  • 499(클라이언트가 요청을 닫음, Nginx)

5xx 서버 오류 시 상태 코드


서버가 클라이언트의 요청을 수행하지 못했을 경우에 나타나게 됩니다.

  • 500(내부 서버 오류): 서버에 오류가 발생하여 요청 수행 불가
  • 501(구현되지 않음): 서버에 요청을 수행할 수 있는 기능이 없음
  • 502(불량 게이트웨이): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았을 경우
  • 503(서비스를 사용할 수 없음): 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용 불가
  • 504(게이트웨이 시간초과): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했을 경우
  • 505(HTTP 버전이 지원되지 않음): 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음
  • 506(Variant Also Negotiates)
  • 507(용량 부족)
  • 508(루프 감지됨)
  • 509(대역폭 제한 초과)
  • 510(확장되지 않음)
  • 511(네트워크 인증 필요)
  • 598(네트워크 읽기 시간초과 오류, 알 수 없음)
  • 599(네트워크 연결 시간초과 오류, 알 수 없음)

2014년 12월 22일 월요일

RPM 명령어 & 사용방법

RPM 명령어 & 사용방법

RPM 이란?

- RPM 패키지와 RPM 패키지를 관리하기 위한 도구
- RPM을 사용하면 편리하게 각종 소프트웨어의 설치 및 업데이트 가능

RPM 파일명 들여다보기





RPM 명령어

 rpm -I : rpm 설치
 rpm -U : 이미 설치된 패키지 업데이트 혹은 없으면 설치
 rpm -v : 설치 정보 출력(verbose 모드)
 rpm -e : 패키지 삭제(의존성 무시 : --nodeps)
 rpm -qa : 모든 패키지에 대하여 질의
 rpm -qi : 패키지 이름, 버전, 설명 정보 출력
 rpm -qR : 현재 패키지가 의존하는 패키지 목록 출력
 rpm -ql : 패키지 안의 파일 출력
 rpm -qd : 문서 파일만 출력
 rpm -qc : 설정 파일만 출력
 rpm -qf : 이미 설치된 파일이 어느 패키지에 속한것인지 질의
 rpm -qpl : 설치되지 않은 패키지 파일안의 파일들을 출력
 rpm -qpi : 설치할 패키지 파일의 상세 정보를 출력

RPM 사용방법


RPM 확인하기

rpm -qa |grep glusterfs // 해당 RPM 유무 확인


설치하기

rpm -Uvh glusterfs-3.5.3-1.el6.x86_64.rpm //설치되어 있는 RPM이 있으면 업데이트 없으면 설치하면서 진행사항 보여주기

삭제하기

rpm -e glusterfs-3.5.3-1.el6.x86_64.rpm  // rpm 삭제하기
rpm -e glusterfs-3.5.3-1.el6.x86_64.rpm -nodeps // 의존성 때문에 삭제 불가능시 사용
rpm -e glusterfs-3.5.3-1.el6.x86_64.rpm -nodeps –allmatches// 두개 이상 동일 이름 RPM 삭제시 사용

2014년 12월 20일 토요일

glance를 이용하여 openstack에 이미지 업로드하기

glance를 이용하여 openstack에 이미지 업로드하기

glance는 openstack에서 이미지 관리를 담당합니다. 그래서 openstack에 이미지를 업로드 할 때에는 glance를 이용하는데요 사용법은 간단합니다.

  1. 이미지 얻기

    이미지를 업로드 하려면 먼저 이미지가 필요한데요 저는 wget을 이용하여 다운 받은 다음에 업로드 하겠습니다.
    #wget http://ftp.daum.net/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso
    --2014-12-17 20:03:20--  http://ftp.daum.net/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso
    Resolving ftp.daum.net... 117.52.11.181
    Connecting to ftp.daum.net|117.52.11.181|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 417333248 (398M) [application/octet-stream]
    Saving to: “CentOS-6.5-x86_64-minimal.iso”

    100%[======================================>] 417,333,248 3.42M/s   in 2m 0s

    2014-12-17 20:05:21 (3.30 MB/s) - “CentOS-6.5-x86_64-minimal.iso” saved [417333248/417333248]

    위의 메시지가 나오면서 다운로드가 완료됩니다.
  2. glance에 이미지 업로드하기 
    #glance image-create --name "CentOS-6.5-x86_64-minimal" --disk-format iso \
    --container-format bare --is-public True --progress <CentOS-6.5-x86_64-minimal.iso
  3. glance에 삽입된 이미지 확인하기

    #glance image-list

2014년 12월 17일 수요일

openstack 사용자 비밀번호 변경하기

openstack keystone 사용자 비밀번호 변경하기

openstack은 keystone이라는 인증 구성 요소가 계정을 관리합니다. 그래서 모든 계정의 비밀번호는  keystone을 통해서 변경해야 합니다.

비밀번호 바꾸는 거는 상당히 간단합니다.

  1. admin_token 알아내기
    #vi /etc/keystone/keystone.conf  // 여기에 admin_token이 있습니다.
    윗 부분에
    admin_token=smd34235klasdjhkl32534
    이렇게 생긴 줄이 보일 겁니다. 그러면 = 다음부터 잘 복사를 합시다.
  2. 비밀번호 변경하기
    #export SERVICE_TOKEN=smd34235klasdjhkl32534
    #export OS_SERVICE_ENDPOINT=http://192.168.137.61:35357/v2.0
    #keystone user-password-update --pass <password> <user-id>
이것으로 비밀번호 변경은 약 5분 만에 끝났습니다.

Packstack으로 openstack 설치하기

요새 한창 Openstack을 설치하는 중이라 여러가지 방법으로 시도를 해보았는데요. 여러 방법 중에서 packstack으로 설치하는 방법이 제일 쉬워서 기록을 해봅니다.

기본적으로 openstack을 운영하려면 최소 2대의 서버가 필요합니다. 


테스트 용으로 사용을 할 거라면 controller와 compute 먼저 두 대의 서버를 준비해주세요.
  • 설치 환경
    OS: centos6.5
    플랫폼: Hyper-v
    HDD: 32 GB
    네트워크: control 192.168.137.61, compute 192.168.137.62
보통은 public, private 네트워크 두 개를 만들어서 하는 것이 정석이나 이번은 내부와 외부 같은 ip를 쓰겠습니다.

공통 설정

  1. selinux 설정 변경
    #vi /etc/selinux/config
    selinux = disabled  /disabled로 변경
    #setenforce 0  // 재시작 전까지 selinux disabled로 설정
  2. NTP 시간 동기화
    #yum install -y ntp
    #/etc/init.d/ntpd restart
    #ntpdate pool.ntp.org
    #chkconfig on
  3. icehouse와 epel 소스 설치하기
    #yum install -y http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-3.noarch.rpm http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  4. openstack 설치 도구 및 시스템 업데이트
    #yum install -y openstack-utils openstack-selinux
    #yum update -y
    #shutdown -r 0

controller에서 설정하기

  1. packstack 설치하기
    #yum install -y openstack-packstack
  2. 설정파일 생성하기
    #packstack --gen-answer-file=/root/icehouse_openstack.cfg
  3. 생성된 설정 파일 변경하기
    #vi /root/icehouse_openstack.cfg

    Control에 들어가는 부분
    CONFIG_CINDER_HOST=192.168.137.61
    CONFIG_NOVA_COMPUTE_HOSTS=192.168.137.61
    CONFIG_SWIFT_STORAGE_HOSTS=192.168.137.61

    Compute에 들어가는 부분
    CONFIG_SWIFT_PROXY_HOSTS=192.168.137.62
  4. Control node & compute node 설치
    control node에서 packstack으로 설치를 하면 ssh를 통해 compute도 같이 설치하기 때문에 설치 전에 비밀번호를 물어봅니다.
    #packstack --answer-file=/root/icehouse_openstack.cfg

    밑으로 쭉~쭉쭉 설치가 진행 됩니다.
  5. 설치 완료 후 웹 브라우저에서 control의 ip로 접속을 하면 다음 과 같은 화면을 볼 수 있습니다.

openstack이란?

몇 년 전부터 클라우드 시스템이 화두가 되면서 떠오르고 있는 것이 있습니다. 바로 오픈스택인데요. 클라우드 OS하면 거의 오픈스택을 떠올리게 되었을 정도로 오픈스택은 클라우드에 빠져선 안될 OS가 되었습니다.

Openstack에 대하여


Opnstack은 대시보드를 통해 compute, storage, network 등 거대한 자원 풀을 제어 할 수 있는 클라우드 운영 체제입니다. Openstack의 특징은 이러한 자원들을 모두 웹 인터페이스를 통해서 관리할 수 있다는 점입니다.

Openstack을 구성하는 요소들

Openstack은 다양하면서 상이한 부분으로 구성됩니다. Openstack는 오픈소스기 때문에 모든 사람들은 자신이 필요한 만큼 구성 요소를 추가 할 수 있습니다. 그러나 Openstack 커뮤니티에서는 Openstack의 운영에 있어 중심이 되는 핵심 구성 요소 9가지를 선정했습니다.

  • nova
    nova는 Openstack의 기본 컴퓨팅 엔진입니다. nova는 다양한 가상 머신과 인스턴스를 구축하고 관리하는 역할을 합니다.
  • swift
    swift는 간단하게 말하면 파일 저장 시스템입니다. 디스크 드라이브의 위치로 파일을 참조한다는 기존의 생각과는 달리 개발자는 파일을 참조하는 고유 식별자를 이용하여 정보 저장 위치를 Openstack이 결정하도록 할 수 있습니다. 개발자는 소프트웨어 뒤에 단일 시스템에서 용량에 대한 걱정을 하지 않아도 되며 확장에 용이하다는 장점이 있습니다. 또한 데이터가 서버나 네트워크의 장애시에도 자동으로 백업이 되는 장점이 있습니다.
  • cinder
    cinder는 블록 스토리지 요소입니다. swift 보다 좀 더 전통적인 저장 방식과 유사합니다. 
  • neutron
    neutron은 Openstack용 네트워크 제어 장치입니다. neutron은 신속하고 효율적인 통신을 가능하게 합니다.
  • horizen
    horizen은 대시보드 구성 요소입니다. 대시보드를 통해서 가상 머신들을 설치 및 관리가 가능하고 모니터링을 할 수 있습니다.
  • keystone
    keystone은 인증 서비스를 제공합니다. keystone에 등록된 사용자들만 openstack을 사용할 수 있습니다. 쉽게 말하면 집 마다 하나씩은 있는 자물쇠라고 생각하면 됩니다.
  • glance
    glance는 Opnstack에 이미지(iso같은 os 설치용 파일)를 제공합니다. glance에 있는 이미지를 이용하여 사용자들은 OS를 설치할 수가 있습니다.
  • ceilometer
    ceilometer는 과금 서비스를 제공하는 구성 요소입니다. ceilometer를 통해 openstack을 이용하는 사용자에게 실시간으로 개개인에 알맞은 과금량을 보여줍니다.
  • heat
    heat는 미리 만들어 놓은 스크립트와 템플릿을 이용하여 다음 인스턴스 생성 때 자동으로 개발 인프라를 구축할 수 있는 기능을 제공하는 요소입니다.

Openstack의 구성도


OpenStack Folsom Conceptual Architecture