Nginx是更好的开源Web服务器之一,但它也可以用作TCP和UDP负载均衡器。使用Nginx作为HAProxy的负载均衡器的主要好处之一是它还可以对基于UDP的流量进行负载均衡。在本文中,我们将演示如何将NGINX配置为部署在Kubernetes集群中的应用程序的负载均衡器。假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50KubeMaster-192.168.1.40KubeWorker1-192.168.1.41KubeWorker2-192.168.1.42Step1)安装epel仓库,因为nginx包在CentOS系统中没有默认仓库,所以需要安装epel仓库:[root@nginxlb~]#dnfinstallepel-release-yStep2)安装Nginx运行如下命令安装nginx:[root@nginxlb~]#dnfinstallnginx-yuserpm命令验证Nginx包的详细信息:[root@nginxlb~]#rpm-qinginx使用Nginx配置TCP负载均衡使用Nginx配置TCP负载均衡配置防火墙允许访问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设置为permissive模式,并重启系统使selinuxshutdown生效:[root@nginxlb~]#sed-is/^SELINUX=.*$/SELINUX=permissive//etc/selinux/config[root@nginxlb~]#reboot步骤3)从Kubernetes[kadmin@k8s-master~]$kubectlgetall-ningress-获取应用程序的NodePort详细信息nginx使用Nginx配置TCP负载均衡使用Nginx配置TCP负载均衡从上面的输出可以看出,每个worker节点的NodePort32760映射到80端口,NodePort32375映射到443端口。我们将在中使用这些节点端口用于负载均衡的Nginx配置文件。第四步)编辑负载均衡的Nginx配置文件,添加如下内容:[root@nginxlb~]#vim/etc/nginx/nginx.conf注释掉“server”部分(第38~57行):使用Nginx配置TCP负载均衡使用Nginx配置TCP负载均衡并添加以下行:upstreambackend{server192.168.1.41:32760;服务器192.168.1.42:32760;}服务器{听80;位置/{proxy_read_timeout1800;proxy_connect_timeout1800;proxy_send_timeout180proxy_set_header接受编码“”;proxy_set_headerX-Forwarded-By$server_addr:$server_port;proxy_set_headerX-Forwarded-For$remote_addr;proxy_set_headerX-Forwarded-Proto$scheme;proxy_set_header主机$host;-IP$远程地址;proxy_passhttp://backend;}location/nginx_status{stub_status;}}使用Nginx配置TCP负载均衡使用Nginx配置TCP负载均衡保存配置文件并退出。使用Nginx配置TCP负载均衡使用Nginx配置TCP负载均衡根据以上修改,所有到nginx80端口的请求都会被路由到Kubernetesworker节点(192.168.1.41和192.168.1.42)的NodePort(32760)端口)。使用以下命令开启Nginx服务:[root@nginxlb~]#systemctlstartnginx[root@nginxlb~]#systemctlenablenginx测试Nginx的TCP负载均衡器测试nginx是否作为Kubernetes的TCP负载均衡器,请部署nginx的部署将部署的端口暴露为80端口,并定义了部署nginx的入口资源。我使用以下命令部署这些Kubernetes对象:deploymentsnginx-deployment--name=nginx-deployment--type=NodePort--port=80service/nginx-deploymentexposed运行以下命令以获取部署、svc和入口详细信息:使用Nginx配置TCP负载平衡使用Nginx配置TCP负载平衡Nginx更新本地主机的hosts文件,使nginx-lb.example.com指向nginx服务器的IP地址(192.168.1.50)[root@localhost~]#echo"192.168.1.50nginx-lb.example.com">>/etc/hosts尝试通过浏览器访问nginx-lb.example.com。使用端口80上的NginxTCP流量配置TCP负载平衡。
