>> Edit article
이름
제목
패스워드
팁입니까 질문입니까? 이걸 정확히 해주시고요. 보통 inittab 에 넣어버립니다. 그럼 저 체크 프로그램이 죽어도 다시 살리죠. : LVS구축하고 나서.. : Real서버가 죽을수도 있다는 생각에...한번 짜본 건대요...^^ : 제가 아는 랑구아지가 C언어 밖에 없어나서...좀 지저분해도 이해해주시구 : 요.. : sh같은걸 잘했으면 스크립트로 하는건댁..sh는 잘 모르고...그래서 : 걍 c로 했다는...-_- : 이게 제대로 먹히는지도 몰라요...-_-)/ : LVS Realserver가 다운되면 어케 유지를 해야 하는지 아시는분 조언좀... : 해주셔용... : 저도 왕초보라...--)/ 걍 참고만 하세용... : : <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