개쥬지밥 방송 베껴서 아이디어를 얻음
#define l(x) printf(#x": %d
", x)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 80
int server_socket;
void sigkill_handler(int signal) {
close(server_socket);
l(signal);
exit(signal);
}
int main(int argc, char *args[]) {
if (argc < 2) {
printf("Usage: %s <server-name>
", args[0]);
return 1;
}
char *server_name = args[1];
signal(SIGKILL, (void *)sigkill_handler);
struct sockaddr_in server_address;
server_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (server_socket == -1) {
return 1;
}
int reuse_address = 1;
setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, (const void *)&reuse_address, sizeof(reuse_address));
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(PORT);
int result_bind = bind(server_socket, (struct sockaddr *)&server_address, sizeof(server_address));
if (result_bind < 0) {
return 1;
}
int result_listen = listen(server_socket, 1);
if (result_listen < 0) {
return 1;
}
printf("%s server started
", server_name);
int count = 0;
while (1) {
struct sockaddr_in client_address;
socklen_t client_address_size = sizeof(client_address);
int client_socket = accept(server_socket, (struct sockaddr *)&client_address, &client_address_size);
printf("client connected: #%d
", ++count);
char buffer[4096];
int read_size = read(client_socket, buffer, sizeof(buffer));
sprintf(buffer, "HTTP/1.1 200 OK
Host: localhost
<!doctype html><html><head><title>Test Server</title></head><body>Hello World!<br/>Welcome to %s server!</body></html>", server_name);
write(client_socket, buffer, strlen(buffer));
close(client_socket);
puts("client disconnected");
}
return 0;
}
ec2 에 haproxy 설치해서
listen stats
bind :9000
stats enable
stats uri /
frontend http
bind :80
default_backend test
backend test
balance roundrobin
server test-1 172.31.13.154:80 check fall 3 rise 2
server test-2 172.31.15.157:80 check fall 3 rise 2
server test-3 172.31.2.147:80 check fall 3 rise 2
LB 설정 대충 해주고
웹서버코드 들어간 서버 3개 만들어서 돌린다음에 접속 테스트 해보니
소켓 서버 별 설정 안해도 haproxy 가 알아서 잘 돌려주네
테스트 끝났으니 다음 방송에 해볼거는 웹소켓서버 띄우고
웹서버 띄우고 대충 웹 채팅 만들어서
LB 뒤에 붙이고
방송중에 링크 뿌려서 채팅 가능하게 하고 방종 딱
색깔 왜케 병신임
sigkill이 머임