8월, 2009의 게시물 표시

아파치 튜닝

아파치의 병렬처리와 MPM 병렬처리의 구현모델 - 프로세스를 여러 개 생성해서 병렬처리를 실현하는 멀티프로세스 모델 - 프로세스가 아니라 보다 경량의 실행단위인 쓰레드를 사용하는 멀티쓰레드 모델 - 입출력을 감시해서 이벤트가 발생하는 타이밍에 처리를 전환하는, 시그널 쓰레드로 병렬처리를 수행하는 이벤트 구동 모델 MPM(Multi Processing Module) http://httpd.apache.org/docs/2.2/ko/mod/ prefork: 미리 복수의 프로세스를 생성해서 클라이언트의 접속에 대비하는 멀티프로세스 모델 <안전지향, 후방호환성이 높은 MPM> worker: 멀티쓰레드와 멀티프로세스의 하이브리드형 <확장성이 높은 MPM> - prefork를 worker로 변경하더라도 하나의 클라이언트에 대한 응답시간이 고속화되는 것은 아니다. - prefork를 worker로 변경하더라도 메모리가 충분하다면 동시에 처리할 수 있는 접속 수는 변하지 않는다. - prefork를 worker로 변경하더라도 대량의 컨텍스트 스위치가 없다면(동시에 병렬적으로 대량의 액세스가 없다면)효과는 크지 않다. - 이용할 수 있는 메모리 용량이 그다ㅏ지 크지 않은 경우나, 메모리 소비량을 줄이고자 할 경우. 이런 경우, 프로세스보다 메모리 소비량이 적은 쓰레드의 이점이 살아난다. - 컨텍스트 스위치 횟수가 많아서 그만큼의 CPU 리소스를 줄이고자 할 경우, 즉 대량의 액세스로 인한 CPU사용률을 줄이고자 할 경우. 프로세스보다 쓰레드 쪽이 컨택스트 스위치 비용은 낮으므로 CPU소비가 줄어든다. httpd.conf 설정 아파치의 안전판 MaxClients prefork의 경우 - ServerLimit: 서버 수 , 이를테면 prefork에서는 프로세스 수의 상한 - MaxClients: 동시에 접속할 수 있는 클라이언트 수의 상한 - MaxRequestsPerChild 카피온 라이트에 의한 메모리 공유는 시간의 경과에 따라 공유율이 하락해갔다. 이를

네트워크의 다중화

L1, L2 구성요소의 다중화 장애발생 포인트 1. LAN  케이블 - 단선이나 커넥터 접속 불량 2. NIC(네트워크 카드) - 링크 업과 다운을 반복 3. 네트워크 스위치 포트 4. 네트워크 스위치 링크의 다중화와 Bonding 드라이버 Bonding 드라이버 - 물리적인 네트워크 카드를 모아서 하나의 논리적인 네트워크 카드로 다룰 수 있도록 한다. 물리NIC 고장 검출 방식 MII감시 - 물리NIC 링크 타운 되면 고장 난 것으로 간주하는 것이다. 이것은 저비용 단시간에 고장여부를 체크 할 수 있지만, 반면 NIC가 링크 업 임에도 통신할 수 없는 상황에는 대응할 수 없다. ARP감시 - ARP 요청을 지정된 머신에 대해 송신해서 응답이 오는지를 시험해서 판정한다. Bonding 드라이버 동작 모드  balance-rr  송신할 패킷마다 사용할 물리 NIC를 전환한다.(라운드로빈)  active-backup  첫 번째 물리 NIC가 사용 가능한 동안에는 그 NIC만 사용한다. 해당NIC가 고장 나면 다음 NIC를 사용한다.  balance-xor  송신처와 목적지 MAC주소를 XOR해서 사용할 물리 NIC를 결정한다.  boadcast  송신 패킷을 복사해서 모든 물리 NIC에 대한 동이한 패킷이 전송된다.  802.3ad  IEEE 802.3ad 프로토콜을 사용해서 스위치와의 사이에서 동적으로 aggregation을 작성한다.  balance-tlb  물리 NIC중에 가장 부하가 낮은 물리 NIC을 선택해서 송신한다. 수신은 특정 물리 NIC을 사용해서 수신한다.  balance-alb  송수신 모두 부하가 낮은 물리 NIC를 사용한다. 스위치의 다중화 STP(Spanning Tree Protocol) 브리지 네트워크를 위한 IEEE 802.1 표준의 하나인 링크 관리 프로토콜. 스패닝 트리 알고리듬(STA)을 사용하여 다중 경로에서 불필요한 경로 발생 시 덧붙임 경로를 제공하여 가장 효율적인 경로를 사용하도록 하게 한다. 두 네트워크 장비에서는 한 번

DNS서버 다중화

DNS서버 다중화 중요성 DNS서버의 장애는 좀처럼 방생하지 않지만, 일단 발생하면 원인이 판명되기까지 시간이 걸린다는 문제가 있다. -주소변환 라이브러리를 이용한 다중화와 성능저하의 위험성 /etc/resolv.conf에 여러 DNS서버를 지정 성능저하의 위험성   -서버팜에서의 DNS 다중화 VRRP를 이용한 부하분산 DNS서버의 부하분산   정리 DNS서버는 눈에 띄지 않는 곳에서 중요한 일을 많이 수행하고 있다. 또한, DNS서버용 소프트웨어는 안정되어 있는 것이 많아서 좀처럼 정지하지 않는다. 이 때문에 DNS서버 장애를 그다지 가정하지 않는 것일지도 모른다. 그러나 DNS서버 장애는 원인이 판명되기까지 시간과 노력이 소요되는 경우가 많으므로, 만약의 경우에 불필요한 수고를 하지 않도록 확실한 대책을 취해두는 것이 좋다.

리버스 프록시 서버

이점 - HTTP 요청의 내용에 따라 시스템이 동작 제어(L7 스위치가 하는 역할과 비슷하다.) 클라이언트의 IP주소를 보고 특정 IP주소만 서버로의 접속을 허가한다. 클라이언트의 User-Agent를 보고 임의의 User-Agent로부터의 요청을 특별한 웹 서버로 접속되도록 유도한다. /hoge/foo/bar라는 URL을 /hoge?foo=bar라는 URL로 변경해서 웹 서버로 요청한다.   - 시스템 전체의 메모리 사용효율 향상 - 웹 서버가 응답하는 데이터의 버퍼링 역할 HTTP의 Keep-Alive: 최초 요청시에 연결된 서버와의 접속을 해당 요청이 종료한 후에도 접속을 끊지 않고 유지한 채로 이어지는 요청에 해당 접속을 계속 사용함으로써, 하나의 접속으로 다수의 요청을 처리할 수 있다.   - 아파치 모듈을 이용한 처리의 제어

서버/인프라 구축 입문(2)

keepalived.conf 각 파라미터의 의미  state MASTER  keepalived 기동시 MASTER로서 기동할지 BACKUP으로 기동할지를 지정한다.  interface eth0  VRRP패킷을 송신하거나 수실할 인터페이스를 지정한다.  garp_master_delay 5  마스터 상태로 변경된 후에 gratuitous ARP를 재송신하기까지 대기시간을 초단위로 지정한다.  virtual_router_id 100  가상 라우터 ID.VRRP 인스턴스 마다 고유한 값을 지정한다 지정할 수 있는 범위는 0부터 255다.  priority 101  VRRP의 우선순위값. 마스터를 선출할 때 이 값이 큰 것이 우선한다.  advert_int 1  VRRP패킷 송신 간격. 초단위로 지정한다.  virtual_ipaddress  VIP(가상주소). 형식은 다음과 같고 여러 개 지정할 수 도 있다. <IPADDR>/<MASK>dev<STRIng>

서버/인프라 구축 입문

다중화: 장애가 발생해도 예비 운용장비로 시스템의 기능을 계속할 수 있도고 하는 것을 말한다.   다중화의 분질 1. 장애를 상정한다. 2. 장애에 대비해서 예비 운용장비를 준비한다. 3. 장애가 발생했을 때 예비 운용장비로 교체할 수 있는 운용체제를 정비한다.   Hot Standby(상시 대기 방식) <-> Cold Standby(수동 예비 방식)   장애극복 현재 운용 장비에 장개가 발생했을 때 자동적으로 예비 운용장비로 처리를 인계하는 것을 장애극복 이라고 한다.   장애 검출 ICMP 감시(L3) ICMP 감시는 ICMP의 echo 요청을 보내서 응답이 돌아오는지를 체크한다. 가장 간단하고 가벼운 헬스 체크지만, 웹서비스가 다운될 경우(아파지가 중지한 경우 등)은 감지할 수 없다. 포트 감시(L4) 포트 감시는 TCP로 접속을 시험해서 접속할 수 있는지 여부를 체크한다. 웹서비스가 다운된 것은 감지할 수 있지만, 과부하 상태로 응답할 수 없다거나 에러를 반환하는 것은 감지 할수 있다. 서비스 감시(L7) 실제로 HTTP 요청등을 보내서 정상적인 응답이 돌아오는지를 체크한다. 대부분의 이상을 감지할 수 있지만 경우에 따라서는 서버에 부하를 유발할 수도 있다.   부하분산 여러 대의 서버에 처리를 분산시켜 사이트 전체의 확장성을 향상시키는 방법   웹서버 다중화 DNS 라운드 로빈 문제점 1.서버의 수만큼 글로벌 주소가 필요 2.균등하게 분산되는 것이 아님 3.서버가 다운돼도 감지하지 못해   로드벨런서 하나의 IP주소에 대해 요청을 복수의 서버로 분산할 수 있다.(IPVS) L4스위치: 트랜스포트 계층까지의 정보를 분석, 포트번호에 따라 분산대상 서버를 지정할수 있다.(IPVS) L7스위치: 애플리케이션 계층까지의 정보를 분석, 클라이언트로 부터 요청된 URL에 따라 분산서버를 지정할수 있다.   IPVS 스케줄링    명칭  동작  rr(round-robin)  리얼서버를 처음

비대칭 암호에 대해서~~

암호키를 공유하지 않은 상태에서 어떻게 암호를 주고 받을수 있을까? 비대칭 암호..

GET POST에 대하여

GET은 무언가를 가져오는 것, POST는 무언가를 수행하는 것이다.

개발을 하기 전에..

지금 추가하려는 기술이 이 애플리케이션의 사용 편의성을 향상시키는 것인가, 아니면 그저 내 이력서에 한줄 더 써넣기 위한 것인가?   지금 추가하려는 것 때문에 기존 UI의 오랜 관습에 익숙한 사용자들이 충격을 받지 않는가?   만일 사용자들이 충격을 받는다면, 그 때문에 사용자들의 겪는 기존 관습과의 불협화음이 과연 가치 있는 것인가?     -실전 AJAX-

데이터 베이스 공부중

새로쓴 대용량 데이터베이스 솔루션을 보고 있네요..   아 졸려~~