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

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

wuheng

問(wèn)題描述

單獨(dú)一個(gè) docker 部署了 register

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

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

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

659 2 0
2個(gè)回答

wuheng

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

  • wuheng 2024-09-04

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

    /**
     * 如果宿主機(jī)為192.168.1.2 , gatewayworker in  docker container (172.25.0.2)
     * 此時(shí) 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
     * 此時(shí) 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)聽(tīng)
     *
     * 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 通信的問(wèn)題,
    但是 就很疑惑 為何 分布式部署 lanIp 要寫本地IP,
    docker 容器環(huán)境 寫成 127.0.0.1 然后端口映射也是可以運(yùn)行的。

  • wuheng 2024-09-04

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

胡桃

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

  • wuheng 2024-09-04

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

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

??