CentOS bootstraping in Ubuntu
$ apt-get install yum rpm python-m2crypto
$ mkdir -p /tmp/centos/var/lib/rpm
$ rpm –root /tmp/centos –initdb
$HOME/.rpmdb 가 만들어지는데 그거는 마지막 삭제한다.
rpmfind.net에서 원하는 버전의 rpm 찾아서 다운로드
$ wget ftp://195.220.108.108/linux/centos/5.7/os/x86_64/CentOS/centos-release-5-7.el5.centos.x86_64.rpm
$ rpm -ivh –force-debian –nodeps –root /tmp/centos centos-release-5-7.el5.centos.x86_64.rpm
$ ln -s /tmp/centos/etc/pki /etc/pki
$ yum –installroot /tmp/centos install yum
$ mount -t proc foo /tmp/centos/proc
$ mount -t sysfs foo /tmp/centos/sys
$ chroot /tmp/centos /bin/bash –login
$ rm -rf /home/choe/.rpmdb # 위에서 initdb한것 지우기
$ rpm –initdb
$ echo nameserver 168.126.63.1 > /etc/resolv.conf
$ yum install yum
$ yum install vim-minimal less
클라우드 컴퓨팅의 장점
Naver Platform Day 2011을 훑어보다 정리합니다.
구체적으로 사용자 측면에서 클라우드 서비스의 장점
- 자본 비용과 운용, 유지의 부담 없이 저렴하게 고기능의 정보 처리 기능을 이용할 수 있다.
- 시스템 구축, 개발 기간이 단축되고 수요 변동에 유연하고 즉각적으로 대응할 수 있다.
- 네트워크를 통해 협업, 데이터 수집, 제어가 용이하다.
- 장비 분실 등에 따른 정보 유출 위험을 감소시킨다.
- 클라우드 기반의 지속성에 의해 사업의 연속성이 향상된다.
- 사용한 비용만 청구받고 지불하면 된다.
사업자 측면에서의 장점
- 가상화, 분산 처리 기술을 활용함으로써 다양한 정보 처리 수요에 대해 자원을 효율적으로 제공할 수 있다.
- 애플리케이션 표준화를 통해 소프트웨어 자원을 효율적으로 활용할 수 있다.
- 서비스 자동화 및 지속성을 통해 운용, 보수, 갱신을 합리화할 수 있다
- 다른 클라우드 서비스를 사업자 측에 결합해 저렴한 가격으로 다양한 서비스를 제공할 수 있다.
- 사용자의 수와 상관없이 서비스를 공급할 수 있는 분산, 가상화의 특징이 있다.
결국 합리화, 최적화, 비용 절감!
쓸데없이 자원 관리하는데 노력을 들이지 말고 클라우드에 맞기고, 남는 시간에 당신의 비지니스에 집중하라~
클라우드 호스팅과 클라우드 IaaS의 차이는
- on-demand self-service로 사용할 수 있느냐?
- 사용랑 기반으로 과금하느냐?
쓸데없는 트래픽 유발하기… ㅋㅋ
ssh 192.168.0.24 cat /dev/zero > /dev/null
rsyslog가 CPU를 100%먹는 증상
Ubuntu 11.04 natty 서버가 있는데, 여기서 rsyslog가 CPU를 100% 먹는 증상이 발생한다. syslog에 아래 메시지가 지속적으로 쌓이면서 생기는 현상이다.
Cannot read proc file system: 1 - Operation not permitted.
특정 커널과 rsyslog의 특정 버전의 조합이면 이러한 문제가 발생한다고.. 결론은 커널을 업그레이드 하단거, 아니면 rsyslog를 업그레이드 하던가…
그런데 커널을 업그레이드하면 리부팅해야하고… 돌아가는 서비스는 중단할 수 없고.. 결국은 rsyslog를 downgrade하기로 했다.
조사해보니 natty에 있는 버전은 모두 같은 버전이라 maverick으로 가기로 했다. 그래서 sources.list를 아예 maverick으로 이동..
$ perl -p -i -e "s/natty/maverick/g" /etc/apt/sources.list $ apt-get update
그리고 어떤 버전이 있는지 확인해보고..
$ apt-cache show rsyslog | grep Version Version: 4.6.4-2ubuntu4 Version: 4.6.4-2ubuntu4.1 Version: 4.2.0-2ubuntu8
그 버전으로 다운그레이드한다.
$ apt-get install rsyslog=4.2.0-2ubuntu8
그리고 나중에 혹시나 자동으로 업그레이드 될 지 모르니 업그레이드 금지
$ echo 'rsyslog hold' | dpkg --set-selections
스크립트로 한방
#!/bin/bash
release=`lsb_release -c | awk '{print $2}'`
if [ "$release" != 'natty' ]; then
echo 'rsyslog download only apply to natty!'
exit
fi
if [ `grep -c 'natty' /etc/apt/sources.list` == 0 ]; then
echo 'something wrong in sources.list'
exit
fi
perl -p -i -e 's/natty/maverick/g' /etc/apt/sources.list
apt-get update
apt-get install -y --force-yes rsyslog=4.2.0-2ubuntu8
perl -p -i -e 's/maverick/natty/g' /etc/apt/sources.list
echo 'rsyslog hold' | dpkg --set-selections
munin: Call to accept timed out
munin을 돌리고 있는데, 뭔가 이상한게 보인다. 그래프가 중간중간 끊기는거다… 그래 점검하는 호스트가 좀 많기로서니… 좀 힘들어한다는 느낌이 들었다.
여기저기 둘러봤지만 .. 글쎄 확실한 해결책이 없다. 결국은 perl 소스를 조금 보기로했지..
ProcessManager.pm에서 accept를 기다리는 timeout이 아래처럼 10으로 되어있는데, 간딘히 360으로 해놨다. 우선 로그보니 timeout 메시지는 안나온다.
#accept_timeout => 10, accept_timeout => 360,
Conceptual Architecture Checklist
Just bookmark
http://it.toolbox.com/blogs/enterprise-solutions/conceptual-architecture-checklist-22364
su 명령을 wheel 그룹만 허용하기..
$ chown root.wheel /bin/su $ chmod 4750 /bin/su $ chattr +i /bin/su
근데 말이다.. su 명령은 아예 막고, sudo만 사용하게 하는건 어떨까?
keepalived를 설정하는데… vrid가 중복이네??
keepalived를 설정하는데 receive an invalid ip number count associated with VRID! 라는 로그가 계속 나온다. 말그대로 VRID로 받은 패킷의 IP 갯수와 설정된 IP 갯수가 다르다는데, 엇뜬 이해하기가 힘들다.
고민해보니깐.. VRID가 중복된 것 아닐까? 이 네트웍에 다른 vrrp가 동작하는 것이 아닐까하고 VRID를 바꾸니까 동작한다.
금방 바꿔서 문제를 해결했지만, 이런 문제를 사전에 인지하려면 뭔가 방법이 필요했다. 현제 네트웍에서 사용중인 VRID를 모두 알 수 없을까??? 여기저기 자료를 찾아봤지만, 이런 문제에 대한 직접적인 해결 방법은 찾을 수 없었다.
그러다가 눈에 띈게 vrrp 프로토콜은 224.0.0.18로 boradcasting한다는 사실. 그리고 keepalived에서 vrrp는 기본 설정상 1초에 1번 vrrp advertising을 한다는 것.. 라서 해당 224.0.0.18와 통신하는 것을 패킷을 보면 vrid가 나오겠구나 생각하고 해봤는데..
$ sudo tcpdump -i eth0 host 224.0.0.18 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 19:17:30.574665 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 28 19:17:30.574676 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 28 19:17:30.574770 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 2, prio 101, authtype simple, intvl 1s, length 24 19:17:30.574773 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 2, prio 101, authtype simple, intvl 1s, length 24
다행이도 생각했던 것 처럼 나온다. 그래서 아래처럼 5초 동안 VRIP를 감사하면 현재 네트웍의 VRIP가 다 나오고 여기서 없는 것으로 피해가면 된다!!
sudo timeout 5 tcpdump -i eth0 host 224.0.0.18 2>&1 | grep vrid | awk '{print $9}' | sort | uniq
VMWare에서 Xen설치할때 vmnet 어쩌구저쩌구..
Ubuntu에서 VMWare를 사용하고 있었습니다. 원래는 VirtualBox를 사용했었지만, 그녀석이 안의 가상머신에서는 가상화 기술(vmx or svm)을 지원해주지 않아서 말이죠..
그런데 VMware에 Xen을 설치하고 재부팅하면 네트웍 카드를 promiscuous로 허용하지 않는다고 메시지가 뜹니다. 보안때문이라나.. 간단히 아래처럼 하면 됩니다.
$ chmod a+rw /dev/vmnet*
이렇게하면 되기는 하는데, 시스템을 리부팅하면 /dev/vmnet*의 권한이 다시 재설정됩니다. ㅡㅡ 그래서 또 권한을 주고 udev에 등록을.~
$ cp -a /dev/vmnet* /lib/udev/devices
삽질 끝~
screen 상태표시줄에 세션 이름 표시하기
screen을 여러 세션을 쓰다보면 현재 어떤 세션에 있는지 헷갈린다. 지금만 봐도 세션을 열어놓은게 5개정도이고, 거기서 한 4~5개씩 윈도우를 열어넣고 있으니…
그래서 세션 이름을 상태줄에다 표시하는 방법을 찾아봤다.
screen이 실행하면 $STY 환경변수에 세션이름을 가지고 있는데, 이걸 표시하면 된다. 그런데 이걸 screenrc에 넣으면 표시가 안된다. 그래서 screen -X로 스크린에 명령을 직접 내리는 방식으로 변경했다.
if [ "$STY" != '' ]; then
_STY=`echo $STY | sed 's/^[0-9]*\.//'`
screen -X hardstatus alwayslastline "$_STY] %-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
fi
훨씬 쾌적한 screen life!