Your wish is my command

It’s a long journey

Screen Session 저장?

제목이 영 이상하긴 한데요.. screen으로 작업하다보면 가끔 난감한 경우가 있습니다.

screen의 세션이 저 멀리 서버에 있어서 이 세션이 영원이 닫히지 않는다고 생각하면 별 문제 없을텐데, 이게 가끔 리부팅한다던가, 아니면 로컬에 있어서 리부팅하면 날라가는 경우.. .근데 이 세션들이 아주아주 자주 사용하는 경우 계속 세로운 세션 만드는 것 영 귀찮습니다.

저같은 경우는 개발, 테스트하면서 여러 서버들을 동시에 봐야해서, screen으로 여러개 움직이면서 작업하는데, 이거 참 날아가니깐.. 귀찮습니다.

뒤져보니 세션을 완전히 저장하고, 다시 살리는 방법은 없습니다. 하지만 가능한 방법은 screen.rc를 이용하여 그 서버에 연결되는 윈도우만 열어도 상당히 편리합니다.

screen.rc 파일을 적당히 만들고 screen -c screen.rc 로 그 세션을 시작하면 되죠..

screen.rc:

sessionname my-persistent-session

screen -t 'server01&' sshpass -p <pass> ssh <server>
screen -t 'server01&' sshpass -p <pass> ssh <server>

여기까지 하면 괜찮습니다. 그런데 사람의 욕심이라는게 말이죠. 위처럼하면 문제는 sshpass 명령이 종료되거나 ssh 연결이 안되면 해당 윈도우는 닫힌다는 것입니다. 이거 참 난감하죠.. 궁리해봤는데, screen 의 명령으로는 해결할 수 없고 아래처럼 ssh를 실행하는 스크립트를 만들어서 그걸로 연결하고, 해당 스크립트에서는 ssh 연결후 bash를 실행하면 됩니다.

bin/sshpass.sh:

#!/bin/sh
sshpass $1 $2 $3 $4
$SHELL

그러면, screen.rc의 내용도 바뀌겠죠?

screen.rc:

sessionname my-persistent-session

screen -t 'server01&' sshpass.sh -p <pass> ssh <server>
screen -t 'server01&' sshpass.sh -p <pass> ssh <server>

이제 screen -s screen.rc 하면 언제나 원하는 윈도우를 연 스크린으로… ㅎㅎ

물론 더 좋은 방법 있으면 알려주삼~~

Request_module: Runaway Loop Modprobe Binfmt-464c

가상 머신을 띄우는데… 아래처럼 당황스런 메시지가 뜨면서, 커널이 올라오지 않는다.

request_module: runaway loop modprobe binfmt-464c

인터넷을 뒤져보니 해당 문제는 32비트 커널을 사용하는 머신에서 64비트 바이너리를 실행할 때 생기는 문제라고 한다. 즉 다시 말해서 내가 뭔가 잘못 건드려서 커널이 32비트로 바뀐거다. 전혀 한 기억이 없는데 말이다.

역시 경험으로 느낀건… 가상머신의 커널은 그냥 가상머신 안에 두는 것이 좋겠다. 요즘 리눅스는 hvm으로 돌아간다고  하드라도, 기본적으로 pv driver가 설치되어있기 때문에 io가 문제가 없으니 말이다.

Nova-network Floating Ip

floating ip는 amazone의 elastic ip와 비슷한 기능으로, 할당받은 ip를 가상머신에 자유롭게 할당, 제거할 수 있다. 직접 NIC을 조절하는 것이 아닌 nova-network 노드에서 1:1 NAT으로 할당한다.

float ip 생성

$ nova-manage floating create --ip_range=10.200.3.0/24

만들어진 floating ip를 확인할 수 있다.

$ nova-manage floating list
None    10.200.3.1      None    nova    eth0
None    10.200.3.2      None    nova    eth0
None    10.200.3.3      None    nova    eth0
.....

floating ip를 하나 할당받는다.

$ nova floating-ip-create
+------------+-------------+----------+------+
|     Ip     | Instance Id | Fixed Ip | Pool |
+------------+-------------+----------+------+
| 10.200.3.1 | None        | None     | nova |
+------------+-------------+----------+------+
$ nova floating-ip-create
+------------+-------------+----------+------+
|     Ip     | Instance Id | Fixed Ip | Pool |
+------------+-------------+----------+------+
| 10.200.3.2 | None        | None     | nova |
+------------+-------------+----------+------+

할당받은 ip를 instance에 설정한다.

$ nova add-floating-ip 6618a76e-a1d3-4912-a71f-42dc3daf893b 10.200.3.2
$ nova-manage floating list
c99bd5af477d403e9421f6924836412a        10.200.3.1      None    nova    eth0
c99bd5af477d403e9421f6924836412a        10.200.3.2      6618a76e-a1d3-4912-a71f-42dc3daf893b    nova    eth0
None    10.200.3.3      None    nova    eth0
None    10.200.3.4      None    nova    eth0
.....
  • 10.200.3.1은 할당 받았지만, instance에 연결되지 않았다.
  • 10.200.3.2은 할당 받아서 6618a76e-a1d3-4912-a71f-42dc3daf893b에 연결되었다.

nova-network 노드에서 iptables를 확인해보면 아래와 같이 NAT이 설정된 것을 확인할 수 있다.

$ iptables -L -t nat
....

Chain nova-network-OUTPUT (1 references)
target     prot opt source               destination
DNAT       all  --  anywhere             10.200.3.2           to:10.200.2.5

....

Chain nova-network-PREROUTING (1 references)
target     prot opt source               destination
DNAT       tcp  --  anywhere             169.254.169.254      tcp dpt:http to:10.200.1.9:8775
DNAT       all  --  anywhere             10.200.3.2           to:10.200.2.5

.....

Chain nova-network-float-snat (1 references)
target     prot opt source               destination
SNAT       all  --  10.200.2.5           anywhere             to:10.200.3.2

....

http://wiki.woosum.net/nova#floating_ip

Gnome-settings-daemon이 CPU 잡아먹는 증상

갑자기 컴퓨터가 느려져서 이상하다고 보고있는데 gnome-settings-daemon이 CPU르 엄청 먹는거다.. 게다가 자세히보니 키보드 Numlock 키가 켜졌다가 꺼졌다가…

https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/969359%EC%97%90 있는데로

sudo mv /usr/lib/gnome-settings-daemon-3.0/keyboard.gnome-settings-plugin ~/

하고 재부팅하니 조용하다…

Ubuntu 너 이럴래? 아니 Gnome인가?

간단하게 그려본 OpenStack VM Network Traffic Flow

아주 아주 간단하게 그려본 OpenStack Guest VM Network Flow

  • FloatDHCP 모드임
  • fixed_range로 지정된 VM에만 해당
  • Guest traffic은 nova-network에서 NAT을 통해서 나가도록 되어있음

Discuss Plugin 추가

블로그 질 하는데 굳이 계정 만들고 뭐시기 하는 게 영 거시기 해서… social login, disqus 추가했습니다.

아주 간단하군요.

Varnishd를 지우다…

varnishd를 사용하고 있었습니다. 그렇죠. 캐쉬 해주니깐 뭔가 더 빠를 것 같다.

근데 본 서비스가 돌아가는 환경은 가상머신 입니다. varnishd에 메모리를 할당해 주는 것이 사치라는 생각이 들어서 지워버렸습니다.

결과는요? 왠지 더 쾌적하게 돌아갑니다. 그냥 기분 탓이겠죠?

NIST의 클라우드 컴퓨팅에 대한 정의(the NIST Definition of Cloud Computing)

클라우드 컴퓨팅에 대한 NIST의 정의를 번역해 보았습니다. 역시 번역하고 보니 구글 번역이나 그게 그거인듯…. 어색하시면 원문 보세요~


클라우드 컴퓨팅은 언제 어디서든(ubiquitous), 간편하게, 요청에 의해서 최소한의 관리 노력과 최소한의 서비스 제공자와의 상호 작용에 의해 빨리 준비되고 배포되는 설정 가능한 공유 컴튜팅 자원(네트워크, 서버, 스토리지, 어플리케이션, 서비스) 풀에 네트워크 접근을 가능하게 하는 모델이다. 클라우드 모델은 다섯 가지의 핵심 특성과 세 가지의 서비스 모델 그리고 네 가지의 배포 모델로 구성된다.

핵심 특성(Essential Characteristics)

요청에 의한 스스로 서비스(On-demand self-service)

소비자는 필요에 의해서 각각의 서비스 제공자의 사람과 상호작용 없이 자동으로 서버 시간과 네트웍 스토리지 같은 컴퓨팅 능력을 독자적으로 준비할 수 있다.

광대역 네트워크 접근(Broad network access)

능력은 네트웍을 통해서 사용가능하고 기본 메커니즘으로 접근된다. 이러한 접근은 다양한 thin 또는  thick 클라이언트 플렛폼(모바일, 타블렛, 노트북, 워크스테이션)에서의 사용을 활성화 시킨다.

리소스 풀링(Resource pooling)

다수의 소비자에게 서비스되기 위해 풀링 되는 제공자의 컴퓨팅 리소스는 multi-tenant 모델을 사용한다. 다른 물리적 그리고 가상 리소스는 소비자의 요구에 의해 동적으로 할당(assign)되고 해지(reassign)된다. 여기에는 위치 독립적인 생각이 있어서, 고객은 일반적으로 서비스되는 리소스의 정확한 지역에 대한 조절이나 정보가 없다. 하지만 상위 레벨의 추상화(국가, 주, 데이터센터)에 의해서 지역을 지정할 수 있다. 리소스의 예는 스로리지, 프로세싱, 메모리, 네트워크 대역폭을 포함한다.

재빠른 민첩성(Rapid elasticity)

능력들은 민첩하게 제공되고 해지될 수 있다. 어떤 경우에는 자동으로 요청에 의해서 재빠르게 적합한  규모를 늘리고 줄일 수 있다. 소비자에게 이런 능력은 보통 제한이 없이 보이고, 언제든지 어떠한 양이라도 적절하게 제공되는 것으로 보인다.

측정되는 서비스(Measured service)

클라우드 시스템은 서비스(스토리지, 프로세싱, 대역폭, 활성 유저 계정) 타입에 따른 적당한 추상화 레벨에 대해서 계량 능력(metering capability)[ref]일반적을 사용에 따른 지불(pay-per-use)과 사용에 따른 요금(charge-per-use)으로 이루어진다.[/ref]에 사용되는 리소스의 사용을 자동으로 조절하고 최적화 한다. 리소스 사용은 모니터링, 조절, 보고되고 제공자와 사용자에게 서비스의 사용량이 투명하게 제공된다.

서비스 모델(Service Models):

서비스로의 소프트웨어(Software as a Service (SaaS)).

소비자에게 제공되는 능력은 클라우드 인프라[ref]클라우드 인프라는 클라우드 컴퓨팅의 다섯가지 핵심 특성을 가능케 하는 하드웨어와 소프트웨어의 집합이다. 클라우드 인프라는 물리 계층과 추상 계층을 동시에 포함하는 것으로 볼 수 있다. 물리계층은 클라우드 서비스를 제공하게 지원하는데 필요한, 일반적으로 서버, 스토리지 그리고 네트워크 콤포넌트를 포함하는 하드웨어 리소스로 구성된다. 추상계층은 물리 서버에 걸쳐서 설치되는 소프트웨어로 클라우드의 핵심 특성을 나타낸다. 개념적으로 추상계층은 물리계층 위에 위치한다.[/ref]에서 동작되는 제공자의 어플리케이션을 사용하는 것이다. 어플리케이션은 웹 브라우저와 같은 thin client(예, 웹 기반 이메일) 뿐만 아니라 프로그램 인터페이스 등 다양한 클라이언트를 통하여 접근할 수 있다. 소비자는 클라우드 인프라 아래에 존재하는 네트워크, 서버, 운영체제, 스토리지, 심지어 각각의 각각의 어플리케이션의 능력들을 관리하거나 컨트럴 하지 않는다. 제한된 사용자 지정 어플리케이션 설정 변경은 가능하다.

서비스로서의 플렛폼(Platform as a Service (PaaS)).

소비자에게 제동되는 기능은 제공자에 의해서 지원되는 프래그래밍 언어, 라이브러리, 서비스 그리고 도구를 이용하여 사용자가 만들거나 이미 만들어진 어플리케이션을 확보하여 클라우드 인프라 위에 배포하는 것이다.[ref]이 능력은 필연적으로 프로그래밍 언어, 라이브러리, 서비스, 툴의 다른 출처에서의 호환성있는 사용을 불가능하게 한다.[/ref] 소비자는 네크워크, 서버, 운영체제, 스토리지 같은 클라우드 인프라 아래에 있는 것을 관리하지 않는다. 그러나 배포된 어플리케이션을 어플리케이션이 호스팅되는 환경 설정에 대한 변경을 통하여 제어한다.

서비스로서의 인프라(Infrastructure as a Service (IaaS)).

소비자에게 제공되는 능력은 프로세싱, 스토리지, 네트워크 그리고 다른 기초적인 컴퓨팅 리소스의 공급이다. 소비자는 배포하고 운영체제와 애플리케이션을 포함한 임의적인 소프트웨어를 실행할 수 있다. 소비자는 클라우드 인프라 아래를 관리하거나 제어하지 않지만 운영체제 위의 스토리지와 배포된 어플리케이션은 컨트럴한다. 선택된 네트워킹 요소들에 대한 일부 제한한 컨트럴(예, 호스트 방화벽)이 가능하다.

배포 모델(Deployment Models):

프라이빗 클라우드(Private cloud)

클라우드 인프라는 여러 소비자로 구성된 하나의 기관(예, 하나의 부서)에 독점적인 사용을 위해서 제공된다. 그 기관 또는 제 3자 또는 그 조합(combination)에 의해서 소유, 관리, 운영되며, 해당 기관의 영업장 안에 위치할 수 있지만 아닐 수 있다.

커뮤니티 클라우드(Community cloud)

클라우드 인프라는 공동의 관심사(임무, 보안 요구 사항, 정책과 여려 준수 고려 사항)를 공유하는 특정 소비자 공동체의 독점적인 사용을 위해 제공된다. 공동체의 하나 또는 그 이상의  기관, 제 3자, 그 조합(combination)에 의해서 소유, 관리, 운영되며 해당 기관의 영업장 안에 위치할 수 있지만 아닐 수 있다.

퍼블릭 클라우드(Public cloud)

클라우드 인프라는 일반 대중을 대상으로 한 공개된 사용을 위해 제공된다. 비지니스, 아카데미 또는 정부기관 또는 그 조합에 의해서 소유, 관리, 운영되며 클라우드 제공자의 영업장에 위치한다.

하이브리드 클라우드(Hybrid cloud)

클라우드 인프라는 2개 또는 그 이상의 구별되는 클라우드 인프라(프라이빗, 커뮤니티, 퍼플릭)로 구성된다. 각각은 독립적인 개체로 유지되지만 데이터와 어플리케이션의 이동성(portability)(클라우드간의 로드발런싱으로 클라우드간의 경계를 넘어감)를 가능하게 하는 표준 또는 독점 기술(proprietary technology)로 같이 묶인다.