>> Read Reply from No. 0 article  
RE: RE: LVS에서 Realserver check후 업데이트...

등록 2002-02-15 14:05:00     조회 5
이름 조경희    

		소스만 참고하시라고 올렸어요...--)/ 허접이쥐만..
다즐링님 rc.local등에 기술하라는 말씀이시조 ? 아닌가...
cron을 써도 무방 하지 않을까용 ..? (while빼버리고...) emoticon)/
저 같은경우 아는게 없으니..이렇게라도 해서...유지해볼려고 했구요..
좋은 방안이 있으면 알고 싶어 올린 글이지요.....
  : 팁입니까 질문입니까?
: 이걸 정확히 해주시고요.
:
: 보통 inittab 에 넣어버립니다.
:
: 그럼 저 체크 프로그램이 죽어도 다시 살리죠.
:
: : LVS구축하고 나서..
: : Real서버가 죽을수도 있다는 생각에...한번 짜본 건대요...emoticon
: : 제가 아는 랑구아지가 C언어 밖에 없어나서...좀 지저분해도 이해해주시구
: : 요..
: : sh같은걸 잘했으면 스크립트로 하는건댁..sh는 잘 모르고...그래서
: : 걍 c로 했다는...emoticon
: : 이게 제대로 먹히는지도 몰라요...emoticon)/
: : 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...emoticon
: :
: :
: : 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 at netizen.ne.kr : : 조경희
: : </pre>
이름
암호


>> 관련글
  답장 RE: LVS에서 Realserver check후 업데이트...  다즐링  2002.02.15  ....
  답장 RE: RE: LVS에서 Realserver check후 업데이트...  조경희  2002.02.15  ....
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.75 초 ] 작업시간: [ 0.27 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791030191
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.