<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 + Keepalived 高可用之主從配置 二

          共 6307字,需瀏覽 13分鐘

           ·

          2021-03-31 20:12

          0x01:防火墻問題解決

          上篇 [ Nginx + Keepalived 高可用之主從配置 ],在執(zhí)行以下命令時(shí)

          firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

          會(huì)出現(xiàn)以下錯(cuò)誤

          按照博客

          https://blog.csdn.net/a1010256340/article/details/86612521

          安裝 gi 模塊,執(zhí)行執(zhí)行如下 yum 命令

          yum -y install firewall-config

          執(zhí)行完畢后,再次執(zhí)行命令

          firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

          又出現(xiàn)以下錯(cuò)誤

          通過 systemctl status firewalld 查看firewalld 狀態(tài),發(fā)現(xiàn)當(dāng)前是 dead 狀態(tài),即防火墻未開啟。


          通過 systemctl start firewalld 開啟防火墻,沒有任何提示即開啟成功;再次通過 systemctl status firewalld 查看 firewalld 狀態(tài),顯示 running 即已開啟了。

          如果要關(guān)閉防火墻設(shè)置,可能通過 systemctl stop firewalld 指令來關(guān)閉該功能。再次執(zhí)行執(zhí)行命令

          firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

          提示 success,表示設(shè)置成功。

          重新加載防火墻配置

          firewall-cmd --reload

          以上這個(gè)問題,根據(jù)不同情況解決方案不一樣。這是我在 CentOS 7.x 遇到的問題。


          0x02:VIP 漂移問題解決

          使用上篇 [ Nginx + Keepalived 高可用之主從配置 ] 的配置文件會(huì)出現(xiàn)keepalived 主備機(jī)器同時(shí)綁定 vip 的問題。

          從主備機(jī)配置上來看,并沒有會(huì)出現(xiàn)腦裂情況的配置,理論上主備機(jī)的配置只要注意:router_id 局域網(wǎng)內(nèi)唯一,主備機(jī)不同;virtual_router_id 主備機(jī)配置一致;priority主 機(jī)高于備份機(jī);virtual_ipaddress 主備機(jī)一致,差不多就可以了。但是啟動(dòng) keepalived 之后,主機(jī)與備份機(jī)的vip綁定情況如下圖。

          • 主機(jī) keepalived 

          • 備份機(jī) keepalived

          在 192.168.56.9 主機(jī)使用 tcpdump 抓包,監(jiān)控一下enp0s3,也就是綁定了vip 的網(wǎng)卡的報(bào)文

          192.168.56.9(主)和192.168.56.10(備)兩臺(tái)機(jī)器在輪詢往224.0.0.18(vrrp的組播地址)發(fā)送報(bào)文。理論上來說,主機(jī)處于活躍狀態(tài)的時(shí)候,備份機(jī)收到報(bào)文之后是不會(huì)發(fā)送組播消息的,很明顯就是備份機(jī)沒收到主機(jī)的組播報(bào)文。

          192.168.56.10 備份機(jī)使用 tcpdump 抓包,監(jiān)控一下enp0s4,也就是綁定了vip 的網(wǎng)卡的報(bào)文,同樣出現(xiàn)跟主機(jī)一樣的情況。

          說明主備機(jī)與組播 ip 之間的通信存在問題,查看 CentOS 對(duì)應(yīng)的防火墻firewall 開啟組播通信的方法,執(zhí)行如下命令:

          • 192.168.56.9 主機(jī)

          firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

          #刷新防火墻
          firewall-cmd --reload;

          其中INPUT 0 --in-interface enp03 這段的 enp03 是綁定了 vip 的網(wǎng)卡,需要替換成實(shí)際網(wǎng)卡。

          • 192.168.56.10 備份機(jī)

          firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s4 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

          #刷新防火墻
          firewall-cmd --reload;

          配置文件要做以下調(diào)整

          • 192.168.56.9 主機(jī)

          ! Configuration File for keepalived

          global_defs {
             notification_email {
               # acassen@firewall.loc
               # failover@firewall.loc
               #sysadmin@firewall.loc
             }
             #notification_email_from Alexandre.Cassen@firewall.loc
             #smtp_server 192.168.200.1
             #smtp_connect_timeout 30
             router_id LVS_128
             vrrp_skip_check_adv_addr
             #vrrp_strict
             vrrp_garp_interval 0
             vrrp_gna_interval 0
          }
          #健康檢測(cè)腳本,必須聲明在vrrp_instance節(jié)點(diǎn)前
          vrrp_script chk_nginx {
                  script "/etc/keepalived/nginx_check.sh" ## 檢測(cè) nginx 狀態(tài)的腳本路徑
                  interval 3 ## 檢測(cè)時(shí)間間隔
                  weight -20 ## 如果條件成立,權(quán)重-20
          }
          #vrrp實(shí)例設(shè)置
          vrrp_instance VI_1 {
              state MASTER  #MASTER為主機(jī)
              interface enp0s3  #虛擬ip綁定的網(wǎng)卡
              virtual_router_id 99 #虛擬路由ID標(biāo)識(shí),一組的keepalived配置中主備都是設(shè)置一致
              priority 100   #優(yōu)先級(jí),主機(jī)應(yīng)高于備份機(jī)即可
              advert_int 1 
              authentication {
                  auth_type PASS #認(rèn)證方式
                  auth_pass 123456  #認(rèn)證密碼
              }
              virtual_ipaddress {
                  192.168.56.120 #虛擬ip
              }
              track_script {
                  chk_nginx ## 執(zhí)行 Nginx 監(jiān)控的服務(wù)
              }
          }
          • 192.168.56.10 備份機(jī)

          ! Configuration File for keepalived

          global_defs {
             notification_email {
               #acassen@firewall.loc
               #failover@firewall.loc
               #sysadmin@firewall.loc
             }
             #notification_email_from Alexandre.Cassen@firewall.loc
             #smtp_server 192.168.200.1
             #smtp_connect_timeout 30
             router_id LVS_129
             vrrp_skip_check_adv_addr
             #vrrp_strict
             vrrp_garp_interval 0
             vrrp_gna_interval 0
          }

          vrrp_script chk_nginx {
                  script "/etc/keepalived/nginx_check.sh" ## 檢測(cè) nginx 狀態(tài)的腳本路徑
                  interval 3 ## 檢測(cè)時(shí)間間隔
                  weight -20 ## 如果條件成立,權(quán)重-20
          }

          vrrp_instance VI_1 {
              state BACKUP
              interface enp0s4
              virtual_router_id 99
              priority 90
              advert_int 1
              authentication {
                  auth_type PASS
                  auth_pass 123456
              }
              virtual_ipaddress {
                  192.168.56.120
              }
              track_script {
                  chk_nginx ## 執(zhí)行 Nginx 監(jiān)控的服務(wù)
               }
          }


          0x03:驗(yàn)證

          首先在主備服務(wù)器分別執(zhí)行 systemctl start keepalived.service開啟 keepalived

          通過 ip addr 命令分別查看主備兩臺(tái)機(jī)器,只有主服務(wù)器可以看到 vip

          在主服務(wù)器執(zhí)行 systemctl stop keepalived.service 停止 keepalived;

          通過 ip addr 命令查看備服務(wù)的 ip, 會(huì)發(fā)現(xiàn)可以看到 vip;

          在主服務(wù)器執(zhí)行systemctl start keepalived.service,再次啟動(dòng) keepalived;通過 ip addr 命令分別查看主備兩臺(tái)機(jī)器,只有主服務(wù)器可以看到 vip;

          喜歡,在看


          瀏覽 51
          點(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>
                  一区二区三区有码 | 婷婷五月丁香花 | 裸体美女黄网 | 欧美亚洲成人视频 | 操丝袜美女的骚逼 |