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

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

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

  • 直接在虛擬主機、目標伺服器或目標端點中參照的 Keystore 已更新,但未使用參照。
  • API Proxy 部分部署在幾個 MP 上。

事前準備

如果您不熟悉路由器和訊息處理器,請參閱 Edge for Private Cloud 總覽

路由器輪流重新啟動,不會影響流量

本節說明如何重新啟動路由器,而不影響傳入的 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 Router 服務:
    apigee-service edge-router stop
        
  6. 按照下列步驟啟動 Apigee Router 服務:
    apigee-service edge-router start
        
  7. 等待 Apigee Router 服務啟動,並準備好使用下列指令處理傳入流量:
    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

在不影響流量的情況下,以輪流方式重新啟動訊息處理器

本節說明如何重新啟動 Message Processor (MP),而不影響傳入的 API 流量。

  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 中執行的指令傳回的連接埠號碼。