Linux 설치시 설치상태나, 설치 단계에서부터 몇가지 체크하고 모니터링 할게 있어서, SSH로 접근 하면 좀 편하지 않을까 싶어서, Ananconda가 Load되면서 SSH를 뛰울 수 있는 방법이 없나~ 하다가... 아주 썩 깔끔한 방법은 아니지만, 우선 급한대로 원하는 결과만(?) 만들어 내어 일단 메모해둔다. (보안같은 부분은 추가적으로 해줘야 한다.. SSH가 root로 비번도 없이 로그인 되니... pass를 미리 설정하던지, Allow인자를 활용하던지.. 아무튼, 꼭 보안은 별도로 신경 써줘야 한다...)


1. 환경

TFTP/PXE로 isolinux 이미지들을 바탕으로 설치

isolinux중에서 initrd.img 이미지를 편집하는 것으로 처리.


2. initrd.img 풀어 해치기~

# cd <initrd.img가 있는 디렉토리>

# mkdir initrd

# cd initrd

# zcat ../initrd.img | cpio -idv

# ls -al

drwxr-xr-x 15 root root 4096 Apr  8 19:54 .

drwxr-xr-x  4 root root 4096 Apr  8 19:53 ..

-rw-r--r--  1 root root  134 Apr  8 19:54 .bash_history

lrwxrwxrwx  1 root root    4 Apr  8 19:54 bin -> sbin

-rw-r--r--  1 root root   78 Apr  8 19:54 .buildstamp

drwxr-xr-x  2 root root 4096 Apr  8 19:54 dev

drwxr-xr-x 16 root root 4096 Apr  8 19:54 etc

drwxr-xr-x 18 root root 4096 Apr  8 19:54 firmware

lrwxrwxrwx  1 root root   10 Apr  8 19:54 init -> /sbin/init

drwxr-xr-x  3 root root 4096 Apr  8 19:54 lib

drwxr-xr-x  4 root root 4096 Apr  8 19:54 lib64

drwxr-xr-x  3 root root 4096 Apr  8 19:54 modules

drwxr-xr-x  2 root root 4096 Apr  8 19:54 proc

-rw-r--r--  1 root root  157 Apr  8 19:54 .profile

drwxr-xr-x  2 root root 4096 Apr  8 19:54 sbin

drwxr-xr-x  2 root root 4096 Apr  8 19:54 selinux

drwxr-xr-x  2 root root 4096 Apr  8 19:54 sys

drwxr-xr-x  2 root root 4096 Apr  8 19:54 tmp

drwxr-xr-x  7 root root 4096 Apr  8 19:54 usr

drwxr-xr-x  7 root root 4096 Apr  8 19:54 var


3. ssh 데몬 실행을 위한 준비
(다행이 Anaconda 이미지에 sshd 바이너리나 기본적인 설정파일은 미리 준비되어 있었다.)

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# ssh-keygen -b 1024 -f etc/ssh/ssh_host_key -N "" -t rsa1

# ssh-keygen -d -f etc/ssh/ssh_host_rsa_key -N "" -t rsa

# ssh-keygen -d -f etc/ssh/ssh_host_dsa_key -N "" -t dsa

# cp -a etc/ssh/sshd_config.anaconda etc/ssh/sshd_config

# cat etc/ssh/sshd_config
(Port를 변경하고 싶으면 변경하면 되고, 기타 옵션 조정을 원하면 알아서....)

Port 22

HostKey /etc/ssh/ssh_host_key

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

PermitRootLogin yes

IgnoreRhosts yes

StrictModes yes

X11Forwarding yes

X11DisplayOffset 10

PrintMotd yes

XAuthLocation /sbin/xauth

KeepAlive yes

SyslogFacility AUTHPRIV

RSAAuthentication yes

PasswordAuthentication yes

PermitEmptyPasswords yes

PermitUserEnvironment yes


4. Anaconda 로딩 시, sshd 자동 실행 처리
(이부분이 참... 원래 init 스크립트가 그냥 bash 쉘 스크립트였는데, CentOS6부터 바꼈는지, 컴파일 되어 있다..ㅡ.ㅡ;; 어쨌든, 훼이크성 편법이지만, 부팅중 실행되는 바이너리 중 하나를 바꿔치기 해서 /usr/sbin/sshd가 실행되도록 임시 처리 했다.... 만만한게 auditd 였다.. 추후 정상적인 init프로세스에 추가 할수 있는 방법을 찾으면 수정..)

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# cd sbin

# mv auditd auditd.orig

# cat > auditd << EOF

#!/bin/bash

/sbin/sshd

/sbin/auditd.orig

EOF

# chmod 755 auditd


5. SSH 설정작업은 끝... 작업했던 디렉토리 내용을 다시 initrd.img로 묶어준다.

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# find . | cpio -H newc -o | gzip -9 > ../initrd.img


6. 이제 다시 설치를 시도해서, 설치 과정중 해당 서버로 SSH접속을 시도해본다.

- Password는 없이 바로 로그인 된다.

- 다른 사전 작업이 필요하다면, 각자 처리 해둔다.


이상, 끝..... 서두에 이야기 했듯이... sshd를 실행하는 것이 정상적이진 않다... 시간이 되는대로 CentOS 6 Anaconda의 init과정을 좀 파봐야 겠다... 뭔가 나오면 그때 문서 업데이트하기로 하고 오늘은 이정도로만....

Posted by 사랑줍는거지
,

오늘 예전에 같이 동고동락(?)했던 SE분께 놀러 갔다가 딱 걸렸다..ㅡ.ㅡ;; 그쪽 고객중에서 사내 업무에 필요한 관계로, LiveCD를 커스터마이징하는 방법을 요청 했다고....

뭐 대충 보니, LiveCD에 각종 드라이버나, 유지보수 할수 있는 도구들을 담아두고, 유사시에 LIveCD를 응급복구 용도로 사용할려는 것 같다. 이전에는 WindowsPE를 커스트마이징 해서 사용해 온듯 하나, 라이센스 문제가 불거저 더이상 사용하지 못하게 된것 같기도 하고...

아무튼, 이야기를 들어보니, LIveCD의 커널에 특정 하드웨어(Disk 드라이버나 NIC 드라이버) 모듈을 추가 하는 작업은 아니라, 단순히 Linux OS에서 사용할 유틸리티 파일들을 추가 해두려는 것이라, 바로 테스트 해봤다.

Linux 기반에 원격설치서비스(RIS)구축을 해본적이 있어, "벌거 있겠어?? 그놈이 그놈이겠지.." 했는데, 역시나, 쉬운게 없다..ㅡ.ㅡ;;

먼저 맞닥드린건, Fedora16이라는 최신 시스템...ㅡ.ㅡ;; 그간 관심밖에 있었던 Linux 부팅 프로세스가 엄청 낯설었다.... (정말 이 분야에서도 이제 퇴출될 날이 곧.........) 부트 프로세스에 대해 대충이라도 파악하기 위해, initramfs의 init 스크립트를 한참 봤다... 대략 "이런식이구나..." 보구 나니, 표현과 디렉토리 구조, 그리고 패키징 포맷정도가 달라지고 이전과 개념적으로는 거의 비슷....

해서 오늘의 목적인 "Root-Image 파일에 원하는 유틸리티를 빨랑 박아 넣고 끝내자~~" 로 패스...

추적해보니 Root-Image는 squashfs.img라는 파일... 이걸 다시 푸니, 또 ext3fs.img가 나왔다..(뭐가 일케 꼬아 놨어..ㅡ.ㅡ;;) 대충 풀고, 필요한 파일 박아 넣고, 다시 역순으로 패키징하고... 하는 과정에서 개삽질 연속....

역순 패키징할때, 원래 디렉토리 구조로 안해서 한참을 헛짓...ㅡ.ㅡ;; (진짜 죽어야 겄다...)
또 오랜만에 mkisofs랑 mksquashfs 사용할려니 버벅버벅... Error 줄줄............ 아무튼 어떻게 저렇게 마무리...

단순히, 유틸리티들을 Root-Image에 복사해 넣어 두는 것이지만, 까먹지 않기 위해 개인 Wiki에 메모....
다음에, 특정 H/W 모듈도 추가 해야 할 일이 있을 때, 참고하면 도움도 될것 같다...


Wiki : http://redmine.nehome.net/redmine/projects/linux/wiki/LiveCD_-_Edit_Fedora_LiveCD's_Root-Image  



LiveCD - Edit Fedora LiveCD's Root-Image

  • (Note)
    • LiveCD와 동일 배포본인 OS에서 작업하는 것이 여러가지로 안전할듯...

Root 이미지 파일 추출

# cd /usr/local/src

# mkdir /mnt/tmp

# mount Fedora16-LiveCD.iso /mnt/tmp
mount: warning: /mnt/tmp/ seems to be mounted read-only.

(나중에 ISO 이미지 생성시, 필요하므로 미리 복사해둠...)
# cp -a /mnt/tmp iso-src

# ls -al /mnt/tmp/
total 30
dr-xr-xr-x. 5 4294967295 4294967295   224 Mar 25 20:33 .
drwxr-xr-x. 3 root       root        4096 Mar 25 23:57 ..
dr-xr-xr-x. 3 4294967295 4294967295    84 Mar 25 19:16 EFI
-r--r--r--. 1 4294967295 4294967295 18092 Mar 25 19:17 GPL
dr-xr-xr-x. 2 4294967295 4294967295   444 Mar 25 19:16 isolinux
dr-xr-xr-x. 2 4294967295 4294967295   200 Mar 25 19:18 LiveOS

# cp /mnt/tmp/LiveOS/squashfs.img /usr/local/src/

# umount /mnt/tmp

# mount squashfs.img /mnt/tmp
mount: warning: /mnt/tmp/ seems to be mounted read-only

# ls -al /mnt/tmp/
total 5
drwx------. 3 root root   29 Mar 25 19:18 .
drwxr-xr-x. 3 root root 4096 Mar 25 23:57 ..
drwxr-xr-x. 2 root root   33 Mar 25 19:18 LiveOS

# tree /mnt/tmp/
/mnt/tmp/
└── LiveOS
    └── ext3fs.img

1 directory, 1 file

# cp /mnt/tmp/LiveOS/ext3fs.img /usr/local/src/

# umount /mnt/tmp

Root-Image 에 원하는 작업 처리.

일단, 마운트 하기

# mount ext3fs.img /mnt/tmp

# ls -al /mnt/tmp/
total 116
dr-xr-xr-x.   2 root root  4096 Mar 25 19:14 bin
dr-xr-xr-x.   5 root root  4096 Mar 25 19:18 boot
drwxr-xr-x.   4 root root  4096 Mar 25 19:10 dev
drwxr-xr-x. 116 root root 12288 Mar 25 19:18 etc
drwxr-xr-x.   2 root root  4096 Jul 29  2011 home
dr-xr-xr-x.  11 root root  4096 Mar 25 19:12 lib
dr-xr-xr-x.  11 root root 12288 Mar 25 19:18 lib64
drwx------.   2 root root 16384 Mar 25 18:50 lost+found
drwxr-xr-x.   2 root root  4096 Jul 29  2011 media
drwxr-xr-x.   2 root root  4096 Jul 29  2011 mnt
drwxr-xr-x.   2 root root  4096 Jul 29  2011 opt
drwxr-xr-x.   2 root root  4096 Mar 25 18:50 proc
dr-xr-x---.   2 root root  4096 Mar 25 19:14 root
drwxr-xr-x.  22 root root  4096 Mar 25 19:13 run
dr-xr-xr-x.   2 root root 12288 Mar 25 19:14 sbin
drwxr-xr-x.   2 root root  4096 Jul 29  2011 srv
drwxr-xr-x.   2 root root  4096 Mar 25 18:50 sys
drwxrwxrwt.   2 root root  4096 Mar 25 19:17 tmp
drwxr-xr-x.  13 root root  4096 Mar 25 19:08 usr
drwxr-xr-x.  17 root root  4096 Mar 25 19:13 var

원하는 파일 넣기.

  • 원하는 위치에 복사 해넣고 umount하면 됨.
  • (Note)
    • tmp류의 디렉토리의 경우, LiveCD가 부팅되면서 초기화를 하므로, 별도의 디렉토리를 생성후, 파일 복사해야 함.

패키지 설치/제거.

# chroot /mnt/tmp

(설치)
# yum install [패키지]

(제거)
# yum remove [패키지]

작업 완료되었으면, umount

  • ext3fs.img 파일의 size가 4GB로 제한되어 있으니, 데이타 추가시 용량에 신경 써야 함.
  • 필요시, ext3fs.img 파일을 새로(더 큰용량으로) 생성하여 작성도 가능할듯...
# umount /mnt/tmp

추출 및 변경/추가된 Root-Image 재작성.

# mkdir LiveOS

# mv ext3fs.img LiveOS/

(삭제 해주지 않으면, 이전 파일에 Append 됨. -noappend 옵션을 주면 되나, 수정전 원본은 삭제해준다.)
# rm squashfs.img

# mksquashfs LiveOS squashfs.img -keep-as-directory -all-root
Source directory entry LiveOS already used! - trying LiveOS_1
[===|

# cp squashfs.img iso-src/LiveOS

(ISO로 만들 Source 디렉토리 외부에 boot정보 파일이 있어야 mkisofs가 정상 작동...)
# cp -a iso-src/isolinue isolinux

# mkisofs -udf -V "Fedora16-LiveCD" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-info-table -boot-load-size 4 -o Fedora16-LiveCD-New.iso iso-src
I: -input-charset not specified, using utf-8 (detected in locale settings)
Size of boot image is 4 sectors -> No emulation
  1.24% done, estimate finish Mon Mar 26 00:13:36 2012
  2.47% done, estimate finish Mon Mar 26 00:13:36 2012
  3.71% done, estimate finish Mon Mar 26 00:13:36 2012
  4.94% done, estimate finish Mon Mar 26 00:13:36 2012
  6.18% done, estimate finish Mon Mar 26 00:13:36 2012
  7.42% done, estimate finish Mon Mar 26 00:13:49 2012
  8.65% done, estimate finish Mon Mar 26 00:13:47 2012
  9.89% done, estimate finish Mon Mar 26 00:13:46 2012
 11.12% done, estimate finish Mon Mar 26 00:13:44 2012
 12.36% done, estimate finish Mon Mar 26 00:13:44 2012
 13.59% done, estimate finish Mon Mar 26 00:13:43 2012
 14.83% done, estimate finish Mon Mar 26 00:13:42 2012
 16.06% done, estimate finish Mon Mar 26 00:13:48 2012
.
.
.

생성된 Fedora16-LiveCD-New.iso 로 부팅해서, 커스터마이징 해뒀던 상태가 반영되었는지 확인한다.

  • 금번 테스트에서는 간단히 /home과, /root 디렉토리에 call518이라는 텍스트 파일을 넣어 봤다.
  • 아래는 스크린샷....

     





Posted by 사랑줍는거지
,
원문 : http://www.cyberciti.biz/tips/centos-linux-6-download-cd-dvd-iso.html


CentOS Linux version 6 has been released. It is a community-supported operating system based on Red Hat Enterprise Linux (RHEL) version 6. CentOS Linux is considered as the most popular Linux distribution for web servers with almost 30% of all Linux servers using it.

CentOS Linux 6 Desktop Screenshot

Fig.03: CentOS Linux 6 Desktop Screenshot


From the release notes:

The CentOS team is pleased to announce the immediate availability of CentOS-6.0 for i386 and x86_64 Architectures. CentOS-6.0 is based on the upstream release EL 6.0 and includes packages from all variants. All upstream repositories have been combined into one, to make it easier for end users to work with.

CentOS Linux 6 Screenshots

CentOS 6 Download

You can download CentOS Linux 6 via the web/ftp server or via BitTorrent (recommended) client.

CentOS 6 DVD ISO download

CentOS Linux 6 DVD ISO Torrents

Torrent files for the DVD's are available at the following location:

A Note About CentOS Linux version 6.1

From the mailing list:

Since upstream has a 6.1 version already released, we will be using a Continous Release repository for 6.0 to bring all 6.1 and post 6.1 security updates to all 6.0 users, till such time as CentOS-6.1 is released itself. There will be more details about this posted within the next 48 hours.

Featured Articles:

Posted by 사랑줍는거지
,
CentOS 6이 너무 늦는군요.... FrameOS 6을 사용중이지만, 그래도 기대되는건..........
오늘 관련해서 검색하다가, RHEL 6의 또다른 클론 버전을 발견......(RHEL 클론 버전들이, 그것도 유용한 것들이 많네요. 이런걸 발견할 때마다 느끼지만, 나만 몰랐던 것 같은....)
하나는 Scientific Linux 6 이고, 하나는 Fermi Linux이다. 이중 활성화 정도로 봐서는 Scientific Linux 6이 더 나은듯 하다.
일전에 소개한 FrameOS는 초기 구성이 아주~ 너무나 컴팩트하게 구성되어 VM용에 최적화 되어 있는게 특징이었다. Scientific Linux 6는 아직 설치까지는 해보지 못했지만, 구글 검색결과 외국에서 대학 연구실이나, 과학 연구부서에서 많이 사용된다고 한다.

http://scientificlinux.org/

위 주소에서 보다 자세한 정보를 얻을수 있다. 참고로 5.x까지는 CD/DVD 이미지가 제공된듯 하나, 6부터는 DVD만 지원하는듯....





Posted by 사랑줍는거지
,
Posted by 사랑줍는거지
,
Chef의 Server/Client 구성을 위해 이래저래 구글 돌아다니다가 우연히 접한 OS인데, 너무 너무 끌리는 OS였다. 일단 설치 ISO이미지 용량이....330MB정도로 무지~무지~ 쬐끔이다~ 정말 Frame OS??????


아래는, 이 OS를 찾게된 링크 내용인데, FrameOS의 특징에 대한 설명이 잘되 있다. 개인적인 이유지만, 컴팩트 하면서도 RHEL(CentOS)와 100%호환되고(즉, 무지 컴팩트 하지만, yum으로 얼마든지 원하는 서비스 설치/추가가 가능 하다는..), 더군다나, Chef가 이미 적재되어 있어, 자동화 요소도 기본적으로 가지고 있다. 좀더 확인해봐야 겠지만, 가상화 인프라 구축에서 지금 해야할일이 엄청 줄어들지도 모르겠다~ (+.+)

다른 문서에서는, KVM기반의 Hypervisior 구축시, Host-OS로도 많이 이용하는듯 하다. 커널도 최신 및 부수적인 패키지들이 모두 최신이었다. 현재 FrameOS 버전이 6인걸로 추정하는데, 아마도 RHEL6 SRPM을 가져다 만들었다면,,, 큭...ㅋㅋㅋ CentOS6를 기다릴 필요가 그닥.....없어질지도.... (좀더 확인을 해봐야 할 사항임)
 


원문 : http://support.frameos.org/discussions/questions/3-why-should-i-use-frameos-instead-of-centos

Why should I use FrameOS instead of CentOS?

  1. SUPPORT STAFF2 Posted by rubiojr on February 25, 2011 @ 06:24 PM

    rubiojr's Avatar

    Good question.

    To be honest, moving existing RHEL/CentOS/SL/OL hosts to FrameOS doesn't make much sense. You can always fetch the packages you need from FrameOS repositories if you need an up2date Ruby/Chef stack.
    FrameOS tries to be 100% compatible with RHEL. You should be able to install FrameOS packages in CentOS.

    FrameOS is a Ruby/Chef flavored RHEL distribution. 99% of the packages come from Red Hat source RPMs. They key differences are:

    • Comes with Ruby Enterprise and Chef pre-installed.
    • FrameOS updates policy (with regard to Ruby/Chef) is less conservative than CentOS's. We follow Chef and Ruby upstream. If upstream doesn't break backwards compatibility, we upgrade (i.e. we will upgrade from jruby 1.5 to jruby 1.6).
    • Core install footprint is smaller. Great for fast provisioning virtual/automated environments.

    It all comes down to having an up to date ruby stack and saving a few steps after the install without having to resort to writing your own kickstart config file right now.

    Let me know if that helps ;)


ㅁㄴㄹㅇㅁㄴㄹ

아래는 ESXi 에서 설치 스크린샷이다.

부팅 초기화면이다. 눈에 뛰는건 Kickstarted Install 이다. Tap을 눌러 cmdline를 살펴보니, ks=cdrom:/frameos.ks 라고 되어 있었다. 아마도 일반적인 설정값으로 자동으로 설치가 완료되게끔 되어 있는듯.. 아직 ks파일 내용은 보지는 못했음. (본 설치는 첫번째 메뉴로 진행..)

ESXi에서 OS종류로 RHEL6(64bit)로 선택했으며, 메모리는 1GB를 할당하지 않으면, 텍스트모드로만 설치가 지원된다. (정말 RHEL6 클론인가...?? +.+)













패키지그룹 선택화면이다. 없....다...ㅡㅡ;;ㅋㅋㅋ Core하나 달랑.... 그만큼 날씬~하단 얘긴가...










설치정보 입력시간을 포함해서, 총 소요시간은 5분도 채 안걸린듯 하다. 뭐 보시다시피 전체 패키지 개수가 180여개 뿐이다... 시간이 걸릴게 딱히.... 아무튼, SSH외에는 거의 서비스도 떠있는게 없고, 정말.. 가볍다 못해, 성의 없이 느껴질 정도다.. ㅋㅋㅋㅋ

암튼 이놈으로 간단히 Chef도 해결될듯하고, VM의 템플릿OS로 잡는것도 검토해봐야 겠다.

아무튼, 정말 날씬한 몸매(?)의 OS를 원하신다면 꼭 사용해보시길.... 




(추가) FAQ 페이지를 뒤적거렸더니, ks내용도 친절히 안내되어 있음..ㅎㅎ 그리고, RHEL6 기반이 맞다...와우~
 

http://mirror.frameos.org/kickstart/frameos6.ks

cdrom
lang en_US.UTF-8
text
keyboard us

#
# Configure the network
#
#network --bootproto=query
#network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver=10.0.2.1 --hostname=frameos
network --bootproto=dhcp 

zerombr yes
clearpart --all
autopart
bootloader --location=mbr --append="rhgb quiet"

timezone Europe/Madrid
rootpw frameos
authconfig --enableshadow --enablemd5
selinux --disabled
firewall --disabled
skipx
reboot

%packages --nobase
@core





[사이트내 기타 문서들]
 

FrameosOS 6


Experimental Features





Binary RPMS included in the ISO

acl
attr
audit
audit-libs
authconfig
basesystem
bash
binutils
bzip2
bzip2-libs
ca-certificates
chkconfig
coreutils
coreutils-libs
cpio
cracklib
cracklib-dicts
cronie
cronie-anacron
crontabs
curl
cyrus-sasl
cyrus-sasl-lib
dash
db4
db4-utils
dbus-libs
device-mapper
device-mapper-event
device-mapper-event-libs
device-mapper-libs
dhclient
dracut
dracut-kernel
e2fsprogs
e2fsprogs-libs
efibootmgr
elfutils-libelf
ethtool
expat
file-libs
filesystem
findutils
fipscheck
fipscheck-lib
frameos-logos
frameos-release
gamin
gawk
gdbm
glib2
glibc
glibc-common
gmp
gnupg2
gpgme
grep
grub
grubby
gzip
hwdata
info
initscripts
iproute
iptables
iptables-ipv6
iputils
kbd
kbd-misc
kernel
kernel-firmware
keyutils-libs
krb5-libs
less
libacl
libattr
libblkid
libcap
libcap-ng
libcom_err
libcurl
libdrm
libedit
libffi
libgcc
libgcrypt
libgpg-error
libidn
libnih
libselinux
libsepol
libss
libssh2
libstdc++
libudev
libusb
libuser
libutempter
libuuid
libxml2
logrotate
lua
lvm2
lvm2-libs
MAKEDEV
mingetty
module-init-tools
mysql-libs
ncurses
ncurses-base
ncurses-libs
net-tools
newt
newt-python
nspr
nss
nss-softokn
nss-softokn-freebl
nss-sysinit
nss-util
openldap
openssh
openssh-clients
openssh-server
openssl
pam
passwd
pciutils-libs
pcre
pinentry
plymouth
plymouth-core-libs
plymouth-scripts
popt
postfix
procps
psmisc
pth
pygpgme
python
python-iniparse
python-libs
python-pycurl
python-urlgrabber
readline
rootfiles
rpm
rpm-libs
rpm-python
rsyslog
ruby-ee
sed
setup
shadow-utils
slang
sqlite
sudo
sysvinit-tools
tar
tcp_wrappers-libs
tzdata
udev
upstart
util-linux-ng
vim-minimal
wget
which
xz-libs
yum
yum-metadata-parser
zlib

















Posted by 사랑줍는거지
,

Myth or truth: One should always use Apache httpd in front of Apache Tomcat to improve performance?


http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one-should-always-use-apache-httpd-front-apache-tomcat-improve-perform


원문은 : 위 링크

Apache-Tomcat과 httpd의 핵심 개발자들이 직접 작성한 내용입니다. 오늘 옆팀에서 Apache만 붙이면 성능이 떨어진다고 해서 좀 봐주다가 찾은 자료네요. PHP를 서비스 하거나, 기타 Apahce의 특정 모듈기능을 필요하지 않는다면, 다시 말해 단순 정적인 웹서비스에서는 굳이 httpd서버를 Tomcat앞단에 둘필요는 없을듯 합니다. 흔히들 대부분의 개발자들이 기본적인 HTTP요청은 Apache가 처리하고 Tomcat내에서 처리될 자바 어플리케이션만 Tocmat으로 보내 처리되도록 하는게 가장 성능이 좋을것이라 믿어 왔지만. 구조상으로 봐도, 더 좋을리는........ Tomcat의 Apache Native Module성능이 httpd에 비교해 전혀 차이가 없는데..........(PHP등을 사용한다면, Apache가 앞단에 있어야 하니, 그런 부분은 논외 처리. 번거로움없이 일반유저로 80포트를 사용하고 싶다거나, Tomcat에러페이지를 관리 하고 싶다거나, 등등 나름대로 Apache를 앞단에 두어야 할 이유도 충분히 있다. 이글의 요점은 Apache를 앞단에 두어서는 안된다~가 아니니 오해 없기를~)
 

Myth or truth: One should always use Apache httpd in front of Apache Tomcat to improve performance?

 posted by mthomas on April 14, 2010 11:14 PM

The short answer is that this is a myth. The longer answer is that back in the days of Tomcat 3 there was some truth to this depending on circumstances. However, for the versions of Tomcat in use today (5.5.x and 6.0.x) then there is no need to use httpd for purely performance reasons. Tomcat now supports the native/APR connector which uses the same native library (the Apache Portable Runtime—APR) as httpd for the low-level I/O and therefore can achieve similar performance to httpd. When serving static content there is ever so slightly more overhead when using Tomcat compared to httpd but the differences are so small they are unlikely to be noticeable in production systems.

If you research the httpd vs Tomcat performance issue, you will find a variety of load and performance benchmarks that show a range of results. An often quoted result shows that Tomcat's pure Java connector is consistently faster than httpd.

This particular result is the opposite of what is expected. httpd should be significantly faster than Tomcat's pure Java connector. This result is probably caused by the size of the file used. Tomcat caches small static files in memory by default and this will provide a significant performance improvement. httpd does not cache files in memory by default. This demonstrates quite nicely how the definition of the benchmark can have a significant impact on the results.

The performance testing performed by Christopher Schultz, a regular on the Tomcat users mailing list, used a wider range of file sizes and provides – in my view – better results. The results of his tests are shown in the graph below.

Click to see larger image

These results are much more in line with what is expected, although there are a few interesting points to note:

  • Apache httpd and Coyote APR/native show similar performance levels.
  • Coyote NIO isn't too far behind httpd and Coyote APR/native.
  • There appears to be a limit on the usefulness of sendfile. This may be a hardware limitation but is worthy of further attention. I've added this to my todo list.
  • For small file sizes (less than ~10KiB) the static file caching in Tomcat provides a significant performance boost.

The detailed results for any performance test will vary with a number of factors such as the hardware used, the number of concurrent requests, the use of keep-alive and the use of caching. These factors can change the results of a particular test but the broad performance results will remain the same:

  • httpd and Coyote APR/native typically have similar performance.
  • Coyote NIO is typically just behind Coyote APR/native (further behind for SSL).
  • Coyote BIO will typically offer the lowest performance.

The settings to achieve the best performance will vary from application to application. The best settings for an application will depend significantly on the size of the resources, the ratio of static to dynamic content, the number of concurrent users, the usage patterns of those users and so on. Generally, performance can be improved by increasing the cacheMaxSize for the context, increasing the number of connector threads (using maxThreads [4]) available to process requests and enabling keep-alive (using maxKeepAliveRequests) but all of these come at the cost of increased resource usage. There is a trade-off to make here between performance and resource usage that will be different for each application.

It should also be noted that there is no magic "make it run faster" option in Tomcat. If your application takes 15s to generate a request, there is nothing that Tomcat can do to improve that. You'll need to profile your application to understand why requests are taking that long and then tune your application code appropriately.

While raw performance for static content may not be a good reason to use httpd, there are a number of good reasons why you might want to use httpd with Tomcat. The most frequent reason is to provide load-balancing to two or more Tomcat instances. httpd isn't the only option to so this - hardware load balancers or other reverse proxies can be used - but it is a popular choice amongst system administrators as many of them are already familiar with httpd. I'll write more on using httpd as a load-balancer in a future article.

httpd is also used with Tomcat when there is a requirement to support technologies other than Java. While Tomcat can support PHP or Perl, the support for these is better in httpd. Therefore, for sites that need a mix of technologies httpd can be used as the front-end web server, directing requests to mod_php, mod_fastcgi, mod_proxy_http (for Tomcat) or any other module as appropriate.

httpd's support for integrated Windows authentication is also a reason for using httpd in front of Tomcat. There are Tomcat based solutions for integrated windows authentication and, as these gain acceptance through wider use, this particular reason for using httpd may become less important. However, at the moment, it remains one of the more frequently cited reasons for using httpd with Tomcat.

In summary, there are good reasons for using httpd with Tomcat but raw performance for static content isn't one of them. If you are using httpd solely to improve static content performance then I recommend taking a look at the Coyote APR/native connector for Apache Tomcat.

Mark Thomas is a Senior Software Engineer for the SpringSource Division of VMware, Inc. (NYSE: VMW). Mark has been using and developing Tomcat for over six years. He first got involved in the development of Tomcat when he needed better control over the SSL configuration than was available at the time. After fixing that first bug, he started working his way through the remaining Tomcat bugs and is still going. Along the way Mark has become a Tomcat committer and PMC member, volunteered to be the Tomcat 4 & 7 release manager, created the Tomcat security pages, become a member of the ASF and joined the Apache Security Committee. He also helps maintain the ASF's Bugzilla instances. Mark has a MEng in Electronic and Electrical Engineering from the University of Birmingham, United Kingdom.

Comments

Configuring Response Headers

We're currently using Apache Httpd to handle such things as expires by type and gzip configuration. I wonder if these things can be set up in tomcat, thereby eliminating the httpd layer for us.

CDN & Throughput

I think that it is useful to use the httpd when you are configuring the Content Delivery Network.

IMHO if you use both the httpd and tomcat on different machines, each can fully concentrate only on its work. Tomcat's threads can compute your application's logic and use the whole memory for speed up the application. Whilst httpd's threads can serve the content from the disk. This can improve the throughput.

-- tom

Different Myth(?)

While this post answers the myth question of native HTTP vs Tomcat HTTP, if you are using a native HTTP to do (perhaps) other services, I'm curious about whether it's myth or truth that one should go with AJP or HTTP for the native<->Tomcat communication. The tomcat documentation mostly seems to suggest that this should be AJP rather than HTTP - is this still just a myth?


Posted by 사랑줍는거지
,
커널 컴파일을 해야할 일이 생겼다. 실용단계에 있는 건 아니지만, 분산파일시스템으로서 2.6.34부터 kernel 베이스 라인에 포함된 ceph라는 걸 테스트 해보라는 Order가 떨어진 관계로.. 그런데!!!! 지난주 목요일 부터, CentOS 5.5 x86_64의 커널을 최신으로 올릴려고 하는데, 이게 컴파일도 에러 없고, 설치 완료하고 부팅만 하면 아래 에러와 함께 Kernel Panic에 빠져 버린다.

Mounting root filesystem.mount: could not find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fssetup
root: moving /dev failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /devunmounting old /procunmounting old /sysswitchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

 
구글링 해봐도, 해결책 찾기가 쉽지 않았다. 뭐 root 파일시스템 지정을 LABEL로 하지말고, /dev/sda3등과 같은 실제 장치명으로 하라는... 뻔한 이야기들만.........
VMware에서 진행했던거라, 혹시, VMware SCSI모듈쪽 문제인가 싶어, 커널에 VMware관련 모듈도 포함시켜 봤지만 소용없었음.

별짓을 다 해봤지만, 해결이 되지 않던 와중, 역시 구글 형님께서 해결의 실마리를 주셨음.
(링크 : http://funky-dennis.livejournal.com/3290.html)
문제는, 커널 컴파일 설정중 CONFIG_SYSFS_DEPRECATED_V2=y 가 활성화 되어 있어야 했다.
실제 적용해보니 그렇게 실패했던 것이 한방에 성공했다.
허무하다...ㅡㅡ;; 그러고 보니 커널 컴파일을 해본지가 너무 오래됐넹... 예전에 호스팅회사 있을때는 커널 컴파일 건수가 자주 있어 그럭저럭 대처했었는데, 하나도 기억이 안난다. 메롱이다 ㅡㅡ;;


적용방법은, make menuconfig 상에서 아래와 같이 체크 해줌
General setup ->
[*] enable deprecated sysfs features to support old userspace tools
[*]   enabled deprecated sysfs features by default 


최종적으로 .config 내용에서 아래와 같이 되어 있어야 한다.
# grep CONFIG_SYSFS_DEPRECATED .config
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y


 위 옵션의 역할에 대해서 현재 나로선 정확히 모른다. enable/disable에 따라 뭐가 다른지 분명히 해야 하는데.. 관련 정보는 나중에 구글에서 좀더 찾아봐야 겠다. 


(내용 추가)
하나 해결되니, 다른게 또 튀어 나오는군...;;;
커널 부팅은 정상이나, 부팅중 fail 하나 발견...ㅡ.ㅡ Udev관련된것 같긴 한데, 자세한건 또 손가락 품팔이 할수 밖에... 잇힝;; 이거 말고도 할거 많은데, 시작부터~

  -> 급히 검색해본 결과로는  CONFIG_SYSFS_DEPRECATED 옵션 y일경우, 발생함. 그렇다고 해당 옵션을 끌수는 없는 상황(끄면 부팅이 안되므로..ㅡㅡ;)이라, 우선은 이 메세지는 무시하기로 함. (자세한 조사는 뒤로...뒤로..뒤로...;;;)
Posted by 사랑줍는거지
,
http://www.oneopensource.it/03/02/2011/centos-6-interview-with-karanbir-singh/

아... CentOS 6은 왜 일케 늦어지는건지.....
CentOS 5는 최근 추세를 따라가기에는 너무 열악해졌다.
특히 가상화쪽은 "구시대 유물"로 느껴지기까지 한다.
마이너 업데이트는 꾸준히 이루어 졌다 하더라도, 낮은 메이져 버전을 쓰는 커널하며,
libvirt나 kvm-qemu 부분에는 어이없는 버그가 여전히 존재 한다. 그것도 1년 넘게 고쳐지지 않는 것도 있다.
KVM모듈 부분에서는 최신 기술들을 쓰기엔 항상 부족함을 느낀다. 언제나 CentOS 5 기반에서 KVM을 다룰때면, Fedora로 바꾸고 싶은 심정이 간절하다.
이렇듯 어정쩡하고, 부실한 가상화쪽이 RHEL6에서는 대폭 개선될듯하다.
RHEL6 커널 버전이 무려.....2.6.32-19 이다.!!!!!!!! 또한 기존까지는 커널과는 독립적인 기술이었던 하이퍼바이져(KVM)가 RHEL6부터는 커널에 통합되었다고 한다.(이부분은 좀더 자료가 필요할듯하다.. 어떤식으로의 통합을 의미하는지...별도로 유지/관리 해왔던 KVM을 커널로 통합을 햇다는 말인데, 자세한것은 뚜껑을 열어봐야 하는데...)
아무튼 RHEL6의 클론버전인 CentOS6이 꽤나 늦는 것을 보면, 변경된 부분의 임팩트로 인해 Remaking하는데도 많은 시간이 소요되는듯 하다, CentOS 4때나, CentOS5 때에 비해 상당히 늦다.
제발 빨리 좀 만나 봤으면 좋겠다..............

Posted by 사랑줍는거지
,