许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  LS-DYNA中如何设置SET中的NODE_LIST:为Kubernetes集群应用配置Nginx TCP/UDP负载均衡

LS-DYNA中如何设置SET中的NODE_LIST:为Kubernetes集群应用配置Nginx TCP/UDP负载均衡

阅读数 4
点赞 0
article_banner

在本文中,我们将演示如何将为Kubernetes集群中部署的应用程序配置nginx负载平衡。众所周知,NGINX是高度评价的开源Web服务器之一,但它也可以用作TCP和UDP负载平衡器。与HAProxy相比,使用nginx作为负载均衡器的主要好处之一是它还可以负载均衡基于UDP的流量。

我假设Kubernetes集群已经设置好并且已经启动并正在运行,我们将为NGINX创建基于CentOS / RHEL的VM。

以下是实验室设置的详细信息:

  • NGINX VM(最低CentOS / RHEL)-
  • Kube Master – 192.168.1.40
  • Kube Worker 1 – 192.168.1.41
  • Kube worker 2 –

让我们跳到NGINX的安装和配置,在我的情况下,我将最少的CentOS 8用于NGINX。

步骤1)为nginx软件包启用EPEL存储库

登录到您的CentOS 8系统并启用epel存储库,因为nginx软件包在CentOS / RHEL的默认存储库中不可用。

[linuxtechi@nginxlb ~]$ sudo dnf install epel-release -y

步骤2)使用dnf命令安装NGINX

运行以下dnf命令以安装nginx,

[linuxtechi@nginxlb ~]$ sudo dnf install nginx -y

通过在rpm命令下运行来验证NGINX详细信息,

#rpm -qi nginx

FkHdx3AjCaohsRlO3txiiE0V1J5z

通过在命令下运行,在防火墙中允许NGINX端口

[root@nginxlb ~]# firewall-cmd --permanent --add-service=http[root@nginxlb ~]# firewall-cmd --permanent --add-service=https[root@nginxlb ~]# firewall-cmd –reload

使用以下命令将SELinux设置为许可模式,

[root@nginxlb ~]# sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config[root@nginxlb ~]# setenforce 0[root@nginxlb ~]#

步骤3)从Kubernetes设置中提取入口控制器的NodePort详细信息

在Kubernetes中,nginx入口控制器用于处理已定义资源的传入流量。当我们部署入口控制器时,那时还将创建一个服务,该服务将主机节点端口映射到端口80和443。这些主机节点端口从每个工作节点打开。要获取此详细信息,请登录到kube主节点或控制计划并运行,

$ kubectl get all -n ingress-nginx


正如我们可以看到上面的输出,NodePort 32760每个工人节点被映射到端口80和NodePort 32375被映射到443端口。我们将在Nginx配置文件中使用这些节点端口来平衡TCP通信量。

步骤4)将NGINX配置为充当TCP负载平衡器

编辑nginx配置文件,并向其中添加以下内容,

[root@nginxlb ~]# vim /etc/nginx/

注释掉“服务器”部分的行(从38到57),并添加以下几行,

upstream backend { server 192.168.1.41:32760; server :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; }}

保存并退出文件。

按照上述变化,当任何请求进入端口80上的nginx服务器IP那么它将被路由到Kubernetes工作节点的IP(上NodePort()32760)。

让我们使用以下命令启动并启用NGINX服务:

[root@nginxlb ~]# systemctl start nginx[root@nginxlb ~]# systemctl enable nginx

测试NGINX for TCP负载均衡器

要测试nginx作为Kubernetes的TCP负载平衡器是否工作正常,请部署基于nginx的部署,通过服务公开部署,并为nginx部署定义入口资源。我已经使用以下命令和yaml文件来部署这些Kubernetes对象,

[kadmin@k8s-master ~]$ kubectl create deployment nginx-deployment --image=nginxdeployment.apps/nginx-deployment created[kadmin@k8s-master ~]$ kubectl expose deployments nginx-deployment --name=nginx-deployment --type=NodePort --port=80service/nginx-deployment exposed[kadmin@k8s-master ~]$[kadmin@k8s-master ~]$ vi nginx-ingress.yaml


[kadmin@k8s-master ~]$ kubectl create -f nginx-ingress.yamlingress.networking.k8s.io/nginx-ingress-example created[kadmin@k8s-master ~]$

运行以下命令以获取部署,svc和入口详细信息:


完美,让我们更新系统的主机文件,以便指向nginx服务器的IP地址 ()

 

让我们尝试对网址进行ping操作,以确认它指向NGINX服务器IP,

# ping Pinging  [] with 32 bytes of data:Reply from : bytes=32 time<1ms TTL=64Reply from : bytes=32 time<1ms TTL=64

现在,尝试通过网络浏览器访问URL,


很好,上面证实了NGINX作为TCP负载平衡器可以正常工作,因为它可以负载平衡K8s工作节点之间端口80上的TCP通信量。

步骤5)配置NGINX充当UDP负载均衡器

假设我们在Kubernetes内部运行了一个基于UDP的应用程序,该应用程序以UDP端口31923作为NodePort类型公开。我们将配置NGINX以平衡从端口1751到k8s工作节点的NodePort的UDP流量。

假设我们已经运行了一个名为“ l inux-udp-port ”的容器,其中有nc命令可用,并通过服务在UDP端口10001上将其作为NodePort类型公开。

[kadmin@k8s-master ~]$ kubectl expose pod linux-udp-pod --type=NodePort --port=10001 --protocol=UDPservice/linux-udp-pod exposed[kadmin@k8s-master ~]$[kadmin@k8s-master ~]$ kubectl get svc linux-udp-podNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGElinux-udp-pod NodePort 10.96.6.216 <none> 10001:31923/UDP 19m[kadmin@k8s-master ~]$

要将NGINX配置为UDP负载平衡器,请编辑其配置文件,并在文件末尾添加以下内容

[root@nginxlb ~]# vim /etc/nginx/……stream { upstream linux-udp { server 192.168.1.41:31923; server :31923; } server { listen 1751 udp; proxy_pass linux-udp; proxy_responses 1; } ……


保存并退出文件,然后使用以下命令重启nginx服务,

[root@nginxlb ~]# systemctl restart nginx

通过运行以下命令在防火墙中允许UDP端口1751

[root@nginxlb ~]# firewall-cmd --permanent --add-port=1751/udp[root@nginxlb ~]# firewall-cmd --reload

使用上面配置的NGINX测试UDP负载平衡

登录到POD并启动一个虚拟服务,该服务侦听UDP端口10001,

[kadmin@k8s-master ~]$ kubectl exec -it linux-udp-pod -- bashroot@linux-udp-pod:/# nc -l -u -p 10001

保持原样,从要测试UDP负载平衡的计算机登录,确保该计算机可以访问NGINX服务器,运行以下命令以连接到NGINX服务器IP上的udp端口(1751),然后尝试输入字符串

#nc -u 1751

[root@linux-client ~]# nc -u 1751Hello, this UDP LB testing

现在转到POD的ssh会话,在那里我们应该看到相同的消息,

root@linux-udp-pod:/# nc -l -u -p 10001Hello, this UDP LB testing

上面的完美输出确认,NGNNX可以正常使用UDP负载平衡。这就是本文的全部内容,希望您能从中找到有用的信息,并帮助您设置NGINX负载均衡器。请随时在下面的评论部分中分享您的技术反馈。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空