리눅스(페도라) 네트워크 설정
2010. 12. 22. 11:18리눅스 네트워크 명령어
- IP할당등은 부팅시 초기화됨. 영구적으로 변경하기 위하여, 아래 파일을 수정해야 함.
인터페이스(랜카드) 설정 정보 표시 : ifconfig
eth0 인터페이스(랜카드) 설정 정보 표시 : ifconfig eth0
IP 할당 : ifconfig eth0 192.168.1.1
여러 IP 할당 : ifconfig eth0:0 192.168.1.2
두번째 IP 할당 : ifconfig eth0:1 192.168.1.3
IP/Subnet 설정 : ifconfig eth0 192.168.1.1 netmask 255.255.255.0
eth0 인터페이스 disable : ifconfig eth0 down
eth0 인터페이스 enable : ifconfig eth0 up
접속여부, 응답시간, 패킷손실율 확인 : ping [웹주소 or IP]
현재 라우팅 테이블 보기 : route
기본 Gateway 설정 : route add default gw [gateway 주소]
IP 주소와 매칭되는 하드웨어 주소 표시: arp
IP 패킷이 목적지에 도달하기 위해 거치는 (라우팅) 경로추적 Trace Route: traceroute [web 주소]
IP 패킷이 목적지에 도달하기 위해 거치는 경로추적 Trace Path: tracepath [web 주소]
DNS Test : host [web 주소]
Advanced DNS Test : dig [web 주소]
Reverse Lookup : host 8.8.8.8
Advanced Reverse Lookup : dig -x 8.8.4.4
리눅스 네트워크 수정파일 (위와 동일한 기능. 영구저장)
// 네트워크와 호스트 명 설정
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=fedora.wiz.pe.kr
// 네트워크 인터페이스 설정
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
IPADDR=[IP주소]
NETMASK=255.255.255.0
GATEWAY=[Gateway 주소]
DNS1=168.126.63.1
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
// 기본 DNS 설정
# vi /etc/resolv.conf
nameserver 168.126.63.1
// 네트워크서비스 자동 시작 해제
# chkconfig NetworkManager off
// 네트워크서비스 중지
# service NetworkManager stop
// 네트워크 자동 시작 등록
# chkconfig network on
// 네트워크 시작
# service network start
'Linux' 카테고리의 다른 글
Synergy 설정방법 (윈도우 서버 / 리눅스 클라이언트 기준) (2) | 2010.12.27 |
---|
RR 알고리즘 개선 -> N번째 N번 부하 분산
2010. 12. 20. 15:06첨부:
Makefile - module programing Makefile 예시
ip_vs_rr.c - Round Robin 코드 (Linux kernel 원본에 존재)
sequence
1) ip_vs_rr.c를 적절히 수정.
2) Make 하여, Module 생성. (ip_vs_rr.ko)
3) 2)에서 생성한 파일을 /lib/module/(해당커널 버전)/kernel/net/netfilter/ipvs 로 복사
4) ipvs 실행 및 확인
팁 :
1) Line by Line
2) insmod : module 올림
rmmod : mudule 내림
3) printk(""); 를 사용하여, 코드의 실행 부분 확인가능 - printk("") 는 dmesg 로 확인 가능
dmesg -c >> dmesg 출력 clear
/*
* Round-Robin Scheduling
*/
int i=1, n=1;
static struct ip_vs_dest *
ip_vs_rr_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
{
struct list_head *p, *q;
struct ip_vs_dest *dest;
IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
write_lock(&svc->sched_lock);
p = (struct list_head *)svc->sched_data;
if(i==n) // 이부분이 실행되면, 서버가 바뀜. 사용한 조건으로 인해, n번만큼 할당됨.
p = p->next;
q = p;
do {
/* skip list head */
if (q == &svc->destinations) {
q = q->next;
continue;
}
dest = list_entry(q, struct ip_vs_dest, n_list);
if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) &&
atomic_read(&dest->weight) > 0)
/* HIT */
goto out;
q = q->next;
} while (q != p);
write_unlock(&svc->sched_lock);
IP_VS_ERR_RL("RR: no destination available\n");
return NULL;
out:
svc->sched_data = q;
write_unlock(&svc->sched_lock);
IP_VS_DBG_BUF(6, "RR: server %s:%u "
"activeconns %d refcnt %d weight %d\n",
IP_VS_DBG_ADDR(svc->af, &dest->addr), ntohs(dest->port),
atomic_read(&dest->activeconns),
atomic_read(&dest->refcnt), atomic_read(&dest->weight));
if(i==n){
n++;i=0;
}
i++;
return dest;
}
'LVS' 카테고리의 다른 글
IPVS Configuration : DR (Direct Routing) (0) | 2010.12.29 |
---|---|
LVS 구축에 관한 이론 (NAT 부터 WLC 까지) (2) | 2010.12.23 |
커널 소켓 프로그래밍 (0) | 2010.11.20 |
모듈 프로그래밍 (1) | 2010.11.10 |
ipvsadm 소스 파일 make하기 (1) | 2010.11.09 |
커널 소켓 프로그래밍
2010. 11. 20. 21:13이번주는 CPU 점유율을 고려한 Round Robin 알고리즘 수정을 진행하였는데요, 그 중 핵심은 커널 소켓 프로그래밍이 되겠습니다. 제가 주중에 시험을 보는관계로, 여기에 내용을 정리해 두도록 하겠습니다.
2, 방법
Round Robin 알고리즘을 담고있는 ip_vs_rr.c 파일에, tcp_vs_h_dslb.c 의 일부 코드를 이식하는 작업을 진행해 나가면 됩니다.
2.1 이식되어야 할 주요 함수
가장 중요한 함수로는 sock_recvmsg()함수를 담고 있는
Thread 방식(?) 이기 때문에, thread를 시작하고 종료해주는
kill_thread()
연결된 함수들은 기본적으로 tcp_vs_h_dslb.h 내에서 참고하여 이식하는 방법이 가장 좋으며, 없을 경우 해당 함수를 품고있는 헤더파일을 찾아 include 시켜주는 방법이 좋겠습니다.
커널이 2.4에서 2.6으로 업그레이드 되면서 몇가지 struct 구조에 변화가 생겼습니다. 그것들은 에러가 났을경우 구글링을 통해 검색하셔서 조금씩 수정해주시면 되겠습니다.(argument 문제가 두곳, struct의 변화가 두군데 정도 되었던것으로 기억이 납니다;;)
이식을 끝내신후에는 ip_vs_rr.c 모듈에 시작 함수(module_init 부분 참조) launch_thread()를 첨부하여 thread를 동작하게 만들어 주시고, 종료 함수(module_exit(?) 부분 참조) 에는 kill_thread()를 첨부하여 모듈이 종료되었을 경우 thread또한 종료될수 있도록 만들어 주시기 바랍니다.
P.S. : kill_thread()내부의 kill_proc() 함수가 커널버젼이 바뀌면서 적용이 되지 않고있는데, 아직 이문제는 해결이 되지않았습니다. 때문에 모듈제거가 안되요..ㅠㅠ 해결해 주세요!
3, 결과 확인
최종적으로 만드신 ip_vs_rr 모듈을 실제로 올려보시고, host_info로 만든 어플리케이션을 동작시킨 후 실제로 커널에서 메세지를 수신하고 있는지 dmesg 확인합니다. (printk()는 example_thread() 함수 내부에 주석 처리되어있는 두 곳중 cpu_use 관련 내용을 출력하는 곳의 주석을 해제하시면 되겠습니다.)
NCLab 화이팅!
'LVS' 카테고리의 다른 글
LVS 구축에 관한 이론 (NAT 부터 WLC 까지) (2) | 2010.12.23 |
---|---|
RR 알고리즘 개선 -> N번째 N번 부하 분산 (0) | 2010.12.20 |
모듈 프로그래밍 (1) | 2010.11.10 |
ipvsadm 소스 파일 make하기 (1) | 2010.11.09 |
LVS server 구축 (2) | 2010.11.06 |