시스템이야기2015. 6. 29. 13:16

왜 FreeBSD는 2015년 7월의 윤초(Leap Second)에 대한 얘기가 없을까 싶을 것이다. 얼마전에 쓴 '2015년 윤초(Leap second) 삽입 관련 서버 점검사항'(2015.6.22.)에서도 리눅스(Linux)만 언급했다. 얘기가 없는 건 문제가 없기 때문이다.



2012년 윤초 삽입 때, 저는 FreeBSD서버에서 아무 것도 한 것이 없다.

윤초로 발생하는 문제가 없기 때문에 서버는 단지 1초의 시간차만 맞춰주면 된다.
이미 서버들은 시간동기화가 셋팅되어 있기 때문에 1초는 자동으로 맞춰진다. 따로 할 것이 없는 것이다.


(1) 상위 NTP 서버들(당신의 서버 아님) <-> (2) 내부 NTP서버 (당신이 관리하는 서버) <-> (3) ntpdate를 실행하는 다수의 서버들


위에서 나와 관련된 서버는 2번과 3번.


(2) ntpd 데몬을 돌리는 서버는 자동으로 상위 NTP 서버로 부터 윤초 삽입이 되어 시간동기화된다.
(3) 나머지 서버들은 내부 NTP서버를 통해 자동 동기화된다. (ntpdate 명령)


FreeBSD에서 윤초는 신경쓰지 말고, 편히 운영하세요.

FreeBSD 문서에 윤초를 다룬 'FreeBSD Support for Leap Seconds' 글이 하나 있는데 참고로 읽어보세요.


We believe and expect that FreeBSD, if provided correct and stable NTP service, will work as designed during this leap second, as it did during the previous ones.
... 생략 ...
In practice, leap seconds are usually not a problem on FreeBSD. We hope that this overview helps clarify what to expect and how to make the leap second event proceed more smoothly.



Posted by 좋은진호
시스템이야기2015. 6. 19. 12:17

zabbix 를 오래 운영하면 zabbix DB가 무럭무럭 자라서 용량이 상당히 커지고 속도도 느려진다.
수집한 데이터는 오래될수록 필요가 없으므로 이 데이터는 제외하고, 'zabbix 설정값만' 뽑아서 zabbix DB를 새로 구축하려고 한다.


[ 조건 ]
- 수집한 데이터는 버린다.
- 설정값(호스트, 템블릿, ...)만 받는다.
- zabbix DB를 새롭게 시작한다.

zabbix


1. 설정값만 백업하기

Zabbiz 2.0, 2.2, 2.4를 지원하는 zabbix-mysql-dump 라는 간단한 스크립트가 있다.
https://github.com/maxhq/zabbix-backup/wiki 에서 셀스크립트를 다운 받는다.

스크립트에서 zabbix DB 접속 정보와 mysqldump 경로(스크립트내에서는 /usr/bin/mysqldump로 되어 있음)를 확인한다.


DBHOST="127.0.0.1"
DBNAME="zabbix"
DBUSER="..."
DBPASS="..."


스크립트를 실행하면 현재디렉토리 dump 파일이 생겼을 것이다.


# sh zabbix-mysql-dump
# ls
zabbix_localhost_20150526-1347.sql.gz


스크립트로 dump 받은 것 외에 trigger에 의해 발생한 event정보를 옮기고 싶다면, zabbix 데이터 중에 2가지가 추가로 필요하다.


1) trigger에 의해 발생한 event를 담고 있는 'events' 테이블 데이터
2) 각 event에 대해 코멘트가 담긴 'acknowledges' 테이블 데이터


[ zabbix : trigger에 의해 발생한 event 정보 ]


# mysqldump --opt --single-transaction --skip-lock-tables --extended-insert=FALSE -u zabbix -p zabbix \
  acknowledges events > zabbix_acknowledges_events.sql



2. zabbix DB를 새롭게 구축하기


1) zabbix server 데몬을 내린다.
2) MySQL 서버를 내린다.
3) 기존 zabbix innodb파일을 다른 이름으로 임시 백업해둔다.
   zabbix 스키마( MySQL DATA DIR/zabbix/) 는 그대로 둔다.


4) MySQL 서버를 실행한다.
5) 조금 전에 dump받은 셋팅값을 넣어준다.
   gunzip zabbix_localhost_20150526-1347.sql
   mysql -u zabbix -p zabbix < zabbix_localhost_20150526-1347.sql


   기존에 있던 zabbix 테이블을 drop하고 -> 새로 create -> 셋팅값 insert


6) 별도로 백업받은 acknowledges 테이블의 데이터를 insert한다.
   acknowledges 테이블의 데이터를 기준으로 해당된 event만 뽑아 insert한다.


7) zabbix server를 올린다.

Posted by 좋은진호
시스템이야기2014. 10. 15. 13:24

메신저 검열로 '텔레그램(Telegram)' 광풍이 불고 있다. 개인적으로 카톡을 자주 사용하지 않아, 텔레그램이 절실(?)하게 필요하지 않다. 하지만 텔레그램을 사용해야할 이유가 생겼다. 텔레그램이 서버에서 사용할 수 있는 CLI를 제공하고 있고, lua나 python으로 손쉽게 메신저와 연동할 수 있다.


그래서 텔레그램용 lua스크립트를 만들어서 서버 상태를 폰에서 받아볼 수 있다. 예를 들어 특정 서버의 MRTG/RRD를 메신저로 요청하면 그 이미지를 받아 볼 수 있다. 서버의 load값도 같은 방식으로 return받을 수 있다. 서버장애 문자를 텔레그램으로 받을 수 있도록 하신분도 있다. (※ 개인적으로는 이미 SMS로 받고 있는 것을 다시 텔레그램용으로 만들 필요는 없었다.)


텔레그램 CLI설치는 '리눅스에 텔레그램(Telegram) CLI 설치' (글 좋은진호)를 참고하고, 이 글은 서버 모니터링용 텔레그램 스크립트와 실제 사용 예를 보여줄 것이다.



1. 텔레그램 lua 스크립트 기본 구조


메시지를 수신하면 on_msg_receive 함수가 호출된다. 이 함수내에서 send_msg, send_photo, send_text 등의 함수를 이용해서 메시지를 상대에서 보낼 수 있다. 다음은 'hello'를 수신하면, 결과를 보내준다.


[ 스크립트 기본 구조 : hello.lua ]

function on_msg_receive (msg)

if ( msg.text == 'hello' ) then

send_msg(msg.from.print_name, "world", ok_cb, false)

return

end

end

function ok_cb(extra, success, result)

end


$ bin/telegram-cli -s hello.lua

... 생략 ...

[14:21]  Jinho >>> aa

User Jinho is typing

[14:22]  Jinho >>> bb

User Jinho is typing

User Jinho is typing

[14:22]  Jinho >>> 헬로우

User Jinho is typing

[14:22]  Jinho >>> hello

[14:22]  Jinho <<< world

User Jinho marked read 1 outbox and 0 inbox messages



telegram-cli 실행화면[ telegram-cli 실행화면 ]


스마트폰 어플 화면[ 스마트폰 어플 화면 ]



2. 서버모니터링용 스크립트 살펴보기


[ 모니터링용 스크립트 일부 : server_mon.lua ]

now = os.time()


dir_cmd = "/home/cnx/cmd"

cmd_ping = "cd ".. dir_cmd .."; sh ping.sh"

cmd_load = "cd ".. dir_cmd .."; sh load.sh"

cmd_netlog = "cd ".. dir_cmd .."; sh show_netlog.sh"

cmd_mrtg = "cd ".. dir_cmd .."; perl mrtg.pl"

cmd_404 = "cd ".. dir_cmd .."; perl 404.pl"


mrtg_res = {"load", "swap", "public_if", "private_if", "disk_io", "memory_free", "memory_inactive"}

auth_phone = {["821012345678"] = true, ["821087654321"] = true }


-- 메시지 수신 처리

function on_msg_receive (msg)

if msg.date < now then

return

    end

if msg.out then

return

end


-- command

local recv_msg = ""

if ( msg.text ~= nil ) then

recv_msg  = string.gsub(msg.text,"[;|<>]","") -- 받은 msg중에 ;, |, <, > 등의 문자는 지움

end

local cmd, arg  = split(recv_msg) -- exam : ping a b c d => cmd = "ping", arg = "a b c d"

local file_name = ""

cmd = string.lower(cmd)

print("receive : ", cmd, "\n")


-- user_info

print("Name    : ", msg.from.print_name) -- 메시지 보낸사람 real name (Jinho)

print("Phone   : ", msg.from.phone) -- 메시지 보낸사람 전화번호  (8210AAAABBBB)

print("Msg Num : ", msg.id) -- 메시지 번호

print("to.Name : ", msg.to.print_name)


-- 일반대화, 비밀대화 구분해서 메시지 전송

if (msg.to.id == our_id) then

user_id = msg.from.print_name -- 일반대화창

else

user_id = msg.to.print_name -- 비밀대화창

end


-- auth (지정한 폰번호만 인증)

if auth_phone[msg.from.phone] then

print "auth    : OK "

else

print "auth    : invalid user"

return

end

mark_read(user_id, ok_cb, false) -- 읽은 메시지로 표시


-- ping

if ( cmd == 'ping' ) then

os.execute(cmd_ping .. arg)

send_text(user_id, dir_cmd ..'/result_ping.txt', ok_cb, false)

return

end


-- load

if ( cmd == 'load' ) then

... 생략 ...

end


-- netlog

if ( cmd == 'netlog' ) then

... 생략 ...

end


-- MRTG

if ( cmd == 'mrtg' ) then

os.execute(cmd_mrtg .. arg)

arg = trim(arg)

for i=1, table.maxn(mrtg_res) do

file_name = dir_cmd .."/".. arg .."_".. mrtg_res[i] .."-day.png" -- DIR/FILE

-- print (file_name)

if ( file_exists(file_name) ) then

send_photo(user_id, file_name, ok_cb, false)

end

end

return

end


-- web 403/404 status

if ( cmd == '404' ) then

... 생략 ...

end


-- help

-- if ( cmd ~= '' ) then

if ( cmd == 'help' ) then

send_text(user_id, dir_cmd ..'/help.txt', ok_cb, false)

end

end


... 생략 ...


주요부분을 살펴보자.

if ( cmd == 'ping' ) then

os.execute(cmd_ping .. arg)

send_text(user_id, dir_cmd ..'/result_ping.txt', ok_cb, false)

return

end


모니터링용 스크립트에서는 각 명령어마다 외부 명령을 호출하고 결과를 text파일로 저장했다. 그리고, 그 text파일 내용을 메시지로 뿌려지도록 했다. 명령어 추가는 if ( cmd == '명령어 ' ) then 형태로 확장해주고, 외부 명령 처리할 스크립트만 만들어주면 된다.

 

if (msg.to.id == our_id) then

user_id = msg.from.print_name -- 일반대화창

else

user_id = msg.to.print_name -- 비밀대화창

end


secret chat을 지원한다. msg.to.id == our_id 라면, 즉 받는 사람과 CLI 메신저 유저가 같다면 일반대화창으로 대화중이고, 그렇지 않는 것은 비밀대화이다. 비밀대화는 msg.from.print_name이 아닌 msg.to.print_name 에게 메시지를 보내야 한다. 아래 루틴이 없다면 폰에서 비밀대화로 메시지를 보냈더라도 CLI에서는 응답을 일반대화창으로 보낸다.


if auth_phone[msg.from.phone] then

print "auth    : OK "

else

print "auth    : invalid user"

return

end


auth_phone 에서 지정한 휴대폰에서만 명령을 처리한다.


mark_read(user_id, ok_cb, false)


메시지를 읽은 것으로 표시한다.


※ lua스크립트를 처음해봤다. lua 매뉴얼을 보면서 스크립트를 하루에 만들고, 그 이후에 한번 기능을 추가한 정도다. 그래서 스크립트 lua개발자들이 보기에는 좋지 않은 부분도 있을 것이다. lua고수에게는 연필깍는 칼처럼 뻑뻑하게 보일 수 있겠지만, 누군가 다듬어 사용하면 생선회감용 칼처럼 휼륭(?)하게 쓰일 수 있을 것 같다.


※ ping.sh, load.sh 등의 외부 호출 스크립트는 공개하지 않겠다. 내부 서버들의 데이터를 추출하는 부분이라서 공개하기가 쉽지 않고, 이 글을 읽는 분들의 서버상황이 저와는 다를테니 스크립트 내용보다는 호출 방식만 눈여겨 보면 좋을 것 같다.



3. 텔레그램 CLI 실행


$ bin/telegram-cli -s server_mon.lua

또는

$ bin/telegram-cli -s server_mon.lua -d &


테스트위해서는 -s 옵션만, 추후 운영하기 위해서는 -d 옵션으로 넣어 데몬형태로 실행한다.



telegram-cli 화면[ telegram-cli 화면 : help를 보내주고, ping 결과를 보내준 화면 ]


텔레그램 스마트폰 어플 화면[ 스마트폰 어플 화면 : 아무키나 입력해서 도움말을 확인, 서버그룹별 ping과 개별 IP별 ping 결과 요청 ]

※ 스크립트를 수정해서 'help'명령을 내렸을 때만 도움말을 보여주도록 바꿨다. 스크립트 수정 전에 캡쳐한 것임.



telegram-cli 화면[ telegram-cli 화면 : load 결과, MRTG 그래프 7개를 보내준 화면 ]


텔레그램 어플 화면[ 스마트폰 어플 화면 : load 결과, MRTG 그래프를 받은 화면 ]




4. 참고자료


* 텔레그램 CLI 소스에 들어있는 test.lua

* 텔레그램 README-LUA

* Lua check if a file exists

* Telegram Messenger Client



Posted by 좋은진호
시스템이야기2013. 2. 5. 12:50



Dell R620, R720 장비(Dell Rx20시리즈)가 작년 6월 정도에 출시되었다. 그런데 이 최신 장비에 작년말까지 FreeBSD를 사용할 수가 없었다. 크게 2가지 문제가 있었다.

  • RAID카드(MegaRAID) 인식 문제
  • NIC 인식 문제 (Broadcom의 BCM5720C 칩셋)

당시에 RAID카드 인식이 안되어서 설치 자체를 할 수가 없었다. 7월쯤에 SVN으로 RAID카드 관련 최신 커널 소스를 받아 패치하면 인식되어 설치는 문제없었다. 그러나 NIC인식은 여전히 문제였다.

bge0: watchdog timeout -- resetting
bge0: link state changed to DOWN
bge0: link state changed to UP

작년 11월말에 해당문제를 해결한 bge 커널 소스가 올라왔다. (국내 yongari님이 commit한 소스임)

http://svnweb.freebsd.org/base/stable/9/sys/dev/bge/if_bge.c?view=log

  With this change, bge(4) should work on any 5717/5718/5719/5720
  controllers. Special thanks to Mike Hibler at Emulab who setup
  remote debugging on Dell R820. Without his help I couldn't be able
  to address several issues happened on Dell Rx20 systems. And many
  thanks to Broadcom for continuing to support FreeBSD!

  Submitted by:    davidch (initial version)
  H/W donated by:    Broadcom
  Tested by:    many
  Tested on:    Del R820/R720/R620/R420/R320 and HP Proliant DL 360 G8


이 bge 소스는 12월 릴리즈된 FreeBSD 9.1에 포함되지 않았다. NIC인식을 위해서 별도의 수고가 필요하다.
http://svnweb.freebsd.org/base/stable/9/sys/dev/bge/ 에서 if_bge.c과 if_bgereg.h 를
http://svnweb.freebsd.org/base/stable/9/sys/dev/pci/ 에서 pcireg.h 를 받아서
각각 /usr/src/sys/dev/bge/ 와 /usr/src/sys/dev/pci/ 에 복사한다.
그리고 커널 컴파일(/usr/src/에서 make -j8 kernel)하고 리부팅하면 NIC 인식에 문제가 없다.
FreeBSD 8.x 또한 SVN에 해결된 소스가 있으니 최신 SVN 소스를 받은 후 컴파일하면 인식될 것이다. (해보지는 않음)


FreeBSD 9.1 최신 SVN버전의 CD 만드는 방법은 '나만의 FreeBSD ISO 이미지 만들기'에 자세히 적어뒀다.

Posted by 좋은진호
IT이야기2012. 3. 14. 08:30
Akamai(아카마이)의 서버는 현재 105,000대의 서버로 운영중이라고 한다. 78개국의 ISP와 1900여개의 망에서 서비스 중이다. (Data Center Knowledge의 'Akamai Now Running 105,000 Servers' )

Akamia의 NOC(Network Operating Center)

[ Akamia의 NOC(Network Operating Center) (출처 : Pingdom ]

Akamai도 2~3년 사이(2009년에 48,000대)에 2배 이상 증가했다. 저쪽 동네는 쓴다하면 10만대 이상, 좀 덜 써도 몇만대하는 곳은 여러 군데인 것 같다. Akamai 외의 서버 대수는 Data Center Knowledge에서 꾸준히 업데이트를 하고 있다. (멋져~~) ( 'Who Has the Most Web Servers?' )

  • Akamai Technologies: 105,000대 (company, 2012.3월)
  • OVH: 100,000대 (company, 2011.7월)
  • SoftLayer: 100,000대 (company, 2011.12월)
  • Rackspace: 79,005대. 클라우드 서비스로 급증 (company, 2011.12.30)
  • Intel: 75,000대 (company, 2011.8월)
  • 1&1 Internet: 70,000대 이상 (company, 2010.2월)
  • Facebook: 60,000대 (추정치, 2009.10월)
  • LeaseWeb: 36,000대 (company, 2011.2월)
  • Intergenia: (PlusServer/Server4You), 30,000대 (company, 2011년)
  • SBC Communications: 29,193대 (Netcraft)
  • Verizon: 25,788대 (Netcraft)
  • Time Warner Cable: 24,817대 (Netcraft)
  • HostEurope: 24,000대 (Company)
  • AT&T: 20,268대 (Netcraft)

구글은 공식적인 서버대수를 발표하지 않기 때문에 몇대인지는 명확하지는 않지만, 2011년에 대략 90만대로 추정된다.

NHN은 2013년 상반기 오픈을 목표로 춘천 데이터센터를 짓고 있다. 1만5천평 규모에 1500억원을 투자한다.
서버는 구글이나 페이스북처러 조립서버로 구성한다는 얘기가 들린다. 그리고 서버는 PSU을 없애고 AC전원이 아닌 DC전원을 공급받을 것이라고 한다. AC전>원이라면 AC -> DC로 전환할 때 전력 손실이 발생한다. 그런데 DC전원을 공급받으므로 전력 손실이 줄어들어 효율이 높아질 것이다.

NHN 도시첨단산업단지 조감도. 춘천 데이터센터

[ NHN 도시첨단산업단지 조감도. 도로 아래쪽이 데이터센터로 추정 ]


현재의 네이버 서버와 춘천 데이터센터가 오픈할 시점의 서버는 몇대일지 궁금해진다.


* 관련글
2011/04/20 - Facebook의 데이터센터와 서버
2010/06/30 - 페이스북(Facebook)의 서버 대수는 6만대 이상?
2009/06/01 - 해외 주요 업체의 서버 대수는?
2009/04/10 - 구글, 구글 서버와 데이터센터 발표자료를 풀 동영상으로 공개

Posted by 좋은진호
IT이야기2011. 4. 20. 21:02
오리건주 프린빌(Prineville, Oregon)에는 약 30만 square feet크기(9만5천평)의 페이스북(Facebook) 데이터센터가 있다. 현재 절반인 15만 square feet가 운영중이며, 올 하반기에 나머지 절반이 완성될 것이다. 이 데이터센터와 페이스북 서버가 4월초에 Open Compute Project( http://opencompute.org/ )를 통해 공개가 되었다.

[ 페이스북 데이터센터 내부. 출처 : Open Compute Project ]


[ 페이스북 서버 샤시. 출처 : Open Compute Project ]


[ 페이스북 서버 조립. 출처 : Open Compute Project의 동영상 중에서 ]


페이스북 서버에 간략하게 요약하면.
  • 1U보다 더 큰 1.5U 크기의 서버. 그래서 보다 큰 방열판과 팬을 사용하여 온도 효율성이 높아졌다.
  • 샤시는 심플하다. 페이스북은 '무허영심(vanity free)'이라고 표현했다. 멋진 말이다. 군살을 쏙 뺀 반드시 필요한것만 들어있는 구조다.
  • AMD보드 : AMD 옵테론 6100시리즈, 24 DIMM 메모리 슬롯
  • 인텔 보드 : 인텔 제온 5500 또는 5600, 18 DIMM 메모리 슬롯
  • 자체 제작한 서버는 구매한 서버보다 38%정도 높은 효율. 24% 저렴
  • 파워서플라이 : 94.5%의 고효율. 2009년 당시 구글서버가 85~90%였다.
  • 전원은 2개가 연결되는데, 하나는 277V AC 주전원(일반적인 208V보다 높은 것은 효율을 위해). 다른 하나는 48V DC 백업전원(48V DC는 캐비넷형태의 UPS에 연결됨). 구글서버는 12V DC전원만 사용한다.
페이스북 데이터센터와 서버에 대해서는 4월 초에 나온 글이 인터넷에 많을 것이니, 추가된 내용들만 적어보겠다.


1. 페이스북 데이터센터의 태양광 시설

페이스북은 이 데이터센터에 태양광발전시설을 구축하여 100KW의 전기를 생산한다. 1년을 기준으로 204,000KWh의 전기를 생산할 것으로 기대하고 있다. 1년 20만KWh라면, 하루 5.6시간을 생산했을 때를 가정한 것 같다.
365일 X 5.6h X 100KW = 약 20만KWh

태양광발전으로 생산되는 에너지는 전체 에너지 사용량에 비하면 비중이 상당히 낮다. 그린피스에서도 에너지 사용면에서 좋지 않은 데이터센터로 지적했다.

[ 페이스북 데이터센터의 태양광 발전시설. 출처 : Swinny.net (URL은 아래 '사진' 출처에) ]


하지만 데이터센터의 에너지 효율은 상당히 높다. 데이터센터의 에너지효율은 PUE수치로 나타내는데, 이 수치가 1에 가까울수록 높은 효율을 나타낸다. 구글은 2009년에 평균 PUE가 1.22라는 놀라운 수치를 보였으며, 구글의 데이터센터 중에는 1.1x인 곳도 있다. PUE가 1.2만 되어도 예술의 경지에 이르렀다고 하는데, 페이스북의 새 데이터센터는 놀랍게도 PUE가 1.07이다. 즉, 거의 전력 손실없이 운영되고 있다는 뜻이다.

 
2. 데이터센터 추가 동영상과 사진

금요일에 저널리스트와 프린빌(Prineville) 지역 공무원을 대상으로 페이스북 데이터센터 투어가 있었나보다. Data Center Knowledge의 'Video: Inside Facebook’s Server Room' (2011.4.18) 글에 약 8분짜리 데이터센터 투어 동영상을 볼 수 있다.

[ 페이스북 데이터센터와 Jay Park. 출처 : 위 Data Center Knowledge 동영상 캡쳐 ]

[ 서버 전원부. 하나는 277V AC전원. 하나는 48V DC전원. 출처 : 위 Data Center Knowledge 동영상 캡쳐 ]

[ 페이스북 서버랙. 출처 : 위 Data Center Knowledge 동영상 캡쳐 ]


투어를 시켜준 사람이 'Director of Datacenter Engineering'(데이터센터 엔지니어링 부서 이사 정도?) 'Jay Park'이란 분이다. 전기분야 엔지니어이신데, 미국 교포일까? 이름도 그렇기도 하고, 동영상이나 사진을 보면 우리 나라 사람 같아 보인다.

Rackspace에서 근무하시는 분이 데이터센터를 방문하여 올린 사진도 있다
* Photo tour of Facebook’s new datacenter (Scobleizer 블로그, 2011.4.16)

[ 페이스북 데이터센터 로비의 모니터화면. 출처 : 위 Scobleizer 블로그 ]


로비 모니터에 데이터센터 상태를 모니터링할 수 있는 화면이 있다고 한다. 내부 온도는 18~27도(화씨 66~82도), 습도는 24~41% 정도다. 습도는 적정수준인데, 온도는 높은 구역도 있다. 외부 공기를 끌어다가 냉각을 해서 조금 높은 것일 수도 있겠다. 그리고, 오른쪽 상단에 표시된 현재 PUE는 1.08(?)으로 환상적이다. ^^

페이스북의 다른 데이터센터 사진을 보고 싶다면 타임지(TIME)에서 공개한 사진이 있다. 타임지는 2010년 올해의 인물로 페이스북의 '마크 주커버그(Mark Zuckerberg)'를 선정(2010년 12월중순)했다. 그래서, 타임지는 페이스북의 또다른 데이터센터인 캘리포니아주 산타클라라(Santa Clara, California)의 데이터센터 사진을 일부 제공했었다.
* A Glimpse Inside a Facebook Server Farm - Photo Essays (TIME, 9장의 사진)



* 데이터센터 관련글

- 2009/10/07 - [IT이야기] MS의 시카고 데이터센터 사진 공개
- 2009/04/03 - [IT이야기] 구글 데이터 센터 내부 공개, 그 안을 들여다보자
- 2009/04/10 - [IT이야기] 구글, 구글 서버와 데이터센터 발표자료를 풀 동영상으로 공개
- 구글 데이터센터의 놀라운 전력 효율 (2009.10.27, 커피닉스)
- 애플 신규 데이터센터 (2009.7.16, 커피닉스)
- 애플 신규 데이터센터 (2009.8.14, 커피닉스)
- 터키 이스탄불의 Vodafone 데이터센터, 폭우로 물에 잠겨 (2009.9.16, 커피닉스)

* 서버대수 관련글

- 2010/06/30 - [IT이야기] 페이스북(Facebook)의 서버 대수는 6만대 이상? (서버대수와 데이터센터)
- 2009/06/01 - [IT이야기] 해외 주요 업체의 서버 대수는?
- Facebook 사용자 4억명 돌파, 그리고 서버수 (2010.2.12, 커피닉스)

* 사진

- Solar-powered Facebook Data Center (2011.4.16, 페이스북 태양광 발전시설)
- Inside Facebook’s Not-So-Secret New Data Center (2011.4.7, 페이스북 데이터센터 사진 9장)

Posted by 좋은진호
IT이야기2010. 6. 30. 23:25
Datacenter Knowledge의 Rich Miller 글 'Facebook Server Count: 60,000 or More'에서 Facebook의 서버 대수는 6만대 이상일 것으로 추측하고 있다.

지난주에 있었던 Velocity 2010 컨퍼런스에서 Facebook의 'Tom Cook'의 프리젠테이션 자료를 토대로 서버 대수를 추측했다. 프리젠테이션에 포함된 차트에는 년도는 있지만, 서버 대수에 대한 수치는 없다. 그러나 이 차트의 성장 곡선의 비율로 대수를 할 수 있다.
facebook server footprint

[ Facebook 서버 증가 차트 ]


2009년 11월 Facebook의 CTO인 Jeff Rothschild(제프 로스차일드)은 서버가 3만대 이상이라고 밝혔다. 차트에서 2009년 후반에 있는 평평한 지점이 대략 이 3만대 이상이 되는 지점일 것이다. 그러면 차트 맨 오른쪽 2010년 초에는 그 때의 두배 정도 되므로, 서버 대수는 6만대 이상으로 추측이 가능하다. Facebook의 이용규모에 비해서는 서버 대수가 생각보다는 적다는 느낌이다. Memcached, HipHop(PHP를 C++로 변환하여 성능 개선), Varnish(분산 및 캐싱 웹서버), Cassandra(NoSQL) 등의 효율적인 운영 덕분일까?

[ 현재 운영중인 Facebook의 Data Center 내부 ]


[ 현재 운영중인 Facebook의 Data Center 내부 (랙에 장착된 서버 뒷면. 케이블링이 깔끔하다.) ]


[ 현재 운영중인 Facebook의 Data Center 내부 ]

※ 위 이미지 출처 : Datacenter Knowledge 블로그 등

Facebook유저는 작년 1월에 1억 5천명이었는데, 올해 2월에는 2배가 넘는 4억명으로 급성장했다. 이렇게 급성장하는 서비스를 대비하여 Facebook은 Facebook 최초의 자체 데이터 센터를 Prineville에 건설중이다. 규모는 147,000 Square Foot(SF, 약 13,600여 제곱미터). FIFA의 국제규격 축구장 넓이가 7140제곱미터 이니깐, 축구장 2배 정도의 규모라고 보면 된다. 건설 사진은 Facebook에 공개되어 있다.

Facebook의 Prineville Data Center

[ Facebook의 Prineville Data Center 조감도 ]

※ 이미지 출처 : Facebook 공식 블로그 'Breaking Ground on Our First Custom Data Center'


소셜미디어의 성장이 놀랍다.
그런데, 트위터는 몇 대일까?


* 서버대수 관련글

- Facebook 사용자 4억명 돌파, 그리고 서버수 (2010.2.12)
- 2009/06/01 - [IT이야기] 해외 주요 업체의 서버 대수는?

* 데이터센터 관련글

- 2011/04/20 - [IT이야기] Facebook의 데이터센터와 서버
- 2009/10/07 - [IT이야기] MS의 시카고 데이터센터 사진 공개
- 2009/04/03 - [IT이야기] 구글 데이터 센터 내부 공개, 그 안을 들여다보자
- 2009/04/10 - [IT이야기] 구글, 구글 서버와 데이터센터 발표자료를 풀 동영상으로 공개
- 구글 데이터센터의 놀라운 전력 효율 (2009.10.27)
- 애플 신규 데이터센터 (2009.7.16)
- 애플 신규 데이터센터 (2009.8.14)
- 터키 이스탄불의 Vodafone 데이터센터, 폭우로 물에 잠겨 (2009.9.16)

Posted by 좋은진호
IT이야기2010. 2. 2. 08:56
거실에 놓여있는 테이블을 사용하여 서버 랙(Rack)을 구축할 수 있는 아주 재미난 프로젝트(?)가 있다. 사진은 IKEA(이케아)의 LACK시리즈 side table이다. 이 테이블의 다리 끝에서 끝까지 '21과 5/8'인치이고, 다리 안쪽의 간격은 표준랙 크기와 똑같은 19인치이다. 따라서, 19인치 크기인 랙용 서버나 네트웍 스위치를 넣을 수 있다.

IKEA LACK시리즈 side table

[ IKEA의 LACK side table ]



'LackRack'( http://lackrack.org/ )은 IKEA의 side table을 이용하여 손쉽게 모듈형태의 가정용 데이터센터(서버실)을 구축할 수 있는 방법을 제시해준다. 1U짜리 장비를 최대 8대까지 넣어둘 수 있다고 한다.(이 테이블의 구조상 '올려둔다'보다는 '넣어둔다.'라는 표현이 더 어울릴 것 같다.)

LackRack

[ 테이블 5개로 구성한 랙 (사진 출처 : LackRack 사이트) ]


LackRack은 이런 점이 좋다.

  • 인테리어 소품이 될 수 있다.
  • 테이블을 원래 목적 그대로 사용할 수도 있다.
  • 실제 서버 랙(rack)을 구매하는 것보다 저렴하다. LACK시리즈의 side table은 1만원선이면 살 수 있다.
  • 다양한 색상으로 꾸밀 수 있다. 서버 랙은 은색, 검정색 계통이 대부분인데, IKEA의 LACK은 검정, 흰색, 하늘색, 노란색, 빨간색, 월넛 등의 색상이 있다.


테이블의 변신. 재밌지 않은가? '벽돌로 할 수 있는 10가지'처럼 '테이블로 할 수 있는 10가지'의 답을 찾아보는 것도 재밌을 것 같다. 테이블이 달라 보이고, 의자가 새롭게 보일 수 있다.

[ 일반적으로 사용하는 표준 랙 ]


Posted by 좋은진호
IT이야기2009. 10. 7. 18:50
70만 Square feet 크기(약 6만 5천 제곱미터)의 초대형 데이터센터인 MS의 시카고 데이터센터의 를 운영의 사진 몇 장이 공개됐다.

- 윗층은 전형적인 데이터센터 형태인 반면에
- 아랫층은 세계에서 가장 큰 컨테이너형 데이터센터이다.

윗층은 총 4개의 12000 square feet크기의 서버 룸을 갖고 있다.
아랫층은 1단계 마무리되었고, 1단계 마무리로 56개의 컨테이너를 운영할 수 있다. 2단계도 56개의 컨테이너가 들어설 것이므로, 아랫층 데이터센터에는 총 112개의 컨테이너가 들어설 것이다.
각 컨테이너는 2천대의 서버가 들어간다. 따라서 계산상으로는 112 X 2000 = 약 224,000 여대의 서버를 수용할 수 있다.

 1) 데이터센터내 컨테이너 모습
※ 큰 사진은 Inside Microsoft's Chicago Data Center 에서 볼 수 있음

2) 컨테이너내 서버 (중앙 통로)
※ 큰 사진은 Microsoft Chicago: Center-Aisle Container 에서 볼 수 있음

3) 컨테이너내 서버 (측면)

4) 전력, 냉각 시설

※ 위 사진은 모두 Data Center Knowledge 에서


그리고, MS는 36초짜리 동영상을 공개했다. Microsoft Chicago Data Center Container Bay (실버라이트 설치 필요)

참고로 애플은 노스 캐롤리나(Maiden, North Carolina)에 50만 square feet(약 4만 6천 제곱터)의 초대형 데이터센터를 구축 준비중이다. 이 애플의 데이터센터는 클라우드 서비스를 위한 것으로 추측되고 있다. 애플 데이터센터에 대해서는 아래 관련글을 참고하길 바란다.

MS, 애플, 그리고 구글의 6억 달러 규모의 캐롤리나 데이터센터까지 데이터센터의 삼국지를 보는 듯 하다.


* 관련글 :

- 애플, 새로운 데이터센터 구축 계획 (2009.7.16)
- Apple, eBay의 데이터센터 임원진 'Olivier Sanche'를 영입 (2009.8.14)
- 2009/08/16 - [IT이야기] - Microsoft의 초기 웹사이트는 이렇게 생겼다
- 2009/06/01 - [IT이야기] - 해외 주요 업체의 서버 대수는?
- 2009/04/10 - [IT이야기] - 구글, 구글 서버와 데이터센터 발표자료를 풀 동영상으로 공개
- 2009/04/03 - [IT이야기] - 구글 데이터 센터 내부 공개, 그 안을 들여다보자

Posted by 좋은진호
IT이야기2009. 8. 16. 16:34
microsoft.com의 과거 웹사이트를 소개한 A Brief History of Microsoft on the Web: Reflections on microsoft.com from Birth to 'Middle Age' 를 살펴봤다.

* 1994년 4월~1995년 8월 (서버 3대)
microsoft.com MS 초기 웹사이트

[ 이미지 출처 : 위에서 소개한 MS 사이트 ]


초기의 서버는 총 3대로 운영되었다. 웹서버와 FTP, 그리고 Gopher(고퍼) 서버가 각각 1대씩 운영되었다. 다음 사진을 보라. 맨 위부터 FTP, Gopher, 웹서버까지 딱 이게 전부였다. 서버 크기는 대략 8U 정도로 보인다. 초기에는 WindowsNT 3.1와  EMWAC(European Microsoft Windows Academic Consortium) 웹서버를사용했다. 웹페이지 맨 하단을 보면 그 뒤에 NT 3.5로 업그레이드 했다는 것을 알 수 있다.

[ microsoft.com의 최초 랙(rack) ]


※ 고퍼는 웹이 등장하기 이전에 메뉴방식으로 이용하던 텍스트기반의 인터넷 서비스이다. 그 당시에는 고퍼가 지금의 포털사이트처럼관문 역할을 했다고 생가하면 이해가 빠를 것 같다. 저도 90년대에 텍스트기반의 고퍼 클라이언트, 또는 넷스케이프를 사용( gopher://도메인 )하여 고퍼를 이용했다.

* 1995년 8월~1995년 11월 (서버 4대)

초기의 많은 웹사이트들은 배경에 반복되는 이미지를 많이 사용했다. 특히 회색바탕으로 글자나 작은 모양을 엠보싱 처리(?)하는 경우가 두드러졌다. MS도 마찬가지.

* 1995년 11월~1996년 6월 (서버 6대)

* 1996년 6월~1996년 8월 (서버 12대)

짧은 기간에 서버대수가 무려(?) 2배로 늘어났다. 엄청난 증가다. 페이지뷰도 그 전 웹사이트의 1일 1,434,274 페이지뷰에서 이 기간에는 3,734,804 페이뷰로 2배 이상 급증했다.

* 1996년 8.14~1996년 11.15 (서버 16대)

* 1996년 11.15~1997년 9.29 (서버 19대)

당시의 노란색 바탕 생각난다.

* 1997년 9.29~1998년 11.30 (서버 29대)

* 1998년 11.30~1999년 12월 당시 (서버 35대)


'해외 주요 업체의 서버 대수는?' (2009.6월)에서 얘기한 서버 대수와 비교하면, 1999년 당시에 '35대' 서버만으로 웹사이트를 운영했다는 것을 보면 우습기도 할 것이다. 지금은 Microsoft의 서버는 21만대 이상일 것으로 추정한다. 10년만에 무려 6천배로 증가한 것이다. 그리고, NT 3.1에서 지금은 Windows server 2008과 IIS 7.0으로 운영중이다.

그러면 세계 최초의 서버는 어떻게 생겼을까?
이 서버가 바로 CERN의 '팀버너스 리(Tim Berners-Lee)'가 사용한 세계 최초의 웹 서버이다. 서버에 붙여있는 글자가 재밌다. 'This machine is a server. DO NOT POWER IT DOWN!!' ^^

The World's first web server


한편 microsoft의 초기 웹사이트와 세계 최초의 웹서버를 보니 이런 생각이 든다.
기억은 사라진다. 하지만 기록한 것은 남는다. 기록이 있기 때문에 과거를 되살릴 수 있는 하나의 통로가 생기는 것이다. 그렇다면 내 삶을 되돌아볼 수 있는 좋은 방법은 사진, 글이나 메모 등을 남겨두는 것 같다.


* 관련글
  2009/06/01 - [IT이야기] - 해외 주요 업체의 서버 대수는?
  2007/07/07 - [IT이야기] - www.microsoft.com 사이트는 windows 2008로 운영중


Posted by 좋은진호