在不影響流量的情況下重新啟動路由器和訊息處理器

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

本文說明如何在不影響傳入 API 流量的情況下重新啟動路由器和訊息處理器 (MP)。在某些情況下,您可能需要重新啟動路由器和 MP。 相關範例如下:

  • 直接在虛擬主機中參照的 KeyStore 時,會在不使用參照的情況下更新目標伺服器或目標端點。
  • 當部分 MP 有部分部署 API Proxy 時。

事前準備

如果不熟悉路由器和訊息處理器,請參閱適用於私有雲的邊緣總覽

在不影響流量的情況下快速重新啟動路由器

本節說明在不影響傳入 API 流量的情況下重新啟動路由器的步驟。

  1. 登入需要重新啟動的路由器。
  2. 使用下列指令封鎖路由器上的健康狀態檢查通訊埠。這麼做可確保該路由器的健康狀態不良,且沒有任何流量轉送至這個路由器。
    sudo iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
        
  3. 請等待兩分鐘,確認所有傳輸中的流量都能順暢處理,然後再重新啟動路由器。方法是執行 sleep 指令,如下所示:
    for i in {001..120}; do sleep 1; printf "\r ${i}"; done
        
  4. 請按照下列方式停止 Apigee Monit 服務:
    apigee-service apigee-monit stop
        
  5. 請按照下列方式停止 Apigee 路由器服務:
    apigee-service edge-router stop
        
  6. 按照下列方式啟動 Apigee 路由器服務:
    apigee-service edge-router start
        
  7. 等待 Apigee 路由器服務啟動,並準備好處理傳入流量,方法是使用下列指令:
    apigee-service edge-router wait_for_ready
        
  8. 按照下列方式啟動 Apigee Monit 服務:
    apigee-service apigee-monit start
        
  9. 清除 IP 資料表,解除封鎖健康狀態檢查通訊埠 15999,並允許路由器再次處理流量,方法是執行下列指令:
    sudo iptables -F
    sudo iptables -L
        
sudo iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
for i in {001..120}; do sleep 1; printf "\r ${i}"; done
apigee-service apigee-monit stop
apigee-service edge-router stop
apigee-service edge-router start
apigee-service edge-router wait_for_ready
apigee-service apigee-monit start
sudo iptables -F
sudo iptables -L

在不影響流量的情況下滾動訊息處理器

本節說明在不影響傳入 API 流量的情況下,重新啟動訊息處理器 (MP) 的步驟。

  1. 登入需要重新啟動的訊息處理器。
  2. 使用下列指令找出訊息處理器的健康狀態檢查通訊埠:
    curl 0:8082/v1/servers/self -s | jq '.tags.property' | jq '.[] | select(.name=="http.port")'
        
  3. 封鎖訊息處理器上的健康狀態檢查通訊埠 (識別於步驟 2)。這麼做可確保訊息處理工具的健康狀態不良,也不會將流量轉送至這個訊息處理器。
    sudo iptables -A INPUT -i eth0 -p tcp --dport port # -j REJECT
        

    其中 port # 是您在步驟 2 執行指令傳回的通訊埠號碼。

  4. 請等待兩分鐘,確認系統能順暢處理所有傳輸中的流量,然後再重新啟動訊息處理器。方法是執行 sleep 指令,如下所示:
    for i in {001..120}; do sleep 1; printf "\r ${i}"; done
        
  5. 請按照下列方式停止 Apigee Monit 服務:
    apigee-service apigee-monit stop
        
  6. 請按照下列步驟停止 Apigee 訊息處理者服務:
    apigee-service edge-message-processor stop
        
  7. 發布 Apigee 訊息處理器服務,如下所示:
    apigee-service edge-message-processor start
        
  8. 等待 Apigee 訊息處理方服務啟動,並準備好處理傳入的流量,請使用下列指令:
    apigee-service edge-message-processor wait_for_ready
        
  9. 按照下列方式啟動 Apigee Monit 服務:
    apigee-service apigee-monit start
        
  10. 清除 IP 表格來解除封鎖健康狀態檢查通訊埠,並執行下列指令,允許訊息處理器再次處理流量:
    sudo iptables -F
    sudo iptables -L
        
curl 0:8082/v1/servers/self -s | jq '.tags.property' | jq '.[] | select(.name=="http.port")'

sudo iptables -A INPUT -i eth0 -p tcp --dport port # -j REJECT
for i in {001..120}; do sleep 1; printf "\r ${i}"; done
apigee-service apigee-monit stop
apigee-service edge-message-processor stop
apigee-service edge-message-processor start
apigee-service edge-message-processor wait_for_ready
apigee-service apigee-monit start
sudo iptables -F
sudo iptables -L

其中 port # 是您在步驟 2 執行指令傳回的通訊埠號碼。