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

          共 6378字,需瀏覽 13分鐘

           ·

          2021-05-24 21:39

          0x01:防火墻問題解決

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

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

          會出現(xiàn)以下錯誤

          按照博客

          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)以下錯誤

          通過 systemctl status firewalld 查看firewalld 狀態(tài),發(fā)現(xiàn)當前是 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

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


          0x02:VIP 漂移問題解決

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

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

          • 主機 keepalived 

          • 備份機 keepalived

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

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

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

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

          • 192.168.56.9 主機

          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)卡,需要替換成實際網(wǎng)卡。

          • 192.168.56.10 備份機

          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 主機

          ! 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
          }
          #健康檢測腳本,必須聲明在vrrp_instance節(jié)點前
          vrrp_script chk_nginx {
                  script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態(tài)的腳本路徑
                  interval 3 ## 檢測時間間隔
                  weight -20 ## 如果條件成立,權(quán)重-20
          }
          #vrrp實例設(shè)置
          vrrp_instance VI_1 {
              state MASTER  #MASTER為主機
              interface enp0s3  #虛擬ip綁定的網(wǎng)卡
              virtual_router_id 99 #虛擬路由ID標識,一組的keepalived配置中主備都是設(shè)置一致
              priority 100   #優(yōu)先級,主機應高于備份機即可
              advert_int 1 
              authentication {
                  auth_type PASS #認證方式
                  auth_pass 123456  #認證密碼
              }
              virtual_ipaddress {
                  192.168.56.120 #虛擬ip
              }
              track_script {
                  chk_nginx ## 執(zhí)行 Nginx 監(jiān)控的服務
              }
          }
          • 192.168.56.10 備份機

          ! 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" ## 檢測 nginx 狀態(tài)的腳本路徑
                  interval 3 ## 檢測時間間隔
                  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)控的服務
               }
          }


          0x03:驗證

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

          通過 ip addr 命令分別查看主備兩臺機器,只有主服務器可以看到 vip

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

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

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


          推薦閱讀:
          你管這破玩意兒叫 Token?
          一舉拿下高可用與分布式協(xié)調(diào)系統(tǒng)設(shè)計!

          一文讀懂微內(nèi)核架構(gòu)


          關(guān)互聯(lián)網(wǎng)全棧架構(gòu)

          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  台湾成人综合 | 亚洲视频p | 先锋影音资源男人 | 国产一区视频在线播放 | 国产无码乱伦视频 |