> 운영 및 유지보수 > 엔진스 > Nginx에서 TCP 부하 분산을 구성하는 방법

Nginx에서 TCP 부하 분산을 구성하는 방법

PHPz
풀어 주다: 2023-05-19 08:29:28
앞으로
1437명이 탐색했습니다.

Nginx에서 TCP 부하 분산을 구성하는 방법

Kubernetes 클러스터가 구성되었다고 가정하고 CentOS 기반의 Nginx용 가상 머신을 생성하겠습니다.

실험의 세부 설정은 다음과 같습니다.

  • Nginx(CenOS8 Minimal) – 192.168.1.50

  • Kube Master – 작업자 1 & ndash; 1.41

  • Kube Worker 2 – 192.168.1.42

  • 1단계) epel 저장소 설치

nginx 패키지가 CentOS 시스템 기본 저장소에 없으므로 epel 저장소를 설치해야 합니다.

[root@nginxlb ~]# dnf install epel-release -y
로그인 후 복사
2단계) Nginx 설치

다음 명령을 실행하여 nginx를 설치합니다.

[root@nginxlb ~]# dnf install nginx -y
로그인 후 복사
rpm 명령을 사용하여 Nginx 패키지 세부 정보를 확인합니다.
[root@nginxlb ~]# rpm -qi nginx
로그인 후 복사

nginx의 http 및 https 서비스에 대한 액세스를 허용하도록 방화벽을 구성합니다. :

[root@nginxlb ~]# firewall-cmd --permanent --add-service=http[root@nginxlb ~]# firewall-cmd --permanent --add-service=https[root@nginxlb ~]# firewall-cmd –reload
로그인 후 복사

다음 명령을 사용하여 SELinux를 허용 모드로 설정하고 selinux 종료가 적용되도록 시스템을 다시 시작합니다. Nginx에서 TCP 부하 분산을 구성하는 방법

[root@nginxlb ~]# sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config[root@nginxlb ~]# reboot
로그인 후 복사

3단계) Kubernetes에서 애플리케이션의 NodePort 세부 정보를 가져옵니다.

[kadmin@k8s-master ~]$  kubectl get all -n ingress-nginx
로그인 후 복사

위 출력에서 ​​볼 수 있듯이 각 작업자 노드의 NodePort 32760은 포트 80에 매핑되고 NodePort 32375는 포트 443에 매핑됩니다. 로드 밸런싱을 위해 Nginx 구성 파일에서 이러한 노드 포트를 사용합니다.

Nginx에서 TCP 부하 분산을 구성하는 방법4단계) 로드 밸런싱을 위해 Nginx 구성

nginx 구성 파일을 편집하고 다음을 추가합니다.

[root@nginxlb ~]# vim /etc/nginx/nginx.conf
로그인 후 복사
"서버" 부분(38~57행)을 주석 처리합니다.

다음 행을 추가합니다. :

upstream backend {
  server 192.168.1.41:32760;
  server 192.168.1.42:32760;
}

server {
  listen 80;
  location / {
      proxy_read_timeout 1800;
      proxy_connect_timeout 1800;
      proxy_send_timeout 1800;
      send_timeout 1800;
      proxy_set_header        Accept-Encoding   "";
      proxy_set_header        X-Forwarded-By    $server_addr:$server_port;
      proxy_set_header        X-Forwarded-For   $remote_addr;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_pass http://backend;
  }

   location /nginx_status {
       stub_status;
   }
}
로그인 후 복사

Nginx에서 TCP 부하 분산을 구성하는 방법

구성 파일을 저장하고 종료합니다.

Nginx에서 TCP 부하 분산을 구성하는 방법

위 변경 사항에 따라 nginx의 포트 80에 대한 모든 요청은 Kubernetes 작업자 노드(192.168.1.41 및 192.168.1.42)의 NodePort(32760) 포트로 라우팅됩니다.

다음 명령을 사용하여 Nginx 서비스를 활성화합니다. Nginx에서 TCP 부하 분산을 구성하는 방법

[root@nginxlb ~]# systemctl start nginx[root@nginxlb ~]# systemctl enable nginx
로그인 후 복사

Nginx의 TCP 로드 밸런서를 테스트합니다.

nginx가 Kubernetes용 TCP 로드 밸런서로 제대로 작동하는지 테스트하려면 nginx 기반 배포를 배포하고 배포 포트를 80에 노출합니다. nginx 배포를 위한 항목 리소스를 포팅하고 정의합니다. 다음 명령을 사용하여 이러한 Kubernetes 개체를 배포했습니다.

[kadmin@k8s-master ~]$ kubectl create deployment nginx-deployment --image=nginx
deployment.apps/nginx-deployment created
[kadmin@k8s-master ~]$ kubectl expose deployments nginx-deployment  --name=nginx-deployment --type=NodePort --port=80
service/nginx-deployment exposed
로그인 후 복사
다음 명령을 실행하여 배포, svc 및 수신 세부 정보를 가져옵니다.

nginx-lb.example.com이 IP를 가리키도록 localhost의 호스트 파일을 업데이트합니다. nginx 서버 주소(192.168.1.50)

[root@localhost ~]# echo "192.168.1.50  nginx-lb.example.com" >> /etc/hosts
로그인 후 복사

브라우저를 통해 nginx-lb.example.com에 액세스해 보세요 Nginx에서 TCP 부하 분산을 구성하는 방법

위 내용은 Nginx에서 TCP 부하 분산을 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿