클라우드 설정 미세 조정하기

Overview

Teaching: 5 min
Exercises: 10 min
Questions
  • 본인 원격 컴퓨터가 제대로 환경이 설정되어 있는가?

  • 내가 자리를 비운 상태에서도 작업을 계속 수행시킬 방법은 무엇인가?

Objectives
  • 원격 컴퓨터의 가용 자원과 파일 시스템을 점검한다.

  • tmux를 사용해서 클라우드에서 백그라운드로 작업을 계속해서 돌린다.

원하는 클라우스 서비스인가요?

신규 생성된 원격 인스턴스에 접속하게 되면, 설정이 원하는 바대로 되었는지, 프로젝트를 시작하기 전에 모든 것이 제대로 동작하는지 두번 검정한다.

이번 워크샵은 시작되기 전에 강사가 모든 확인절차를 거쳐서 별도 점검이 필요없다. 하지만, 본인 스스로 인스턴스를 생성시키는 경우 중요한 기술적 자산이 된다.

연결상태 검증하기

인스턴스에 연결되면, 환영 메시지가 스크린에 띄워진다. 데이터 카펜트리 아마존 인스턴스에 접속되면 다음 메시지가 화면에 보이게 된다:

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-48-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sun Jan 24 21:38:35 UTC 2016

  System load:  0.0                Processes:           151
  Usage of /:   48.4% of 98.30GB   Users logged in:     0
  Memory usage: 6%                 IP address for eth0: 172.31.62.209
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

12 packages can be updated.
10 updates are security updates.


Last login: Sun Jan 24 21:38:36 2016 from

명령을 기다리며 깜빡이는 커서도 보이게 된다.

$

환경 점검하기

인스턴스에 연결이 되었기 때문에, 명령어 몇개를 던져 연결된 컴퓨터에 대해 살펴보자:

상기 'Mounted on 칼럼 아래 /인 행이 있다. 즉, /dev/xvda1 99G 48G 47G 51% /. 하드디스크에 대한 값을 저장용량을 나타내고 있다.

클라우드에 접속을 유지한 상태로 유지하기.

클라우드 시스템에 연결된 방법에 따라 차이가 날 수 있지만, 한동안 작업을 계속 실행해야 하거나 계속해서 돌고 있는 프로세스(process)와 작업(job)이 있을 수 있다. VNC를 경유해서 클라우드를 GUI 데스크톱 형태한 연결된 경우, 시작된 작업은 계속 실행될 것이다. SSH를 통해 연결된 경우, SSH 접속을 종료(예를 들어, SSH 세션을 끝내거나, 인터넷 연결이 끊어지거나, 노트북을 종료시키는 등등)시키면 접속이 끊어지게 될 때 돌고 있던 작업은 프로세스는 중지(killed)된다. 백그라운드로 클라우드 프로세스를 계속 실행시키는 방법이 몇가지 존재한다. 백그라운드 프로세스를 지칭할 때, Linux: Start Command In Background 웹사이트에 기술된 내용(명령어를 실행하고 쉘 프롬프트로 되돌아 감)을 지칭한다. 이번에 기술하는 프로그램은 tmux로 연결이 끊어지더라도 쉘 전체를 실행시키면서 프로세스 실행을 유지시켜주는 역할을 수행한다. 현재 시스템에 tmux가 없더라도, screen을 사용할 수는 있다. screentmux와 같은 기능을 갖춘 또다른 프로그램이다. 하지만, 매우 오래되서 사용하기가 더 투박하다; 어떤 클라우드 시스템에서도 이용가능하다는 것은 좋은 점이다.

tmuxscreen 프로그램 모두 ‘세션(session)’을 열어 사용한다. ‘세션(session)’은 tmuxscreen에서 윈도우 화면으로 간주하면 좋다. 컴퓨터에서 작업을 하나 수행할 때 터미널을 열고, 또 다른 작업을 수행하고자 할때 터미널 세션을 열어 작업하게 된다.

세션을 닫을 때까지 활동중 액티브 상태가 유지된다. 설사 컴퓨터 연결이 끊어지더라도, 해당 세션에서 시작된 작업(job)은 완료될 때까지 계속 돌아가게 된다.

세션 시작하고 세션에 연결하기

세션을 시작하고 나서 세션에 명칭을 부여하는 것도 가능하다:

상기 명령어를 실행하게 되면, session_name을 갖는 세션이 생성된다. 해당 세션을 닫을 때까지 활동중(active) 상태로 유지된다.

세션에서 분리 (프로세스는 백그라운드로 계속 실행됨)

키보드에서 다음을 누르게 되면 세션에서 분리된다:

활동중인 액티브 세션 확인하기

현재 세션 혹은 ssh로 접속된 컴퓨터와 연결이 끊어지게 되면, 기존 세션에 재접속이 필요한 경우가 있다. 열려있는 기존 세션을 다음 명령어를 통해 확인할 수 있다:

세션에 연결하기

기존 세션에 다음 명령어를 통해 다시 연결시킬 수 있다:

세션 전환

다음 명령어로 세션을 전환시킬 수 있다:

세션 종료 (Kill a session)

다음 명령어소 세션을 종료시킬 수 있다:

소프트웨어 추가로 설치하기

tmux 소프트웨어는 기본 디폴트로 거의 모든 리눅스 인스턴스에 미설치 상태다. 하지만, 리눅스 배포판 팩키지 관리자 도구를 사용해서 쉽게 신규 소프트웨어를 설치할 수 있다: APT (데비안 혹은 우분투), YUM (레드햇과 센토스). 우분투 APT (Advanced Package Tool) 팩키지 관리자를 사용하여 tmux 소프트웨어 설치 방법을 살펴보자.

APT 최신 상태로 갱신하기

어떤 소프트웨어를 설치하거나 최신 상태로 갱신하기 전에, 항상 로컬 APT 캐쉬를 최신 상태로 유지시켜야 한다:

$ sudo apt-get update
Hit:1 http://au.archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://au.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
...
Fetched 3,413 kB in 1s (2,233 kB/s)
Reading package lists... Done

APT 팩키지를 검색하기

흔한 소프트웨어 도구는 팩키지명이 동일한 경우가 많지만, 항상 그런 것은 아니다. 설치하고자 하는 프로그램 명칭을 알고는 있는데 팩키지 명칭을 확신하지 못하는 경우, apt 프로그램을 사용해서 팩키지를 검색한다:

$ sudo apt search tmux
Sorting... Done
Full Text Search... Done
abduco/xenial 0.1-2 amd64
  terminal session manager

powerline/xenial-updates 2.3-1ubuntu0 amd64
  prompt and statusline utility

tmate/xenial 1.8.10-2build1 amd64
  terminal multiplexer with instant terminal sharing

tmux/xenial,now 2.1-3build1 amd64
  terminal multiplexer

tmuxinator/xenial 0.7.0-2 all
  Create and manage tmux sessions easily
$

명백한 tmux 팩키지가 존재하기 때문에 이를 설치한다.

APT를 사용해서 팩키지 설치

팩키지 명칭을 알고 나면, apt-get install 명령어를 사용해서 tmux 팩키지를 설치한다:

$ sudo apt-get install tmux
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libevent-2.0-5 libutempter0
The following NEW packages will be installed:
  libevent-2.0-5 libutempter0 tmux
0 to upgrade, 3 to newly install, 0 to remove and 0 not to upgrade.
Need to get 345 kB of archives.
After this operation, 949 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirror.overthewire.com.au/ubuntu xenial-updates/main amd64 libevent-2.0-5 amd64 2.0.21-stable-2ubuntu0.16.04.1 [114 kB]
Get:2 http://mirror.overthewire.com.au/ubuntu xenial/main amd64 libutempter0 amd64 1.1.6-3 [7,898 B]
Get:3 http://mirror.overthewire.com.au/ubuntu xenial/main amd64 tmux amd64 2.1-3build1 [223 kB]
Fetched 345 kB in 0s (863 kB/s)
(Reading database ... 130583 files and directories currently installed.)
...
Setting up libevent-2.0-5:amd64 (2.0.21-stable-2ubuntu0.16.04.1) ...
Setting up libutempter0:amd64 (1.1.6-3) ...
Setting up tmux (2.1-3build1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...

설치가 완료되면, EC2 인스턴스에 tmux 소프트웨어를 사용할 준비가 되었다.

Key Points

  • 항상 신규 인스턴스가 제대로 준비되었는지 점검한다.

  • tmux같은 프로그램을 사용해서 인터넷 연결이 좋지 않을 때도 작업을 계속해서 돌리게 한다.