>> Edit article
이름
제목
패스워드
LVS구축하고 나서.. Real서버가 죽을수도 있다는 생각에...한번 짜본 건대요...^^ 제가 아는 랑구아지가 C언어 밖에 없어나서...좀 지저분해도 이해해주시구 요.. sh같은걸 잘했으면 스크립트로 하는건댁..sh는 잘 모르고...그래서 걍 c로 했다는...-_- <pre> /* gcc -o lvs lvs.c ./lvs port */ #include stdio.h #include stdlib.h #include string.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h //#define default 1 #ifdef default #define SERVER_PORT 80 //Default 값입니다. #endif #define BUF_SIZE 256 #define SERVER_IP "211.xx0.xx2.xx3"// LVS server IP #define Choice "-i" #define Scheduling "rr" //스케줄링 방식 wlc rr ... int count =4; //Real server 몇개 ? int checkping(char * [], int size, char * []); void init(char * [],int size,char * []); char *array[10]={ "211.xx7.xx7.xx5", "211.xx9.xx1.xx6", "211.xx0.xx2.xx2", "211.xx9.xx1.xx2" }; // Real server ip...^^ int main(int argc, char *argv[]) { if(strlen(argv[1]) > 0) { init(argv, count, array); } else exit(0); while(1){ checkping(array,count,argv); sleep(60); // 1분...refresh } } int checkping(char *url[], int size, char *argv[]) { char buffer[300]; char send_buf[BUF_SIZE],recv_buf[BUF_SIZE]; int refresh[size]; int SERVER_PORT; int sockfd,conn=0; int compare; struct sockaddr_in server_addr; if(strlen(argv[1]) > 1) SERVER_PORT=atoi(argv[1]); else SERVER_PORT=80; // 1. Socket 생성하기 // sockfd = socket(AF_INET, SOCK_STREAM, 0); // 2. Real Server에 연결하기 for(;size > 0;size--){ int conn=0; sockfd = socket(AF_INET, SOCK_STREAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr(url[size-1]); server_addr.sin_port = htons(SERVER_PORT); // Real server port조사.. if(connect(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) == -1){ conn=-1; refresh[size-1]=0; } else{ refresh[size-1]=size; } if(conn == 0){ sprintf(buffer,"ipvsadm -a -t %s:%d -r %s %s",SERVER_IP,SERVER_PORT,url[size-1],Choice); system(buffer); } if(conn == -1){ sprintf(buffer,"ipvsadm -d -t %s:%d -r %s ",SERVER_IP,SERVER_PORT,url[size-1]); system(buffer); } close(sockfd); } //for return size; } void init(char *argv[], int size, char *url[]) { char buffer[300]; system("ipvsadm"); sprintf(buffer,"ipvsadm -D -t %s:%s",SERVER_IP,argv[1]); system(buffer); sprintf(buffer,"ipvsadm -A -t %s:%s -s %s",SERVER_IP,argv[1],Scheduling); system(buffer); for(;size > 0;size--){ sprintf(buffer,"ipvsadm -a -t %s:%s -r %s %s",SERVER_IP,argv[1],url[size-1],Choice); system(buffer); } } sysop@netizen.ne.kr 조경희 </pre>
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved