<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Nginx 配置 TCP 負(fù)載均衡

          共 3034字,需瀏覽 7分鐘

           ·

          2021-02-06 10:24


          Nginx是比較不錯(cuò)的開(kāi)源Web服務(wù)器之一,但它也可以用作TCP和UDP負(fù)載均衡器。使用Nginx作為HAProxy的負(fù)載均衡器的主要好處之一是,它還可以負(fù)載均衡基于UDP的流量。在本文中,我們將演示如何將NGINX配置為Kubernetes集群中部署的應(yīng)用程序的負(fù)載均衡。

          假設(shè)Kubernetes集群已經(jīng)配置好,我們將基于CentOS為Nginx創(chuàng)建一個(gè)虛擬機(jī)。

          以下是實(shí)驗(yàn)中設(shè)置的詳細(xì)信息:
          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倉(cāng)庫(kù)



          因?yàn)閚ginx軟件包在CentOS系統(tǒng)默認(rèn)倉(cāng)庫(kù)里面沒(méi)有,所以需要安裝epel倉(cāng)庫(kù):

          [root@nginxlb?~]#?dnf?install?epel-release?-y
          <以上代碼可復(fù)制粘貼,可往左滑>



          步驟2:安裝Nginx



          運(yùn)行以下命令安裝nginx:

          [root@nginxlb?~]#?dnf?install?nginx?-y
          <以上代碼可復(fù)制粘貼,可往左滑>

          使用rpm命令驗(yàn)證Nginx包的詳細(xì)信息:

          [root@nginxlb?~]#?rpm?-qi?nginx
          <以上代碼可復(fù)制粘貼,可往左滑>


          配置防火墻,允許訪(fǎng)問(wèn)nginx的http和https服務(wù):

          [root@nginxlb?~]#?firewall-cmd?--permanent?--add-service=http
          [root@nginxlb?~]#?firewall-cmd?--permanent?--add-service=https
          [root@nginxlb?~]#?firewall-cmd?–reload
          <以上代碼可復(fù)制粘貼,可往左滑>

          使用以下命令將SELinux設(shè)置為permissive模式,并重啟系統(tǒng)使selinux關(guān)閉生效:

          [root@nginxlb?~]#?sed?-i?s/^SELINUX=.*$/SELINUX=permissive/?/etc/selinux/config
          [root@nginxlb?~]#?reboot
          <以上代碼可復(fù)制粘貼,可往左滑>



          步驟3:從Kubernetes中獲取應(yīng)用程序的NodePort詳細(xì)信息



          [kadmin@k8s-master?~]$??kubectl?get?all?-n?ingress-nginx

          <以上代碼可復(fù)制粘貼,可往左滑>


          從上面的輸出中可以看到,每個(gè)工作節(jié)點(diǎn)的NodePort 32760映射到端口80,NodePort 32375映射到443端口。我們將在Nginx配置文件中使用這些節(jié)點(diǎn)端口來(lái)做負(fù)載均衡。



          步驟4:將Nginx配置負(fù)載均衡



          編輯nginx配置文件,并添加以下內(nèi)容:

          [root@nginxlb?~]#?vim?/etc/nginx/nginx.conf
          <以上代碼可復(fù)制粘貼,可往左滑>

          注釋掉“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;
          ????}
          }

          <以上代碼可復(fù)制粘貼,可往左滑>


          保存配置文件,并退出。


          根據(jù)上述更改,所有向nginx的80端口的請(qǐng)求,都將被路由到的Kubernetes工作節(jié)點(diǎn)(192.168.1.41和192.168.1.42)的NodePort(32760)端口上。

          使用以下命令啟用Nginx服務(wù):

          [root@nginxlb?~]#?systemctl?start?nginx
          [root@nginxlb?~]#?systemctl?enable?nginx
          <以上代碼可復(fù)制粘貼,可往左滑>

          ·測(cè)試Nginx的 TCP負(fù)載均衡器

          要測(cè)試nginx作為Kubernetes的TCP負(fù)載均衡是否工作正常,請(qǐng)部署基于nginx的deployment,將deployment的端口暴露為80端口,并為nginx 的deployment定義入口資源。我已經(jīng)使用以下命令來(lái)部署這些Kubernetes對(duì)象:

          [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
          <以上代碼可復(fù)制粘貼,可往左滑>

          運(yùn)行以下命令以獲取deployments,svc和ingress詳細(xì)信息:

          更新本地主機(jī)的hosts文件,以便nginx-lb.example.com指向nginx服務(wù)器的IP地址(192.168.1.50)

          [root@localhost?~]#?echo?"192.168.1.50??nginx-lb.example.com"?>>?/etc/hosts
          <以上代碼可復(fù)制粘貼,可往左滑>

          嘗試通過(guò)瀏覽器訪(fǎng)問(wèn)nginx-lb.example.com



          總? ? 結(jié)



          上面證實(shí)了Nginx作為T(mén)CP負(fù)載均衡器可以正常工作,因?yàn)樗梢载?fù)載平衡K8s工作節(jié)點(diǎn)之間端口80上的TCP通信量。


          良許個(gè)人微信


          添加良許個(gè)人微信即送3套程序員必讀資料


          → 精選技術(shù)資料共享

          → 高手如云交流社群





          本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲??!

          推薦閱讀:

          用自己訓(xùn)練的AI玩王者榮耀是什么體驗(yàn)?

          良許搞了一個(gè)副業(yè)社群!

          給代碼寫(xiě)注釋時(shí)有哪些講究?


          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹(shù)莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲?。?!


          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费无码毛片一区二区本码视频 | 牛牛影视av | 国产爆乳肥臀在线观看 | 人妻精品久久久久中国字幕 | 日本高清无码手机在线毛片 |