1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3034字,需瀏覽 7分鐘

         ·

        2021-02-06 10:24


        Nginx是比較不錯(cuò)的開源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倉庫



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

        [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ù)制粘貼,可往左滑>


        配置防火墻,允許訪問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)端口來做負(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端口的請求,都將被路由到的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ù)制粘貼,可往左滑>

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

        要測試nginx作為Kubernetes的TCP負(fù)載均衡是否工作正常,請部署基于nginx的deployment,將deployment的端口暴露為80端口,并為nginx 的deployment定義入口資源。我已經(jīng)使用以下命令來部署這些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
        <以上代碼可復(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ù)制粘貼,可往左滑>

        嘗試通過瀏覽器訪問nginx-lb.example.com



        總? ? 結(jié)



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


        良許個(gè)人微信


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


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

        → 高手如云交流社群





        本公眾號全部博文已整理成一個(gè)目錄,請?jiān)诠娞柪锘貜?fù)「m」獲??!

        推薦閱讀:

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

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

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


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


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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            操大屁股视频 | 成人黄色视频在线观看网站 | 国产99久久久国产精品成人免费 | free日韩xxxxhd灌满 | 私密直播全婐 | 午夜五月天 | 年轻女教师高潮 | 精品国产拍在线观看 | free欧美xxxxhd777 | 日本午夜无码免费精品 |