- 로드 밸런싱은 부하를 분산시키는 기술이다
- 로드 밸런서는 로드 밸런싱 기술을 제공하는 장치/서비스
- Layer 4에는 TCP/UDP 및 PORT 번호가 연관되있다
- 케이블에는 대역폭이 있다. 이 대역폭은 Data가 한 번에 얼마나 들어올 수 있는지를 의미한다
- 서버에는 처리량이 중요하다. 이 처리량을 넘어선 Data가 서버에 들어온다면, 서버는 처리하다가 Down된다
- 그림과 같이 서버가 여러개 있을때, 따로 설정을 하지 않으면 서버 분산은 작동하지 않고, 한 서버에 몰려간다. 따라서 서버를 추가할때마다 트래픽 분산을 시키도록 설정해야한다
- 또한 Domain에 대한 설정해야한다. www.test.com이 있을때 이 Domain에 대해 주소가 Ip가 여러개 있다고 DNS에서 설정해야한다. 이때 서버 하나당 Public Ip 하나이므로 여러개의 Public Ip가 필요하다
- 공인 Ip가 Load balancer ( proxy )에 접근하면, proxy는 라운드 로빈 방식으로 다수의 서버와 돌아가면서 통신한다. 이로서 공인 Ip는 서버와 통신할 필요없이 Proxy와 통신하면 된다
- L4 Load Balancer는 Port 번호를 보고 라우드 로빈 방식으로 서버와 통신한다
- L4 Load Balancer를 사용할 경우 각 서버는 똑같은 DB를 참조하며, 같은 Data( page )를 지닌다. 따라서 똑같은 Data를 가지고 있어야하므로, 효율이 안좋다
- NLB로 L4( SEGMENT )중 Port 번호를 확인하고 부하를 분산하는 방식
PROXY : 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템으로 인터넷을 통해 결과를 전달해주는 FORWARD PROXY와 웹 서비스를 제공하는 회사 내부망에 연결되어 결과를 전달하는 REVERSE PROXY가 있다
HAPROXY : 소프트웨어 로드 밸런서
- L7 Load Balancer는 Directory까지 확인하는 것이다
- L7 LB의 경우 page마다 서버 분리가 가능하며, 각 page마다 서버를 따로 배정할 수 있다. 따라서 L4 LB보다 효율적이다
- 만약 ~ page면 ~의 서버 백엔드로 가고, x page면 x의 서버 백엔드로 부하는 분산한다
- ALB로 L7(Data)으 주소를 보고 부하를 분산한다
- 비슷한 것 : K8S의 ingress란? 클러스터 외부에서 안에 있는 파드에 접근할 때 주로 L7 영역의 통신을 담당해서 처리하는 방법
로그인해서 생성된 세션은, 페이지를 껏다가 키면, 서버가 바뀌어서 생성된 세션이 사라진다. 따라서 다시 로그인을 해야한다
HAProxy 할때 고민해야할 내용으로 처음 접속한 서버와 잠시 페이지를 닫은 후 재접속 했을 때 연결되는 서버가 다른 경우에는 로그인 세션 정보를 유지 하지 않게 된다. 이를 해결하는 방법에 대해 생각해보자
- 직접 연결된 네트워크는 direct connect되어 직접 해석이 가능하다고 Table에 기록된다
- 라우터에 Packet이 들어가면 다음의 과정을 거친다
- ACL : 해당 Packet이 permit 정책에 부합하면 2번째 단계로 가며, deny 정책에 부합하면 Drop된다
- NAT : ACL을 통과하면 NAT ( 주소 변환 )을 거치며, 이때 주소 변환이 될수도 있고, 안될수도 있으며, 다음단계로 무조건 넘어간다
- Routing : Routing Table에 기반해서 Path selection을 해주고, 정해진 목적지로 향하는 경로 중 적절한 출력 Port로 Packet을 이동시키는 Packet forwarding (switching)을 해준다
- forwarding 된 packet은 출력 PORT의 큐에 들어간다
- host-only : 호스트 pc 외부와 통신이 되지 않는 고립된 네트워크 환경을 제공한다
- NAT : 내부 사설 환경의 주소들이 호스트의 주소로 변경되어 내부와 통신이 가능하게 해준다
- Bridge : 호스트가 연결된 네트워크 환경과 동일한 환경에 연결되도록 해준다
cloud2를 생성하고 설정한다
vmware에서 vmnet3의 Ip를 변경한다
라우터의 fa에 각각 168.1.118/168.118.2를 설정해주고, vmware는 118.118로 설정할 것이다
linux 네트워크 설정
linux내에서 index.html 수정. 해당 118.118로 접속시 출력할 index.html이다
enable로 설정하여 재부팅시에서 바로 httpd가 실행되게 설정하며 --now를 통해 지금 바로 실행시키게 설정했다
방화벽도 지금 즉시 비활성화 시키며, 재부팅시에도 자동으로 비활성화되게 설정
linux Ip와 Gateway를 설정한다
확인하면 현재 웹서버가 정상적으로 실행되는 것을 확인할 수 있다
- 각 사설 구간끼리 통신 가능하게 하고
- 한 조에서 Ip가 빠른 사람이 HQ를 담당해서 인터넷 통신이 가능하게 한다
- 외부에서 라우터에 http://라우터의fa0/0주소:8001하면 본사 내분의 웹서버가 보여야 한다
- 외부에서 ssh -l root -p 라우터의 fa0/0 주소로 접속이 가능하게 한다
- 인터페이스에 주소 입력 - ip add
- 내부 통신 해결 - routing
- 본사에서 정적 PAT 해결 - DEFAULT GATEWAY 설정 및 동적 PAT 하기
- LINUS로의 웹, ssh 위한 정적 PAT
명령어
- 동작 상태 확인 : do show ip int br
- 라우팅 테이블 확인 : do show ip route
- 전체 구성 정보 : do show run (conf 안에서), show run (밖에서)
- 잘못된 ip 주소 : 덮어씌우기
- 라우터 경로 취소 : no ~
nat 할때 inside 와 out side는 라우터 기준이며, 한 방향이 inside면서 outside가 될 수 없다. 따라서 Br은 인터넷이 안될 수 밖에 없다
- int fa0/0
ip add 192.168.1.101 255.255.255.0
no sh
- int fa0/1
ip add 192.168.101.2 255.255.255.0
no sh
이렇게 HQ와 BR 2곳의 Ip를 설정
이제 브릿지를 통해 통신이 가능하다
이제 HQ - BR 정적 라우팅
- ip route 192.168.102.0 255.255.255.0 192.168.1.102
- ip route 192.168.103.0 255.255.255.0 192.168.1.103
BR에서도 경로 설정을 했으면 이제 서로 통신이 가능해야한다
이제, 본사에서 인터넷으로의 통신을 위한 정적 라우팅을 해야 한다
- ip route 0.0.0.0 0.0.0.0 192.168.1.1
사설 구간에서 인터넷으로의 통신을 위한 동적 PAT 필요
- access-list 1 permit any
- ip nat inside source list 1 int fa0/0 overload
- int fa0/0
- ip nat outside
- int fa0/1
- ip nat inside
외부에서 웹서버 접근하기 위한 정적인 PAT 필요
- ip nat inside source static tcp 192.168.101.101 80 int fa0/0 8001
외부에서 ssh 연결이 20022 port로 가능하게 설정
- ip ant inside source static icp 192.168.101.101 22 int fa0/0 20022
이때, 지사간의 통신에서 정적 라우팅을 통해 경로를 설정했지만, NAT와 다른 지사로의 정적 라우팅을 한 곳에 해주면 통신이 가능하다
환경을 구성해주자
Nat 없이 사설 Ip로 Public 구간을 통해 통신을 해볼 것이다
서로 연결해준다
먼저, seoul의 port를 설정한다
Default gateway 설정
busan도 설정해준다
Isp도 설정해준다
인터넷은 공인 Ip끼리만 통신이 가능하면 되므로, 더 설정할게 없다
- GRE TUNNEL : 특정 네트워크망에서 새로운 IP 헤더를 Encapsulation 하여 패킷을 전송하는 VPN 기능을 제공한다
- 단점 : 데이터를 암호화하지 않기 때문에 보안적으로는 취약하다
- 장점 : 암호화 기법을 사용하는 VPN에 비해서 데이터 전송 처리가 빠르다
- 라우터가 터널을 사용한다고 판단한다