시스템이야기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이야기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. 8. 3. 13:03
위키피디아(Wikipedia)는 약 350여대의 서버로 운영되고 있다. 2008년 당시에 초당 5만번의 웹요청, 그리고 MySQL DB를 사용하여 초당 8만번의 SQL 쿼리가 발생한다. 지난 7월 31일에 잠깐동안 위키피디아(Wikipedia) 서비스에 장애가 발생했다. 아래 메시지 중에 10.0.6.28은 클러스터링된 DB서버 IP중의 1개이다.

wikipedia 위키피디아

[ 장애 발생한 위키피디아 페이지. 이미지 출처 : http://planet.mysql.com/entry/?id=20411 ]


This wiki has a problem

Sorry! This site is experiencing technical difficulties.
Try waiting a few minutes and reloading.

(Cannot contact the database server: Unknown error (10.0.6.28))

짧은 시간 동안이었지만, 그 순간에 위키피디아 백과사전을 봤어야하는 네티즌들은 답답했을 것이다. 이런 서비스는 공기와 같은 존재로 평상시에는 그 소중함을 느끼지 못한다. 그러나 공기 공급이 중단된다면? 숨이 턱턱 막히고, 답답함을 이루 말할 수 없다.
  • 가장 최근 일만 보더라도 지난달에 DDoS공격으로 메일서비스, 계좌이체, 인터넷 쇼핑 등이 원활하지 못해 답답함을 느꼈다.
  • 그 이전에 DDoS공격으로 인해 포털들의 부분적인 장애로 불편함을 겪었다.
  • 그리고, 지난 30일에 hanirc서버가 DDoS 공격를 당해 IP가 차단된 상태다. 현재 이순간에도 제대로 서비스가 이뤄지지 못하고 있다. 다수와 커뮤니케이션이 필요한 네티즌에게는 외로움과 답답함의 시간일 것이다. (참고로 hanirc에 대한 실시간 정보는 http://twitter.com/HanIRC 를 참고하기를 )
google data center 구글 데이터센터

[ 구글 데이터센터와 엔지니어 ]


중단없이 공기가 공급되도록 시스템 옆에는 늘 시스템 관리자가 있다. 위키피디아 장애가 발생한 이 날은 흥미롭게도 '시스템 관리자의 날'(시스템 관리자에게 감사하는 날, System Administrator Appreciation Day)이다. 올해로 10번째를 맞은 시스템 관리자의 날은 매년 7월 마지막 금요일로 정해져 있다. 364일동안 소외된 이 들을 위해 하루만이라도 감사하자는 의도다. 안타깝게도 시스템관리자는 잘하면 본전이고 잠깐 장애가 발생하면 욕먹는 위치에서 일하는 사람들이다.

시스템 관리자를 포함하여 늘 서비스가 중단되지 않도록 묵묵히 일하시는 분들에게 우리는 감사해야 한다. 서로에게 감사하자.

Posted by 좋은진호
IT이야기2007. 4. 5. 22:19
올블로그에 'Linux,FreeBSD, *NIX 운영자/사용자의 쉼터' 이름의 블로그 카페를 개설했습니다. 올블로그에 블로그를 등록하는 리눅스, 유닉스 사용자분이 계시면 가입하시어, 관련 정보를 모이는 블로그 카페를 만들어 봅시다.

http://cafe.coffeenix.net/
사용자 삽입 이미지


다음과 같은 블로거의 가입을 환영합니다.

- 리눅스, FreeBSD, 그외 유닉스 계열을 운영 및 이용하는 블로거
- 웹서버를 운영하시는 블로거
- 보안, 해킹에 대해 정보를 다루시는 블로거
- 웹2.0 등 IT이야기를 다루시는 블로거
- 이분야 관심있는 블로거
- 좋은진호와 커피닉스를 아는 블로거

이성적인 정보만 모이면 딱딱하겠죠? 감성이 느껴지는 인맥만들기가 이뤄지길 원합니다.
hanirc의 #coffeenix 방에 오시면, 운영자와 커피닉서분들을 만날 수 있습니다.

Posted by 좋은진호