国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Docker分布式 部署 gateway-worker gateway 的 lanIp 參數(shù)問題

wuheng

問題描述

單獨一個 docker 部署了 register

之后其余 三臺機器 部署了 業(yè)務代碼
每臺機器部署的 BusinessWorker 和 Gateway
這個時候 gateway 的 lanIp 為主機 網(wǎng)卡 IP的 時候 端口通信錯誤。
然后 lanIp 改成 127.0.0.1 就沒問題,不知道怎么回事
docker 端口 映射 從 3900 到 3910
gateway 的 startPort 為 3900
每個機器部署 一個 gateway
運行后報錯 3900 端口通信失敗

為此你搜索到了哪些方案及不適用的原因

我想問的是 , 雖然是分布式部署,但是 每臺機器都部署 了 gateway,
是不是 gateway lanIp 寫成 127.0.0.1 也沒問題,
我使用 Gateway::getAllClientCount() 這樣的方法 取所有在線 數(shù)量是不是 也是準確的

727 2 0
2個回答

wuheng

事實證明不可以, 部署多臺 gateway getAllClientCount 取的是一臺 gateway 的在線人數(shù)。

  • wuheng 2024-09-04

    通過翻閱源代碼 我們找到這樣一段備注

    /**
     * 如果宿主機為192.168.1.2 , gatewayworker in  docker container (172.25.0.2)
     * 此時 lanIp=192.68.1.2 GatewayClientSDK 能連上,但是$this->_innerTcpWorker stream_socket_server(): Unable to connect to tcp://192.168.1.2:2901 (Address not available) in
     * 此時 lanIp=172.25.0.2 GatewayClientSDK stream_socket_server(): Unable to connect to tcp://172.25.0.2:2901 (Address not available) , $this->_innerTcpWorker 正常監(jiān)聽
     *
     * solution:
     * $gateway->lanIp=192.168.1.2 ;
     * $gateway->innerTcpWorkerListen=172.25.0.2; // || 0.0.0.0
     *
     * GatewayClientSDK connect  192.168.1.2:lanPort
     * $this->_innerTcpWorker listen  $gateway->innerTcpWorkerListen:lanPort
     *
     */

    所以我的配置檔代碼改成了這樣的

    $gateway->lanIp = getenv("LOCATION_IP");
    $gateway->innerTcpWorkerListen = "0.0.0.0";

    最終解決了 docker 容器內(nèi)和work 通信的問題,
    但是 就很疑惑 為何 分布式部署 lanIp 要寫本地IP,
    docker 容器環(huán)境 寫成 127.0.0.1 然后端口映射也是可以運行的。

  • wuheng 2024-09-04

    使用 innerTcpWorkerListen 參數(shù) 為 0.0.0.0 可以正確使用,并 使用各種網(wǎng)關(guān)函數(shù) 都正常!
    Gateway::getAllClientCount() 可以取到所有網(wǎng)關(guān) 用戶數(shù)量

胡桃

目測 docker 網(wǎng)卡是 container 模式

  • wuheng 2024-09-04

    lanIp 為內(nèi)網(wǎng)IP 主要是為了解決 監(jiān)聽問題, 單機部署 設置為 127.0.0.1 沒問題,非容器 用內(nèi)網(wǎng)IP 也沒問題

    在容器下就不行了,在容器呢 監(jiān)聽 192.168.2.1: 3900
    在容器外 開放 3900 端口,通信是不行的,因為容器內(nèi)監(jiān)聽的是內(nèi)網(wǎng), 所以必須改成 0.0.0.0 才行。
    但是 因為對底層了解的不夠透徹,網(wǎng)關(guān)和worker 通信 會用到 IP地址,所以不敢貿(mào)然改動

年代過于久遠,無法發(fā)表回答
??