Setting GOPATH & Basic golang 개발

Refer 1: SettingGOPATH · golang/go Wiki · GitHub

Refer 2: Go 코드를 작성하는 방법 · golang-kr/golang-doc Wiki · GitHub

특별히 공유 목적을 위해 만든 글은 아니다. 그냥 예전에 했던 설정 방식이 기억 나지 않아 구글링을 하다가 리프레시해둬야 겠다는 단순한 의도로 끄적 거려 둠. 그러나 누군가에겐 조금의 도움이 되었기를 ...


Zsh

  • Add to ~/.zshrc

    export GOPATH=$HOME/go
  • source it

    source ~/.zshrc

Bash

  • Add to ~/.bash_profile

    export GOPATH=$HOME/go
  • source it

    source ~/.bash_profile
블로그 이미지

Barracuda

Bryan의 Tech-Log. 기록은 역사다. 나는 역사를 공유하고 그 안에서 배우며, 또 다른 역사를 써나간다

Tag Bash, GO, golang, macos, zsh

댓글을 달아 주세요


  • MacOS 기본 터미널 bash command-line
    • ⌥ + ← 또는 ⌥ + → : 커서를 왼쪽 단어 또는 오른쪽 단어로
    • ⌘ + ← 또는 ⌘ + → : 커서를 start 또는 end of line 으로
  • zsh 의 경우
    • ESC B 또는 ESC F : 커서를 왼쪽 또는 오른쪽 단어로 이동(불편하기 짝이 없음)
    • ⌃ + a 또는 ⌃ + e : 커서를 start 또는 end of line 으로

bash 기본 터미널, zsh 각각에서 별도 설정을 하지 않았을 경우 위의 스타일 대로 커서가 이동 된다. 본인은 MacOS Catalina에서 'Oh My Zsh' 와 iterm2 를 사용중인데, 아무래도 ⌥ + ← 또는 ⌘ + ← 방식에 익숙해져 있어서 다음의 방법대로 설정 사용중이다.


zsh에서 MacOS 기본 bash 터미널 커서 움직임과 동일하게 설정하는 방법

  1. .zshrc에 아래 line 들 추가

    bindkey "[D" backward-word
    bindkey "[C" forward-word
    bindkey "^[a" beginning-of-line
    bindkey "^[e" end-of-line
  2. iterm2의 preferences > Keys > Key Bindings

    • ⌘ ← > Action: Send Escape Sequence 에 a 입력 > OK
    • ⌘ → > Action: Send Escape Sequence 에 e 입력 > OK

Key 바인딩을 하고 나면 스크린 캡처에서 표시된 것 처럼 확인 가능하다.

위 1, 2의 과정을 거쳐 설정을 완료하면 되고, 단어 사이의 이동인  ⌥ + ← 또는 ⌥ + → 은 1번 과정 하나 만으로 충분해서 2번의 별도 Key 바인딩이 필요 없다. 다만 경고 beep 음이 약간 거슬릴 수 있는데, 이건 세부 설정을 따로 하면 쉽게 해결될 수 있을 듯.

- Barracuda -


블로그 이미지

Barracuda

Bryan의 Tech-Log. 기록은 역사다. 나는 역사를 공유하고 그 안에서 배우며, 또 다른 역사를 써나간다

댓글을 달아 주세요


Openstack Mitaka 최종본(v6) 설치 및 설정 종합본



본 편의 도입 및 준비 부분은, 위의 지난 2016년 9월에 #1 편에서 다뤘던 Mitaka v5 버전 내용을 그 근간으로 한다. Mitaka v5 는 지난 2016년 6월에 출시된 이후 거의 몇 일 ~ 몇 주 단위로 활발하게 수정 변경되어 11월 9일에 최종 버전인 v6 가 릴리즈되어 있다. 참고로 CentOS 계열(Redhat, CentOS, Fedora)을 위한 디플로이 도구인 Packstack 의 Mitaka 를 위한 버전은 다음 그림에서 보다시피 v5, v6 만 존재하고 있다.



지난 9월의 계획에서는 2016년 10월 릴리즈 예정이었던 Newton 버전을 설치하고 검증하는 과정을 다루려고 했으나, 릴리즈 직후에 한 번 시험삼아 설치해 보니 지나치게 불안정한 면이 커서, 현 시점의 안정적인 Mitaka 최종 버전을 따로 정리해 두는 편이 나을 듯 하여 급하게 본 포스팅을 구성해 보려 한다.


  • 설치 준비 과정 이후의 상세 내용


전 편의 1~5 섹션까지 내용은 그대로 사용하는 것으로 하고, 이후의 섹션 6부터 전 편의 보충 형식으로 써내려 간다. 결론적으로는, 오픈스택 Mitaka 버전을 설치, 설정하기 위해서는 지난 #1편(1~5섹션)과 본 #2편(6섹션 이후)를 연이어서 참고하면 되지 않을까 하는 생각이다.



6. 오픈스택 설치를 위한 각 노드들의 패키지 설정


  • 각 노드의 리포지토리를 변경하고 필수 패키지 설정


이미 위에서 언급했다시피, 다수의 의존성 패키지를 따로 설치하지 않고 yum update -y 를 통해 최신 패키지 업데이트를 진행한 다음 Openstack v6 를 따로 다운로드 설치하는 과정을 아래에 써내려 간다. 역시 Mitaka의 최종 버전이니만큼 비교적 안정적이고 오류 없이 잘 진행됨을 확인하였다(9월버전 v5에서 오류가 발생하였던 lbaas 포함 설치도 v6에서는 오류 없이 잘 진행됨).


# yum update -y

# yum install -y net-tools

# yum install -y wget


  • 각 노드의 /etc/hosts 파일에 다음의 3개 라인을 추가

10.10.10.6 openstack-ctrl

10.10.10.7 openstack-net

10.10.10.8 openstack-cmp1


  • 마찬가지로 각 3개 노드에서 보안 등 각종 관리패키지를 오픈스택 설치가 가능해 지도록 구성

# systemctl disable firewalld

# systemctl stop firewalld

# systemctl disable NetworkManager

# systemctl stop NetworkManager

# yum remove -y NetworkManager

# systemctl enable network

# systemctl start network



7. Packstack 으로 Openstack 자동 설치하기

Packstack은 Controller 노드에서 answer 파일을 읽어 들여서 자신을 포함하여 하위 노드(Network 노드, Compute 노드들)에서 각종 소프트웨어들을 설치/설정하는 스크립트를 단계적으로 실행해 주는 역할을 한다(Redhat 제공 RDO 프로젝트 참고: www.rdoproject.org). 이를 위해 각 하위 노드에 암호 없이 접속이 가능해야 한다. 


  • Controller 노드에서 각 노드로 Passwordless ssh 설정

[root@openstack-ctrl ~]# ssh-keygen 

[root@openstack-ctrl ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.7

[root@openstack-ctrl ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.8


#--> 암호 없이 정상적으로 접속되는지 확인

[root@openstack-ctrl ~]# ssh openstack-net

[root@openstack-ctrl ~]# ssh openstack-cmp1


  • Packstack repo 설정 및 설치 시작
이전에 진행했던 방식으로 다음과 같이 rdo-release.rpm 을 다운로드하고 설치하면, 현재 시점의 가장 최근 버전인 newton 버전이 설치되어 버리므로,

[root@openstack-ctrl ~]# yum install -y https://www.rdoproject.org/repos/rdo-release.rpm

[root@openstack-ctrl ~]# yum install -y openstack-packstack

...


특정 버전의 Openstack을 명시적으로 다운로드 & 설치하기 위해서는 https://repos.fedorapeople.org/repos/openstack/ 에서 해당 버전을 찾아서 설치하는 과정을 밟아 가면 된다. 여기서는 생성된 answer.txt 파일 항목 중 특별히 편집 수정해야 하는 부분을 표시하여 간략한 설명을 달아 두도록 한다.

[root@openstack-ctrl ~]# yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-mitaka/rdo-release-mitaka-6.noarch.rpm

[root@openstack-ctrl ~]# yum update -y

[root@openstack-ctrl ~]# yum install -y openstack-packstack

[root@openstack-ctrl ~]# su - stack

[stack@openstack-ctrl ~]# sudo packstack --gen-answer-file=answer.txt

[stack@openstack-ctrl ~]# sudo vi answer.txt

[general]

...

# 개별 항목에 자동 적용 되는 공통 암호

CONFIG_DEFAULT_PASSWORD=openstack


# 여기서는 사용하지 않음

CONFIG_MANILA_INSTALL=n


# 여기서는 사용하지 않음

CONFIG_SWIFT_INSTALL=n


# 미터링 패키지 설치

CONFIG_CEILOMETER_INSTALL=y


# 여기서는 사용하지 않음

CONFIG_AODH_INSTALL=n


# 여기서는 사용하지 않음

CONFIG_GNOCCHI_INSTALL=n


# 여기서는 사용하지 않음

CONFIG_SAHARA_INSTALL=n


# 오케스트레이션을 위한 패키지 설치

CONFIG_HEAT_INSTALL=y


# 여기서는 사용하지 않음

CONFIG_IRONIC_INSTALL=n


# ntp 시간동기화는 수동 설치 및 설정

CONFIG_NTP_SERVERS=


# 여기서는 사용하지 않음

CONFIG_NAGIOS_INSTALL=n


# API 서비스 패키지 등이 설치되는 Controller 노드

CONFIG_CONTROLLER_HOST=10.10.10.6


# Compute 서비스 패키지들이 설치되는 노드

CONFIG_COMPUTE_HOSTS=10.10.10.8


# Compute networking (nova network) 또는 OpenStack Networking (neutron) 이 설치 되는 Network 노드

CONFIG_NETWORK_HOSTS=10.10.10.7


# AMQP 서비스 설치 노드(여기서는 Controller 노드)

CONFIG_AMQP_HOST=10.10.10.6


# 기본 DB인 MariaDB 설치 노드(여기서는 Controller 노드)

CONFIG_MARIADB_HOST=10.10.10.6


# MariaDB 관리자 계정 암호

CONFIG_MARIADB_PW=openstack


# Keystone DB 암호

CONFIG_KEYSTONE_DB_PW=openstack


# Identity 서비스 admin 계정 암호

CONFIG_KEYSTONE_ADMIN_PW=openstack


# Identity service demo 계정 암호

CONFIG_KEYSTONE_DEMO_PW=openstack


# Glance DB 암호

CONFIG_GLANCE_DB_PW=openstack


# Glance Identity service 암호

CONFIG_GLANCE_KS_PW=openstack


# Nova DB 암호

CONFIG_NOVA_DB_PW=openstack


# Nova Identity service 암호

CONFIG_NOVA_KS_PW=openstack


# Neutron Identity service 암호

CONFIG_NEUTRON_KS_PW=openstack


# Neutron DB 암호

CONFIG_NEUTRON_DB_PW=openstack


# Neutron L3 의 External OVS bridge 지정(비워 두면 default로 linuxbridge)

CONFIG_NEUTRON_L3_EXT_BRIDGE=br-ex


# OpenStack Networking metadata agent 암호.

CONFIG_NEUTRON_METADATA_PW=openstack


# OpenStack Networking's Load-Balancing-as-a-Service (LBaaS) 설치 여부

CONFIG_LBAAS_INSTALL=y


# OpenStack Networking's L3 Metering agent 설치 여부

CONFIG_NEUTRON_METERING_AGENT_INSTALL=y


# neutron.ml2.type_drivers 로 사용할 드라이버 지정. comma 로 구분 ['local','flat', 'vlan', 'gre', 'vxlan']

CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan


# Tenant network로 사용할 network type을 순서대로 지정. comma 로 구분 ['local', 'vlan', 'gre', 'vxlan']

CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan


# neutron.ml2.mechanism_drivers 로 로딩할 메커니즘 드라이버 지정. comma 로 구분

# ['logger', 'test', 'linuxbridge', 'openvswitch', 'hyperv', 'ncs', 'arista', 'cisco_nexus', 'mlnx', 'l2population', 'sriovnicswitch']

CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch


# OpenStack Networking으로 사용할 L2 agent 지정 ['linuxbridge', 'openvswitch']

CONFIG_NEUTRON_L2_AGENT=openvswitch


# HEAT DB 암호

CONFIG_HEAT_DB_PW=openstack


# HEAT Identity service 암호

CONFIG_HEAT_KS_PW=openstack


# HEAT Identity domain 관리자 암호

CONFIG_HEAT_DOMAIN_PASSWORD=openstack


# Provisioning 테스트를 위한 demo 설치 여부

CONFIG_PROVISION_DEMO=y


# Ceilometer Identity service 암호

CONFIG_CEILOMETER_KS_PW=openstack


# MongoDB 설치 서버(여기서는 Controller 노드)

CONFIG_MONGODB_HOST=10.10.10.6


# Redis master server

CONFIG_REDIS_MASTER_HOST=10.10.10.6


[stack@openstack-ctrl ~]# sudo packstack --answer-file=answer.txt

Welcome to the Packstack setup utility


The installation log file is available at: /var/tmp/packstack/20161209-052810-KZtyhp/openstack-setup.log


Installing:

Clean Up                                             [ DONE ]

Discovering ip protocol version                      [ DONE ]

root@10.10.10.6's password: 

Setting up ssh keys                                  [ DONE ]

Preparing servers                                    [ DONE ]

Pre installing Puppet and discovering hosts' details [ DONE ]

Adding pre install manifest entries                  [ DONE ]

Setting up CACERT                                    [ DONE ]

Adding AMQP manifest entries                         [ DONE ]

Adding MariaDB manifest entries                      [ DONE ]

Adding Apache manifest entries                       [ DONE ]

Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]

Adding Keystone manifest entries                     [ DONE ]

Adding Glance Keystone manifest entries              [ DONE ]

Adding Glance manifest entries                       [ DONE ]

Adding Nova API manifest entries                     [ DONE ]

Adding Nova Keystone manifest entries                [ DONE ]

Adding Nova Cert manifest entries                    [ DONE ]

Adding Nova Conductor manifest entries               [ DONE ]

Creating ssh keys for Nova migration                 [ DONE ]

Gathering ssh host keys for Nova migration           [ DONE ]

Adding Nova Compute manifest entries                 [ DONE ]

Adding Nova Scheduler manifest entries               [ DONE ]

Adding Nova VNC Proxy manifest entries               [ DONE ]

Adding OpenStack Network-related Nova manifest entries[ DONE ]

Adding Nova Common manifest entries                  [ DONE ]

Adding Neutron VPNaaS Agent manifest entries         [ DONE ]

Adding Neutron FWaaS Agent manifest entries          [ DONE ]

Adding Neutron LBaaS Agent manifest entries          [ DONE ]

Adding Neutron API manifest entries                  [ DONE ]

Adding Neutron Keystone manifest entries             [ DONE ]

Adding Neutron L3 manifest entries                   [ DONE ]

Adding Neutron L2 Agent manifest entries             [ DONE ]

Adding Neutron DHCP Agent manifest entries           [ DONE ]

Adding Neutron Metering Agent manifest entries       [ DONE ]

Adding Neutron Metadata Agent manifest entries       [ DONE ]

Adding Neutron SR-IOV Switch Agent manifest entries  [ DONE ]

Checking if NetworkManager is enabled and running    [ DONE ]

Adding OpenStack Client manifest entries             [ DONE ]

Adding Horizon manifest entries                      [ DONE ]

Adding Heat manifest entries                         [ DONE ]

Adding Provisioning manifest entries                 [ DONE ]

Adding Provisioning Glance manifest entries          [ DONE ]

Adding Provisioning Demo bridge manifest entries     [ DONE ]

Adding MongoDB manifest entries                      [ DONE ]

Adding Redis manifest entries                        [ DONE ]

Adding Ceilometer manifest entries                   [ DONE ]

Adding Ceilometer Keystone manifest entries          [ DONE ]

Copying Puppet modules and manifests                 [ DONE ]

Applying 10.10.10.8_prescript.pp

Applying 10.10.10.7_prescript.pp

Applying 10.10.10.6_prescript.pp

10.10.10.7_prescript.pp:                             [ DONE ]      

10.10.10.8_prescript.pp:                             [ DONE ]      

10.10.10.6_prescript.pp:                             [ DONE ]      

Applying 10.10.10.6_amqp.pp

Applying 10.10.10.6_mariadb.pp

10.10.10.6_amqp.pp:                                  [ DONE ]    

10.10.10.6_mariadb.pp:                               [ DONE ]    

Applying 10.10.10.6_apache.pp

10.10.10.6_apache.pp:                                [ DONE ]   

Applying 10.10.10.6_keystone.pp

Applying 10.10.10.6_glance.pp

10.10.10.6_keystone.pp:                              [ DONE ]     

10.10.10.6_glance.pp:                                [ DONE ]     

Applying 10.10.10.6_api_nova.pp

10.10.10.6_api_nova.pp:                              [ DONE ]     

Applying 10.10.10.6_nova.pp

Applying 10.10.10.8_nova.pp

Applying 10.10.10.7_neutron.pp

10.10.10.6_nova.pp:                                  [ DONE ]    

10.10.10.7_neutron.pp:                               [ DONE ]    

10.10.10.8_nova.pp:                                  [ DONE ]    

Applying 10.10.10.8_neutron.pp

Applying 10.10.10.6_neutron.pp

10.10.10.8_neutron.pp:                               [ DONE ]    

10.10.10.6_neutron.pp:                               [ DONE ]    

Applying 10.10.10.6_osclient.pp

Applying 10.10.10.6_horizon.pp

10.10.10.6_osclient.pp:                              [ DONE ]     

10.10.10.6_horizon.pp:                               [ DONE ]     

Applying 10.10.10.6_heat.pp

10.10.10.6_heat.pp:                                  [ DONE ] 

Applying 10.10.10.6_provision.pp

Applying 10.10.10.6_provision_glance

10.10.10.6_provision.pp:                             [ DONE ]          

10.10.10.6_provision_glance:                         [ DONE ]          

Applying 10.10.10.7_provision_bridge.pp

10.10.10.7_provision_bridge.pp:                      [ DONE ]             

Applying 10.10.10.6_mongodb.pp

Applying 10.10.10.6_redis.pp

10.10.10.6_mongodb.pp:                               [ DONE ]    

10.10.10.6_redis.pp:                                 [ DONE ]    

Applying 10.10.10.6_ceilometer.pp

10.10.10.6_ceilometer.pp:                            [ DONE ]       

Applying Puppet manifests                            [ DONE ]

Finalizing                                           [ DONE ]


 **** Installation completed successfully ******


Additional information:

 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.

 * File /root/keystonerc_admin has been created on OpenStack client host 10.10.10.6. To use the command line tools you need to source the file.

 * To access the OpenStack Dashboard browse to http://10.10.10.6/dashboard .

Please, find your login credentials stored in the keystonerc_admin in your home directory.

 * Because of the kernel update the host 10.10.10.8 requires reboot.

 * Because of the kernel update the host 10.10.10.7 requires reboot.

 * Because of the kernel update the host 10.10.10.6 requires reboot.

 * The installation log file is available at: /var/tmp/packstack/20161209-052810-KZtyhp/openstack-setup.log

 * The generated manifests are available at: /var/tmp/packstack/20161209-052810-KZtyhp/manifests



8. Network 노드 - Neutron 네트워크(OVS bridge) 인터페이스 설정 확인


#1 편에서 수동으로 설정해 주어야 했던 Network 노드의 외부 bridge 인터페이스(br-ex)와 enp0s9 의 브리지 포트 연결이, Mitaka v6에서는 자동으로 이루어짐을 볼 수 있다. 다음의 결과를 확인해 보자 


  • Network 노드 브리지 인터페이스 설정 확인

[root@openstack-net ~]# ifconfig

br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.0.7  netmask 255.255.255.0  broadcast 192.168.0.255

        inet6 fe80::8464:32ff:fe27:304f  prefixlen 64  scopeid 0x20<link>

        ether 08:00:27:bd:a3:bd  txqueuelen 0  (Ethernet)

        RX packets 138  bytes 21542 (21.0 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 59  bytes 6843 (6.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


enp0s9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet6 fe80::a00:27ff:febd:a3bd  prefixlen 64  scopeid 0x20<link>

        ether 08:00:27:bd:a3:bd  txqueuelen 1000  (Ethernet)

        RX packets 412  bytes 84303 (82.3 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 71  bytes 9555 (9.3 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


...



이제 ifcfg-br-ex, ifcfg-enp0s9 인터페이스도 확인해 보자

[root@openstack-net ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex

DEVICE=br-ex

DEVICETYPE=ovs

TYPE=OVSBridge

BOOTPROTO=static

IPADDR=192.168.0.7

NETMASK=255.255.255.0

BROADCAST=192.168.0.255

GATEWAY=192.168.0.1

DEFROUTE=yes

ONBOOT=yes

NM_CONTROLLED=no

IPV4_FAILURE_FATAL=yes

IPV6INIT=no


[root@openstack-net ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s9

DEVICE=enp0s9

DEVICETYPE=ovs

TYPE=OVSPort

OVS_BRIDGE=br-ex

ONBOOT=yes

NM_CONTROLLED=no

IPV6INIT=no



[root@openstack-net ~]# ovs-vsctl show

fd89eff3-c539-4250-8922-854f550124bc

    Bridge br-ex

        Port br-ex

            Interface br-ex

                type: internal

        Port "qg-05c23c0b-11"

            Interface "qg-05c23c0b-11"

                type: internal

        Port "enp0s9"

            Interface "enp0s9"

    Bridge br-int

        fail_mode: secure

        Port patch-tun

            Interface patch-tun

                type: patch

                options: {peer=patch-int}

        Port "qr-02fc6bc6-04"

            tag: 1

            Interface "qr-02fc6bc6-04"

                type: internal

        Port br-int

            Interface br-int

                type: internal

        Port "tap44e6cf82-31"

            tag: 1

            Interface "tap44e6cf82-31"

                type: internal

    Bridge br-tun

        fail_mode: secure

        Port "vxlan-0a0a0a08"

            Interface "vxlan-0a0a0a08"

                type: vxlan

                options: {df_default="true", in_key=flow, local_ip="10.10.10.7", out_key=flow, remote_ip="10.10.10.8"}

        Port patch-int

            Interface patch-int

                type: patch

                options: {peer=patch-tun}

        Port br-tun

            Interface br-tun

                type: internal

    ovs_version: "2.5.0"

Open vSwitch 의 브리지 인터페이스를 조회해 보면, br-ex 브리지에 br-ex 포트와 enp0s9 포트가 연결되어 있음을 볼 수 있다.



Controller 노드의 환경변수 설정 스크립트 복사


  • Network 노드, Compute 노드에서 CLI 명령 실행이 필요할 경우에 대비하여 스크립트 복사


Controller 노드의 keystonerc 관련 파일들을 다음과 같이 Network 노드, Compute 노드에 복사해 둔다


[root@openstack-ctrl ~]# scp keystonerc_* root@openstack-net:~

[root@openstack-ctrl ~]# scp keystonerc_* root@openstack-cmp1:~



9. Horizon 웹을 통해 Cloud 플랫폼 사용 준비 과정


  • Horizon 웹 UI 사용 준비 - 클라우드 네트워크 설정


시스템 구성도의 Admin VM에 해당하는 VM에서, firefox 웹브라우저를 통해 http://10.10.10.6으로 접속, admin 계정과 answer.txt 에서 지정한 암호를 통해 로그인


tenant 서비스를 위해서 demo 프로젝트를 사용한다고 가정했을 때,  해당 프로젝트에서 사용할 네트워크를 생성, 설정하는 과정을 다음과 같이 진행한다.


System->Routers 페인, 라우터 목록에서 router1 삭제 


System->Networks 페인, 사용하지 않는 네트워크(public_subnet) 을 삭제



networks 패널에서, '+Create Network' 을 선택하고 admin 프로젝트에 대해 public 네트워크를 새로이 생성(본 케이스에서는 vxlan 방식, shared - External network).



Subnet Detail 에서는, 네트워크 내부에 DHCP 서버(iptime 공유기)가 존재하므로, Enable DHCP 는 해제하고, 할당 가능한 IP 범위를 입력


admin 계정을 로그아웃하고, tenant 서비스를 설정/사용하기 위한 demo 계정으로 로그인


앞에서 admin 을 통해 생성, 설정한 네트워크를 사용하기 위해, 왼쪽 메뉴에서 Project->Network->Router 패널을 선택하고 '+Create Router' 을 클릭하여 demo 프로젝트에서 사용할 라우터를 생성. External Network 항목에 대해, 앞서 생성했던 public 네트워크를 선택





'+Add Interface' 클릭을 통해, 앞서 생성한 사설 네트워크와의 연결을 위한 인터페이스를 추가



좌측 메뉴의 Network 패널에서 Network Topology 를 선택하여 현재 구성된 네트워크의 구조를 확인한다. 여기까지 성공적으로 진행하였다면 클라우드 환경을 본격적으로 사용하기 위한 전체 설정 과정은 완료한 것이며, 다음의 필수 준비과정 몇 가지를 거치면 모든 준비가 끝나고 VM을 생성, 관리할 수 있는 요건을 갖추게 되었다.


11. VM 인스턴스 생성 관리를 위한 준비 & 실행 단계


  • security Group 생성 확인

 Compute->Access & Security->Security Group


시스템에 디폴트로 적용되는 Security Group 이 이미 생성되어 있다. 필요시 별도로 생성하여 사용하면 됨.


  • Key Pair 생성



Compute->Access & Security->Key Pairs->Create Key Pair, pem 파일 다운로드 및 보관



  • Floating IP 생성



Floating IP를 할당 필요한 갯수만큼 할당 받는다



  • VM Image 확인


Openstack 에 포함된 테스트용 초소형 OS image(12MB) 외에도, Ubuntu Cloud image 사이트나 CentOS cloud image 사이트 등에서 다운로드 받아 두고, Openstack image로 업로드(admin 계정으로)해서 사용할 수 있다


  • VM instance 생성








  • Ubuntu VM instance 생성하고 접속하기

별도의 전용 Security Group 을 생성해 둔다


Ubuntu VM을 만들기 위한 Flavor 템플릿을 생성해 둔다(admin 계정)








새로이 Ubuntu VM Instance 를 생성하고, 앞에서 할당해 두었던 Floating IP 들 중에서 하나를 선택하여 Associate 를 클릭하면 VM의 내부 사설 port(10.0.0.*) 과 Floating IP가 연결된다



Ubuntu VM 에 연결된 Floating IP 로 ping 테스트와 ssh 접속을 수행해 본다



12. LBaas(LB As A Service) 의 설정과 테스트


  • Haproxy Load Balancer 사용을 위한 준비

새로운 VM과 LB에 할당할 Floating IP 를 추가한다


LB pool 에 할당할 새로운 Ubuntu VM 을 생성해 둔다




LB pool 에 포함될 VM 들에 접속하여 nginx 패키지를 설치한다(외부 접속을 위해 /etc/resolv.conf 에 nameserver 를 추가하고, apt-get update 를 한 이후, apt-get install nginx 로 패키지 설치). 설치 이후 curl http://localhost 로 자체 접속 테스트.


각 VM의 웹서버에 80 port 로 접속이 가능하도록, 기존의 Security Group에 새로운 Rule 을 추가한다


VM들의 웹서버에 접속이 가능한지 웹브라우저를 통해 각각 접속해 본다



Network->Load Balancer, +Add Pool 클릭 및 저장 후,


Add VIP 선택


IP address에는 VM의 사설 IP 대역에 해당하는 IP를 입력. Connection Limit 는 -1 또는 제한되는 연결 갯수 입력 & 저장


Associate Floating IP 선택.


미리 준비한 Floating IP를 선택하고 Associate 클릭 & 저장


Members 탭 선택, +Add Member 클릭


Add Member 클릭. Pool 선택 & 대상 VM, port 번호 등 설정



웹브라우저에서 LB VIP로 접속하여 확인 완료



- Barracuda -


블로그 이미지

Barracuda

Bryan의 Tech-Log. 기록은 역사다. 나는 역사를 공유하고 그 안에서 배우며, 또 다른 역사를 써나간다

댓글을 달아 주세요