공부합시다!/Container

Docker : haproxy를 이용한 LoadBalancer

간서치 2022. 5. 31. 11:49
728x90

안녕하세요!

오늘은 haproxy를 이용해서 Web Server로 동작하는 Container를 LoadBalancer로 서비스 해보겠습니다.

 

모든 과정은 스크립트로 진행합니다.

 

1. 문제

 1.1. Docker 설치

  1.1.1. 모든 작업을 스크립트로 처리합니다.
  1.1.2. Docker 설치 및 실행

 1.2. Image Download
  1.1.2. httpd 및 nginx, centos:9, alpine 이미지 다운로드
 1.3. Bridge Network 생성  

  1.3.1. bridge network 생성
  1.3.2. 이름 : N1, Subnet 192.168.11.0/24  Gateway 192.168.11.254
  1.3.3. 이름 : N2, Sbunet 192.168.12.0/24  Gateway 192.168.12.254

 1.4. User_Data 만들기

   1.4.1. index.html 과 index1.html 만들기
    1.4.1.1. index.html 생성,    Container-WEBSERVER-1과 Ncloud Image 출력
    1.4.1.2. index1.html 생성,  Container-WEBSERVER-1과 Ncloud Image 출력

  1.5. Container 생성
   1.5.1. 네트워크 N1에 http 웹사이트 생성, 컨테이너 이름은 h1, 출력내용은 index.html
   1.5.2. 네트워크 N2에 ngixn 웹사이트 생성, 컨테이어 이름은 n1, 출력 내용은 index1.html
  1.6. haproxy 설치
   1.6.1. Host PC의 80port로 서비스
   1.6.2. 페이지 새로고침 시  컨테이너 h1과 컨테이너 n1의 내용이 교체 출력 되어야 합니다.

2.. 완벽하게 삭제하는 스크립트도 작성하세요!

 

3. 스크립트

 3.1 docker.sh

#! /bin/bash
yum install -y yum-utils
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
docker pull httpd
docker pull nginx
docker pull alpine
docker pull centos:7
docker network create --subnet 192.168.11.0/24 --gateway 192.168.11.254 N1
docker network create --subnet 192.168.12.0/24 --gateway 192.168.12.254 N2
cat > index.html << EOF
<html>
<body>
<h1>Container-WEBSERVER-1</h1>
</body>
</html>
EOF
cat > index1.html << EOF
<html>
<body>
<h1>Container-WEBSERVER-2</h1>
</body>
</html>
EOF
docker run -itd --net N1 --name h1 httpd
docker cp index.html h1:/usr/local/apache2/htdocs/index.html
docker run -itd --net N2 --name h2 httpd
docker cp index1.html h2:/usr/local/apache2/htdocs/index.html
curl 192.168.11.1
curl 192.168.12.1
yum install -y haproxy
sed -i 's/5000/80/g' /etc/haproxy/haproxy.cfg
sed -i 's/127.0.0.1:5001/192.168.11.1:80/g' /etc/haproxy/haproxy.cfg
sed -i 's/127.0.0.1:5002/192.168.12.1:80/g' /etc/haproxy/haproxy.cfg
systemctl restart haproxy
firewall-cmd --add-port=80/tcp
728x90