在 docker 集群部署中如果 分成3個(gè)應(yīng)用 gateway register bussiness 。gateway 啟動(dòng)兩個(gè)容器不會出險(xiǎn)問題。但當(dāng) gateway 啟動(dòng)3個(gè)的時(shí)候就會報(bào)如下錯(cuò)誤?ErrorException:?stream_socket_client():?unable?to?connect?to?tcp://172.25.70.8:2900?(Connection?timed?out)?in?/data/nas/codes/wanjia-video/vendor/workerman/gateway-worker/src/Lib/Gateway.php:759
172.25.70 為第三個(gè)容器的本地 IP 。環(huán)境和配置如下。麻煩大神看一下。用的是阿里云的容器服務(wù)器
composer 配置文件如下
tv: &phprunner
restart: always
#build: .
image: wjdocker.lab/wanjia/tv
volumes:
- $PWD:/var/www
- ~/wanjia/confs:/data/nas/codes/confs
ports:
- "7080:80"
links:
- message-register:message-register
environment: &phprunner-env
APP_GIT_URL: git:run/wanjia-video.git
APP_INIT_SCRIPT: /usr/local/bin/app_init
APP_START_SCRIPT: /var/www/docker/app_start
PUBLISH_SSH_KEY: |
-----BEGIN RSA PRIVATE KEY-----
換成部署私鑰
并保持這種縮進(jìn)模式
-----END RSA PRIVATE KEY----
qdaemon:
<<: *phprunner
ports: []
environment:
<<: *phprunner-env
APP_ROLE: noweb nofpm q_default
message-register:
<<: *phprunner
links: []
ports: []
# labels:
# aliyun.routing.port_80: 'http://message_register' #QDaemon 服務(wù)不對外提供服務(wù),但是要覆蓋掉 laravel 服務(wù)中定義的字段
environment:
<<: *phprunner-env
APP_ROLE: noweb nofpm message_register
message-business:
<<: *phprunner
ports: []
# labels:
# aliyun.routing.port_80: 'http://message_business' #QDaemon 服務(wù)不對外提供服務(wù),但是要覆蓋掉 laravel 服務(wù)中定義的字段
environment:
<<: *phprunner-env
APP_ROLE: noweb nofpm message_business
message-gateway:
<<: *phprunner
ports:
- 8383:8383
# labels:
# aliyun.routing.port_80: 'http://message_gateway' #QDaemon 服務(wù)不對外提供服務(wù),但是要覆蓋掉 laravel 服務(wù)中定義的字段
environment:
<<: *phprunner-env
APP_ROLE: noweb nofpm message_gateway
config 配置文件 ----
return ;
啟動(dòng)腳本如下 ------------
if ($instance_type == 'register') {
Register::$pidFile = storage_path('app/workerman.reg.pid');
Register::$logFile = storage_path('logs/workerman.reg.log');
$register = new Register('text://0.0.0.0:1238');
Worker::runAll();
}
if ($instance_type == 'gateway') {
Gateway::$pidFile = storage_path('app/workerman.gw.pid');
Gateway::$logFile = storage_path('logs/workerman.gw.log');
$gateway = new VideoGateway("websocket://0.0.0.0:8383");
$gateway->name = 'YourAppGateway';
$gateway->count = 4;
$gateway->lanIp = gethostbyname(gethostname());
$gateway->startPort = 2900;
$gateway->registerAddress = config('FT.video.wokerman_register_ip');
$gateway->pingInterval = 45;
$gateway->pingNotResponseLimit = 1;
$gateway->pingData = "";
Worker::runAll();
}
if ($instance_type == 'business') {
BusinessWorker::$pidFile = storage_path('app/workerman.bw.pid');
BusinessWorker::$logFile = storage_path('logs/workerman.bw.log');
$worker = new BusinessWorker();
$worker->name = 'YourAppBusinessWorker';
$worker->count = 6;
$worker->registerAddress = config('FT.video.wokerman_register_ip');
$worker->eventHandler = ImEventHandler::class;
Worker::runAll();
}