잊지 않겠습니다.

셋팅하기위해서 아래와 같이 설정하겠다. 공인 아이피대신 그냥 사설아이피를 쓰겠다.
웹서비스를 위한 예제이다.
 
▶ 로드밸런싱 서버 IP : 192.168.1.10    eth0
▶ Real 서버 1번 IP   : 192.168.1.11    eth0 
▶ Real 서버 2번 IP   : 192.168.1.12    eth0
▶ Virtual IP : 192.168.1.5 (DNS에 셋팅할 도메인과 맵핑할 Web IP 예를들어 192.168.1.5 = 
www.empas.com  ...ㅋ )
 
★ 로드밸런싱 서버 설정
LBSERVER# yum intall ipvsadm             ==> RPM으로 ipvsadm 설치
LBSERVER# ifconfig eth0:0 192.168.1.5 netmask 255.255.255.255 up  
                                                   ==> 물리 랜카드 하나에 2개 아이피셋팅 etho 192.168.1.10, eth0:0 192.168.1.5           
LBSERVER# ipvsadm -A -t 192.168.1.5:80 -s wlc
                                                             --라운드로빈(rr)-차례대로 리얼서버로                                                    
                                                             --가중라운드로빈(wrr)-라운드로빈+가중치                               
                                                             --최소연결(lc)-리얼 서버들중 가장 적은 수의 요청을 처리하는 서버 선택.
                                                             --가중최소연결(wlc)-최소연결+가중치                                   
LBSERVER# ipvsadm -a -t 192.168.1.5:80 -r 192.168.1.11:80 -g -w 5     ==> ipvs 테이블 설정
LBSERVER# ipvsadm -a -t 192.168.1.5:80 -r 192.168.1.12:80 -g -w 10
                                                 -a 추가, -t 대상타겟, -r 리소스 주소, -g 다이렉트 라우팅, -w 가중치 설정
LBSERVER# vi /etc/sysctl.conf
----------------------------------------------------------------
net.ipv4.ip_forward = 1               ===>  0을 1로 변경후 저장
----------------------------------------------------------------
LBSERVER# sysctl -p           ====> sysctl.conf 설정 적용    
LBSERVER# ipvsadm  ==>설정확인 , ipvsadm -C 설정 모두 삭제, ipvsadm -e -t ..설정 수정 
----------------------------------------------------------------------
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  211.233.5.72:http wlc
  -> 211.233.5.71:http            Route   10      0          0         
  -> 211.233.5.70:http            Route   10      0          0   
----------------------------------------------------------------------

★ Real 1번 서버 설정 ★
Real_1# ifconfig lo:0 192.168.1.5 netmask 255.255.255.255 up
Real_1# vi /etc/sysctl.conf 
-------------------------------------------------------------
net.ipv4.ip_forward = 1            ===>  0을 1로 변경
#linux-1 part
# ARP 문제 해결을위해 arp에 대한 응답 없음으로 설정(추가부분)
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
------------------------------------------------------------------
Real_1# sysctl -p       ====> sysctl.conf 설정 적용
Real_1# vi /usr/local/apache/conf/httpd.conf 에서 virtualhost를 가상아이피(192.168.1.5)로 설정을 한다.
 
★ Real 2번 서버 설정 ★
리얼서버 1번과 같이 설정한다.
 
★ 확인하기 
그리고 나서 로드밸런싱서버, 리얼 서버1, 리얼서버2 에서 /etc/rc.d/init.d/network restart 해준다.
당연히 웹서비스 로드밸런싱이기 때문에 리얼서버 1,2 번에는 웹이 돌아가야지 테스트 확인이가능하다.
리얼1에는 index.htm 파일에 리얼1번이라는 웹피이지를 만들어주고 리얼2에는 index.htm 파일에 리얼2번이라는 웹피이지를
만들어준다. 
이제 www.empas.com 도메인으로 접속하면 한번은 리얼1번에가따가 또 한번은 리얼2번으로 갈것이다.
위에서 지정한  rr, wrr, lc, wlc 를 용도에 맞게 바꿔 가면서 스케줄링을 하면된다.
Posted by Y2K
,

 



6 블록 이상의 테이블에 적용하라.
  오라클 데이터베이스에서 1개의 블록크기는 init<SID>.ora 파일에 정의되어 있는 DB_BLOCK_SIZE 파라메터의 값에 의해 결정됩니다. 만약 이 파라메터의 값이 8K (8192 byte)라면 9152 BYTE (8k X 6 블록) 이상 되는 크기의 테이블일 때 인덱스를 사용하는 것이 좋습니다. 다시 말하면, 테이블의 크기가 작은 경우라면 인덱스를 사용하지 않는 것이 더 효과적인 방법입니다. 

이유는 "PARALLEL OPTION"에서 소개된 것 처럼 전체 테이블 스캔인 경우 빠른 검색을 위해 DB_FILE_MULTIBLOCK_READ_COUNT 파라메터가 제공되고 이 파라메터에 의해 한 번에 읽을 수 있는 데이터 블록의 크기가 결정되기 때문에 테이블의 크기가 작은 경우에는 테이블 전체 스캔이 더 유리할 수 있습니다.

다른 예를 한가지 들어 보겠습니다. 만약, 2페이지 밖에 되지 않는 한 권의 책이 있다고 가정해 보겠습니다. 인덱스라는 타이틀이 설명되어 있는 페이지를 찾으려고 합니다.

첫 번째 방법은 먼저 목차를 검색하여 원하는 페이지를 찾은 다음 해당 페이지로 이동하는 방법입니다. 두 번째 방법은 직접 2 페이지를 검색하여 찾는 방법입니다. 한 권의 책을 테이블이라고 생각해 봅시다. 테이블의 크기가 작은 경우에는 인덱스를 찾고 해당 페이지를 검색하는 것이 직접 페이지를 검색하는 것 보다 빠르지 않을 수도 있습니다. 즉, 테이블의 크기가 6블록 이하(크기가 작음)인 경우에는 테이블 전체스캔이 더 빠를 수 있습니다.

컬럼의 분포도가 10 ~ 15% 이내인 경우
  분포도란 WHERE 조건절을 만족하는 행수가 테이블의 전체 행수에서 차지하는 비율을 의미합니다. 다음 공식을 참조하십시오.

 
  분포도 = ( 조건을 만족하는 행수 / 전체행수 ) X 100
   
  즉, 테이블에 100개의 행이 있고 WHERE 조건절을 만족하는 행수가 10개일 때 분포도는 10%가 됩니다. 인덱스를 통해 데이터를 빠르게 검색하는 메커니즘은 10 ~ 15% 의 분포도가 좋은 컬럼에 보다 빠르게 데이터를 찾아줍니다.

분포가 범위 이내라고 하더라도 절대량이 많은 경우에는 해쉬 클러스트를 검토하라.
  데이터를 검색하는 방법 중에 인덱스를 통한 검색방법으로 좋은 성능이 기대되지 않을 때 사용되는 검색기법이 클러스트를 이용한 방법입니다. 인덱스의 구조적 문제로 인해 더 이상의 성능향상이 기대되지 못한다면 클러스트 기법을 고려해야 합니다.

분포도가 범위이상 이더라도 부분범위의 검색이 가능하다면 인덱스를 사용하라.
  테이블의 데이터 분포를 살펴보면 매우 다양합니다. 컬럼의 값들이 골고루 좋은 분포를 보이는 테이블, 컬럼의 어떤 값은 좋은 분포도를 보이지만 어떤 값은 분포도가 너무 나쁜 경우의 테이블 등 매우 다양합니다. 모든 조건이 좋은 경우에는 별 문제가 없겠지만, 좋은 조건과 나쁜 조건이 같이 저장되어 있는 경우에는 분포도는 나쁘더라도 인덱스를 사용하는 것이 유리합니다. 

이런 경우에는, 분포도가 좋은 컬럼은 인덱스를 통해 검색하게 하고, 분포도가 나쁜 컬럼은 테이블 전체 스캔방법으로 검색하게 하는 실행계획을 결정하면 됩니다.

 
SQL > CREATE INDEX i_big_emp_deptno ON big_emp (deptno)
SQL > SET AUTOTRACE ON
SQL > SELECT empno, ename FROM big_emp
WHERE deptno = 80;    분포도가 좋은 컬럼은 인텍스 스캔으로 검색
   결과
 
Execution Plan
0   SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'BIG_EMP'
2 1 INDEX (RANGE SCAN) OF 'I_BIG_EMP_DEPTNO'
 
SQL > SELECT /*+FULL(big_emp)*/
 

empno, ename

  FROM big_emp
  WHERE deptno = 10;     분포도가 나쁜 컬럼은 전체 인덱스 스캔으로 검색
   결과
 
Execution Plan
0   SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (FULL) OF 'BIG_EMP'

인덱스 만을 검색할 수 있다면 분포도가 나쁘더라도 인덱스를 생성하라.
  인덱스를 통해 데이터를 검색하는 방법에는 2가지가 있습니다. 첫 번째 방법은 인덱스를 먼저 검색한 후 테이블로부터 조건을 만족하는 행을 검색하는 방법입니다. 다음 예제를 보십시오.

 
SQL > SELECT empno, ename FROM big_emp
  WHERE deptno = 10;
   결과
 
Execution Plan
0   SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'BIG_EMP'
2 1 INDEX (RANGE SCAN) OF 'I_BIG_EMP_DEPTNO'
Select절에 열거된 컬럼들을 index에 존재하지 않기 때문에 인덱스 검색후 테이블로부터 해당 컬럼을 검색해야 함니다.
 
이번 예제도 인덱스를 통해 검색하는 방법입니다. 하지만 조금전에 실행된 SQL문과 차이점은 개발자가 실행한 SQL문의 SELECT절에 정의된 컬럼이 검색하려는 인덱스에 존재하기 때문에 인덱스만 검색하면 조건을 만족하는 행을 모두 찾게 되는 경우입니다. 
이러한 검색 방법을 빠른 인덱스 스캔(Fast Index Scan) 이라고 합니다. 

 
SQL > SELECT empno, ename FROM big_emp
  WHERE deptno = 10;
   결과
 
Execution Plan
0   SELECT STATEMENT Optimizer=CHOOSE
1 0 INDEX (RANGE SCAN) OF 'I_BIG_EMP_DEPTNO'
 
SQL > DROP INDEX i_big_emp_depton;

https://www.dbguide.net/dbqa/oracle_tune/common/detail1-2.html 에서 무단으로 긁어오기..
언제나 느끼는 것이지만.. 아는 것이 없다. 난. -_-
Posted by Y2K
,
Using Powershell, You cannot use get-credential without some type of user-prompt. 

But! 
I found the method without user-prompt window!!

Here is my code
function Get-PSCredential
{
    param($userName, $password)    
    $secured_password = ConvertTo-SecureString $password -AsPlainText -Force
    New-object Management.Automation.PSCredential($userName, $secured_password)    
}

$cred = Get-PSCredential -userName "Administrator" -password "abcdefghijk"


Posted by Y2K
,