고가용성을 확인하면서 여러가지를 고민을 했습니다.
사실 고가용성....말부터가 야리꾸리 한것이 쉽게 접근할수 없는것이 사실이고...

장비도 비싸면서 평소때에는 개뿔도 없고...(응?)
장애 터지면 더 단일서버보다 더 골치 아픈것이 고가용성입니다.

안정화가 되어진 시스템에 고가용성을 도입한답시고, 더 큰장애를 일이키는곳을 보아온지라, 만약 단일장비로도 충분한 여유가 있다면 단일장비로 버티는것이 어떨까하는 의견입니다...
(이 부분은 개인적인 견해이므로 무시하셔도 됩니다. 그냥 제 경험이 그렇다는것이니까요)

고가용성 cata.는 Network, Kernel, Application, Prog. 등 여러가지가 복합적으로 결합되어져 나타는 부분인지라, 카타를 설정을 해두고, 실제 운용글들은 각각에 맞는 Cata.에 넣을것입니다.

그 중 몇가지 사전 지식을 확인을 하는 차원입니다.

1. Network 지식 (L4, L7이 무슨짓을 하는녀석인지)
2. Linux Network를 주무를수 있는지 (VIP)
3. demon setting가능 여부 (IPVS, keepalivecd 등과 같은것들) - 아파치, 삼바, mysql, Java등도 포함됩니다.
4. 그리고 잡식 (....잡다한 지식....이건 답이 없네요...낄낄)

등의 지식을 알고 진행이 되어집니다.

첫번째로, Network부분부터 진행이 되어질것이며, 네트워크로부터 모든 고가용성이 시작이 되어진다고 생각하여도 과언이 아닐것으로 판단이 되어집니다.

두번째로, config수정 부분 (각종 프로그램 설치 가이드는 제공여부가 확실치 않습니다. 저도 테스트 환경이 부족한것은 사실이며, 이 부족한 테스트 환경을 벗어날수가 없기에)

세번째로, 잡식입니다.
사실 위 두가지를 진행하다보면 Kernel을 수정해야하는 경우도 생길것이고 (튜닝이던 혹은 프로그램 수정이던간에), 꼬우면 프로그램도 짜야합니다. (script language던 C이던) 에러코드에 대한 정확한 원인 분석도 해야합니다. 이 에러코드를 찾다보면 또 다시 원점으로 돌아가 Kernel을 뜯어본다던지 하는 불행한 경우가 생기거나, Network Packet를 분석해야할일도 분명 생길것입니다.

순서는 랜덤으로 진행을 하며 저도 "서버/인프라를 지탱하는 기술"과 제 잡식을 섞어가면서 글을 올릴수 있도록 하겠습니다. 진행은 총 3~6개월정도가 되어질것으로 보여집니다.
저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

find . -name "userinfoetc.conf" -exec perl -pi -e 's/aaaa/bbbb/g' {} \;
find . -name *.zone | awk '{ print "cat "$1" | sed "s/aaaa/bbbb/g" >"$1 }' | sh
perl -pi -e 's//mrtg/hub//mrtg/mrtg3/mrtgdata/g'

Linux system shell에서 변경하는 방법과 perl을 통해서 변경하는 방법
카타로그를 perl로 해야할지, shell로 해야할지...난감한 명령어들
저작자 표시 비영리 변경 금지
신고

'01. operation > iii. Shell Script' 카테고리의 다른 글

awk script 기초  (0) 2014.08.06
awk로 합계를 뽑아내보자.  (0) 2009.07.27
문자열 변경  (0) 2009.07.27
Posted by 신머루군
01. operation/i. Theory2009.07.27 14:18
리눅스에서는 자동적으로 모든 램의 빈 공간을 버퍼 캐쉬로 사용하여 메모리를 효율성을 높이고있으며 프로그램에서 많은 메모리를 필요로 하는 경우에는 자동으로 캐쉬의 크기를 줄인다. 리눅스에서 실제로 사용 가능한 메모리는 ‘free+buffers+cached’ 이다.
[root@linux net]# free
             total       used       free     shared    buffers     cached
Mem:         95648      93048       2600      65132      20824      36688
-/+ buffers/cache:      35536      60112
Swap:       201560        108     201452

사용가능 메모리량 : ( 2600+20824+36688 )/1024 = 58M

저작자 표시 비영리 변경 금지
신고
Posted by 신머루군
01. operation/i. Theory2009.07.27 14:15
서버의 부하량 측정 관련하여서 정리하다가 문득 생각이 들어서 적은 내용이다.
사실상 서버의 부하를 정확하게 측정하기란 너무나 애매한 상황이 많이 발생되어지기 마련이고, 이러한 상황속에 엔지니어들은 이 부하가 어디서 발생이 되어지는지, 그리고 최적화 작업을 어떻게 진행할것인지에 대해서 많은 고민을 하고 있고 해결책을 내 놓는다.
 
가장 좋은것은 돈으로 발라주는 서버...=_=;; (사실 돈으로 안되는게 어디있냐)
 
서버안에 5만원권 지폐로 가득 채워봐라.......아마도 서버는 쌩쌩 날라다닐것이다.
(설마 정말로 하시는분은 없을거라고 생각을 하지만.)
 
서버 부하가 높으면 서비스 지연, 혹은 장애 커지면 OS가 뻑가는일까지 발생되어지게 마련이다.
그래서 서버 담당자들은 항상 CPU, IO관련되어진 상황을 예의 주시를 하기 마련이다. 그중에서 중요한 부분은 TIME, I/O TIME, %USER, %SYSTEM등의 수치는 매우 중요한 수치이며 대부분의 프로세서 job중 가장 많이 차지하는 부분이기도 하다.
 
예를 들면 특정 사이트에 mysql demon을 찾아보면 아래와 같이 나타난다.
ps auxw|grep mysql
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     17294  1.3  3.7   3654  1192 pts/4    S    13:35   0:00 /bin/sh /home/tims63/mysql/bin/mysqld_safe --defaults-extra-file=/home/tims63/mysql/my.cnf --user=mailadm -P 3306
mailadm  17323  54.3  43.7   603654  211192 pts/4    Sl   13:35   0:00 /home/mysql/libexec/mysqld --defaults-extra-file=/home/tims63/mysql/my.cnf --basedir=/home/mysql --datadir=/home/mysql/data --user=mailadm --pid-file=/home/mysql/data/kki.pid --skip-external-locking -P 3306
 
여기서 중요하게 봐야할 부분은 %CPU, %MEM, VSZ, RSS
실제 메모리사용율도 높을뿐더러, CPU job역시 높게 나타나진다 여기 상태에서 sar data를 한번 살펴보면 아래와 같이 나타난다. (실 서버가 이렇게 나타나는것은 아니고, 인의적으로 작성자가 수정을 한 값이다)
 
sar 1 100
              CPU     %user     %nice   %system   %iowait    %steal     %idle
               all      12.40      0.00      34.33      50.00      0.00     43.27
               all      12.37      0.00      35.69      54.47      0.00     41.47
               all      12.84      0.00      38.06      55.00      0.00     39.10
               all      13.74      0.00     33.28      51.00      0.00     35.98
 
이럴경우 엔지니어는 과연 어떤 부분에 대한 문제를 찾겠는가? 답은 RSS (실제 물리메모리)가 부족하다는 답을 내릴것이다 (물론 여기서 이 정보만으로는 부족하다, free, top, vmstat 등과 같은 정보도 확인해야한다)
 
그후 메모리 증설을 하였고, 결과는 iowait가 확인히 줄수 있다는것을 알게 되었다. 만약 물리적인 메모리를 늘렸음에도 불구하고 io가 올라간다면 해당 서버에 IO job이 서버가 허용할수 있는 범위를 넘어선다는 의미이다.
 
이럴경우에는 서버 이중화, 혹은 부하분산을 해야하게 되어지는 작업까지 진행될수가 있다. (그렇지 않다면 위 처럼 서버안에 5만원권 지폐를 넣어두어도 된다...)하지만 모든 문제들이 하드웨어에서만 집약 되어지지는 않고, 소프트웨어적으로 튜닝을 어찌 하느냐에 따라서 판도는 달라질수도 있는 부분도 존재하다보니 개발자와 투닥거리도 해야할일도 종종 생긴다.
 
예를 들면 무식하게 큰 query문을 하루에 몇번씩이고 하고 불필요한 update까지 더해지게 되어진다면 이 무식하게 큰 query문때문에 CPU부하뿐만 아니라 메모리 사용율까지 높아지게 되어지는 부분을 찾을수 있다면 서버안에 돈을 넣어두는일을 찾을수가 있다.

저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

ps

ps 명령어
 
ps 명령어는 BSD계열과, linux계열로 argv를 줄수 있으며 일반적 BSD계열보다는 linux계열의 argv를 많이 사용하게 되어진다. (BSD는 argv 뒤에 -가 붙지않는것이 일반적이다)
 
사실상 ps에 대해서 활용방안은 그때그때마다 man page를 참조하는것이 가장 바람직할것으로 생각이 되어진다.
 
process status정보를 나타내고 기본적으로 많이 사용하는 옵션은 -ef 정도이다.
 
ps auwx|grep mta
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     16969  0.0  0.0   5372   720 ?        S    13:05   0:00 /tims/bin/tmtad -s -b /tims
mailadm  16970  0.4  1.2  57588 25964 ?        Sl   13:05   0:00 /tims/bin/tmtad -s -b /tims
root     16995  0.0  0.0   5512   796 pts/3    S+   13:07   0:00 grep mta
 
user : 사용자 권한
PID : Process Number
%CPU : CPU 사용률
%MEM : 물리메모리 사용률
VSZ : 가상 메모리 영역의 크기 (페이징 개념)
RSS : 물리 메모리 영역크기
TTY : 콘솔 system
STAT : 프로세서 상태
TIME : CPU 사용시간 (실제 올라온 시간이 아니라, CPU에서 job을 실행하고 경과 시간 혹은 JOB을 잡고 실행되어진 시간을 의미한다)

저작자 표시 비영리 변경 금지
신고

'01. operation > ii. base command' 카테고리의 다른 글

lvm 구성  (0) 2012.09.12
리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
Posted by 신머루군
TAG Linux, PS

sar


sar 명령어
sysstat rpm 패키지에 존재하고 있다. 
sar는 기본적인 system에 관한 정보를 남길수 있도록 되어져 있고, 설치하는것을 추천한다
 
sar 1 10 (system activiry report를 1초에 한번씩 총 10회 보여준다)
CPU     %user     %nice   %system   %iowait    %steal     %idle
%user : 사용자 어플리케이션 CPU 사용률
%nice : nice로 스케쥴링의 우선도를 변경한 프로세스가 사용자 모드에서 CPU를 소비한 비율
%system : user에서 요청한 부분을 처리하기 위한 system사용률 (ex:system call)
%iowait : I/O 관련되어진 대기율
%steal : xen등과 같이 가상CPU에 관련되어진 CPU사용률
%idle : CPU의 응답 시간, 혹은 유휴시간 측정되어진 값
 
멀티 CPU / 가상화되어진 CPU사용률 체크
sar -P ALL
 
CPU 사용률
sar -U
 
LoadAvg 값
sar -q
 
메모리 사용률
sar -r
 
스왑 발생 확인
sar -W
 
일반적은 서버의 부하를 측정할때 sar을 많이 사용하고, 실제로 많이 사용되어지고 있는 프로세서들에 대해서 trace는 top의 정보와 함께 확인을 해야한다. sar명령어는 기본적으로 일주일간의 system activiry report를 보관하고 있고, 해당 dir은 /var/log/sa 에 포함을 하고 있다.
 
특정일의 통계를 보고싶다면 sar -f sadd (dd는 날짜)를 확인하면 된다.
저작자 표시 비영리 변경 금지
신고

'01. operation > ii. base command' 카테고리의 다른 글

리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
linux hdparm 사용과 fdisk 명령어  (0) 2008.05.27
Posted by 신머루군
TAG Linux, sar, syssate
01. operation/i. Theory2008.06.07 16:49

linux file disk를 살펴보면 항상 새로운 파티션의 root에 해당 하는 부분에 보여지는 lost+found라는 디렉토리의 정체에 대해서 궁금증을 무심결에 넘겼을지도 모른다..

이 디렉토리는 fsck또는 e2fsck등과 같은 파일 시스템 체크 및 복구 유틸리티 실행시에 연결이 끊어진 inode들이 숫자 파일형태로 존재하는곳이다.
텍스트파일경우에는 여러가지 명령어를 통해 내용을 확인후 복구할수도 있다.
중요하다면 중요한 디렉토리이니 가급적 삭제 하지 않는것이 옳바르다..

가끔 보면 삭제해도 될까요? 라고 하는데....
정말 disk공간이 부족하다면 뭐 별수 없을것 같지만...그래도 삭제 하지 않는것이
정답이지 않을까?

신고
Posted by 신머루군
03. Network2008.06.03 23:37
굳이 admin이라고 말해야할지....말아야 할지...뭐...일반 유저가 사용할일은 아마도 없을것입니다..>_<;;;

1.ifconfig
IP정보 삭제 - ifconfig eth0 down     (IP정보를 삭제도 하지면 down도 합니다)
IP정보 변경 - ifconfig eth0 192.168.1.2 eth0 netmask 255.255.255.0 broadcast 192.168.0.255 up

ifconfig에서 알아낼수 있는정보
HWaddr (MAC ID) / IP/ broadcast / netmask/MTU/송수신패킷량 / collision (충돌있으면 안좋습니다) / Interrupt (system에서 사용되어지는 이터럽트 번호)

2. 파일로 수정시
hostname, gateway정보           /etc/sysconfig/network
ethx의 장치정보                      /etc/sysconfig/networking/ifcfg-eth0
network의 정보는 간단하여 생략을 하도록 하고

ifcfg-eth0에 관해서 말씀 드리겠습니다.
이전에 말씀 드렸다 싶이 모든 장비에 관련하여 해당 파일이 모든 정보를 담고 있습니다.
파일안을 보면

device=eth0
bootproto=static    (고정IP입니다)
broadcast=192.168.0.255      (브로드캐스팅정보)
ipaddr=192.168.0.1               (ip정보)
netmask=255.255.255.0         (서브넷 마스크정보)
network=192.168.0.0             (.......)
onboot=yes                         (매직 패킷을 통하여 booting)
type=ethernet                      (......)

위와 같은 형식으로 되어져 있습니다.
버추얼 IP라는것이 존재하는데요, 한 eth카드에 여러개의 IP를 가질수 있음을 의미합니다.
ifcfg-eth0라는 파일을 복사를 하여 ifcfg-eth0:0 라고 하고 복사한 파일을 수정하여 주고난후
/etc/rc.d/init.d/network stop|start|restart
를 해주시면 적용이 되어집니다...멀티서버, DNS구성등에 여러가지를 사용할수 있다는 강점이 있습니다.

이렇게 적용을 하시고난후 ifconfig로 확인을 하여보면 같은 eth0에 여러개의 IP가 잡혀 있음을 알수가 있습니다.

ps> 콘솔 GUI로는 netconfig를 사용할수가 있습니다.

ping...
관리자분들은 정말로 이 ping이라는 명령어를 자주 사용하고 있습니다.
하지만 이 ping을 날렸을때 응답을 해주는 ICMP를 disable시켜두면 ping으로 응답을 하지 않는것은 당연하지요...간단하게 몇가지 옵션만 정리하겠습니다.

-c NUM (NUM횟수만큼만 ping테스트를 합니다)
-s NUM (NUM만큼 페킷 사이즈를 전송합니다 단위는 byte입니다)
-i NUM (NUM 만큼의 시간후에 ping테스트를 합니다)
-q (지속적으로 하지 않고, 종합 결과만 보여줍니다)

traceroute
특정 구간에 대해서 어떠한 IP를 걸치고 몇 HOP를 걸치는지 확인을 합니다.
신고

'03. Network' 카테고리의 다른 글

Subnet mask  (0) 2009.09.16
tcpdump 사용하여 packet dump확인하기  (0) 2008.06.04
linux network ethnet 변경 (이더넷 설정변경 ethtool , mii-tool, modprobe )  (0) 2008.06.03
netstat 활용  (0) 2008.06.03
Linux Networking Admin  (0) 2008.06.03
linux Network setting  (0) 2008.06.03
Posted by 신머루군
TAG Linux, Network
hdparm
디시크의 속도와 성능을 테스트하는 툴로써 사용되어지고 뿐만 아니라 일부의 튜닝도 가능합니다.
hdparm -t /dev/sda
와 같은 형식으로 사용을 할수있고, "-t"옵션은 버퍼링이 전혀 되지 않은 데이터를 실제로 얼마나 빠르게 읽을수 있는지 확인하는것입니다.
옵션
-t : 버퍼링 되어지지 않은 데이터를 읽을때
-T : 버퍼링 되어진 테이터를 읽을때 (cache)


fdisk
일단 리눅스 시스템에서 장치명을 어느정도는 익히 알아두셔야 할것입니다.
예를들면 IDE방식의 HDD는 /dev/hda와 같은 형식으로 생기고 파티션작업을 해서 나눈다면 /dev/hda1이라고 생성이 되어질것입니다. 물론 물리적인 디스크는 hda가 맞습니다.
SCSI장비와 같은경우는 sda의 형식을 따르고, 파티션을 나눈다면 sda1와 같은형식으로 나타납니다.

a 부팅파티션으로 설정
b BSD로 디스크 라벨 설정
c DOS호환가능한 플래그
d 파티션 삭제
l 설정가능한 파티션 타입
m 도움말 (help와 동일)
n 새로운 파티션 생성
o 새로운 dos파티션 테이블 생성
p 설정된 파티션 정보를 알려줌
q 설정된 정보를 저장하지 않고 끝냄
s SUN 디스크 라벬ㅇ성
t 파티션 타입을 변경할수 있음
u unit 정보를 열람하거나 변경
v 지정된 파티션 검사
w 저장후 빠져나감
x 전문가모드 (이 모드는 HDD의 실린더, 헤드, 트랙당 섹터수 변경까지 가능합니다 ->잘못 하시면 disk badblock생성을 유발합니다)

기본적인 설정은 CMOS의 low disk관련부분과 밀접하게 보실수 있을것입니다.(물론 시스템마다 틀립니다.^^)

fdisk /dev/sdb
Unable to open /dev/sdb
이런경우는 disk가 존재하지 않는다는것입니다.

1>fdisk /dev/hdd
      cmd>n
      cmd action
             e extended
             p primart partition (1-4)
       Partition number (1-4) :             (hdd1)과 같이 입력이 되어질것이라면 1번을 입력합니다
       First Cylinder (1-xxxxx default 1) : 1
       Last cylinder or +SIZEM or +SIZEK (1-xxxxx, default xxxxx):+1000M (1기가 할당)
      cmd>p          (파티션 정보 확인)
위와 같은 형식으로 작업을 진행하시면 됩니다.

특정파티션 삭제하는 방법
1>fdisk /dev/hda
      cmd>p
      cmd>d
        Partition Number (1-4) : 2      (hda2 파티션 삭제)
      cmd>w

이것으로 작업이 끝났습니다

그후에는 mke2fs로 filesystem 을 포맷을 진행하시면 됩니다.
mke2fs는 다음회로~
신고

'01. operation > ii. base command' 카테고리의 다른 글

ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
linux hdparm 사용과 fdisk 명령어  (0) 2008.05.27
linux system disk 추가 하기  (0) 2008.05.27
Posted by 신머루군

티스토리 툴바