Kubernetes 클러스터가 구성되었다고 가정하고 CentOS 기반의 Nginx용 가상 머신을 생성하겠습니다.
실험의 세부 설정은 다음과 같습니다.
Nginx(CenOS8 Minimal) – 192.168.1.50
1단계) epel 저장소 설치
[root@nginxlb ~]# dnf install epel-release -y
[root@nginxlb ~]# dnf install nginx -y
[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 종료가 적용되도록 시스템을 다시 시작합니다.
[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 구성 파일에서 이러한 노드 포트를 사용합니다.
4단계) 로드 밸런싱을 위해 Nginx 구성
nginx 구성 파일을 편집하고 다음을 추가합니다.[root@nginxlb ~]# vim /etc/nginx/nginx.conf
다음 행을 추가합니다. :
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의 포트 80에 대한 모든 요청은 Kubernetes 작업자 노드(192.168.1.41 및 192.168.1.42)의 NodePort(32760) 포트로 라우팅됩니다.
다음 명령을 사용하여 Nginx 서비스를 활성화합니다.
[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
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 부하 분산을 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!