Nginx怎么配置TCP负载均衡

发布时间 - 2023-05-19 00:00:00    点击率:

假设kubernetes集群已经配置好,我们将基于centos为nginx创建一个虚拟机。

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

  • Nginx (CenOS8 Minimal) – 192.168.1.50

  • Kube Master – 192.168.1.40

  • Kube Worker 1 – 192.168.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设置为permissive模式,并重启系统使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

注释掉“server”部分(从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的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的deployment,将deployment的端口暴露为80端口,并为nginx 的deployment定义入口资源。我已经使用以下命令来部署这些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

运行以下命令以获取deployments,svc和ingress详细信息:  

更新本地主机的hosts文件,以便nginx-lb.example.com指向nginx服务器的IP地址(192.168.1.50)

[root@localhost ~]# echo "192.168.1.50  nginx-lb.example.com" >> /etc/hosts

尝试通过浏览器访问nginx-lb.example.com


# nginx  # 配置文件  # 负载均衡  # 均衡器  # 将在  # 软件包  # 可以看到  # 将被  # 来做  # 重启  # 设置为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Session怎么存储_Laravel Session驱动配置详解  如何正确下载安装西数主机建站助手?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  音响网站制作视频教程,隆霸音响官方网站?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  LinuxShell函数封装方法_脚本复用设计思路【教程】  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  如何在阿里云香港服务器快速搭建网站?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  iOS UIView常见属性方法小结  无锡营销型网站制作公司,无锡网选车牌流程?  JavaScript模板引擎Template.js使用详解  浅析上传头像示例及其注意事项  JS碰撞运动实现方法详解  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  JS实现鼠标移上去显示图片或微信二维码  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  如何在阿里云高效完成企业建站全流程?  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel安装步骤详细教程_Laravel环境搭建指南  使用Dockerfile构建java web环境  EditPlus中的正则表达式 实战(2)  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Android自定义listview布局实现上拉加载下拉刷新功能  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Python数据仓库与ETL构建实战_Airflow调度流程详解  网站建设保证美观性,需要考虑的几点问题!  油猴 教程,油猴搜脚本为什么会网页无法显示?  网站优化排名时,需要考虑哪些问题呢?  如何在阿里云ECS服务器部署织梦CMS网站?  深圳网站制作培训,深圳哪些招聘网站比较好?  Swift中循环语句中的转移语句 break 和 continue  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  七夕网站制作视频,七夕大促活动怎么报名?  如何在万网自助建站中设置域名及备案?  详解CentOS6.5 安装 MySQL5.1.71的方法  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  清除minerd进程的简单方法  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?