zoukankan      html  css  js  c++  java
  • Vagrant与skynet框架

             skynet是一个go语言的分布式服务框架,官方推荐用vagrant搭建开发环境,但官方文档并不详实,谈一下自己在配置这个框架的经验。

    现在网络服务开发,很多人都希望在win下开发,而在linux下部署,所以我需要在win下使用vagrant的一台ubuntu机器,上面运行着skynet服务,而可以在window下连接访问。大概主要是三方面的问题,第一,vagrant配置的虚拟机与主机通信,就可以使宿/主机相互通信了;第二,doozerd服务不能被发现;第三,skynet服务回应了一个不可被连接的地址。

            vagrant主机与虚拟机通信,可以使用private network这样可以给虚拟机分配一个静态ip,这样就能相互通信。而doozerd服务不能发现是,因为doozer官方文档太简单,导致误解,官方启动命令是这样的“doozerd –w “:8080””,这个8080并不是doozerd监听的一个端口,真正监听的端口是127.0.0.1:8046,这种环境下,window下的客户端,当然发现不了doozer, 可以用下面这个命令启动doozer:

                                      doozerd –l=”192.168.33.10:8046” -w=”:8080”

           以skynet/example下的client与service来说明第三个问题,win下clinet不能连接虚拟机的service。当解决前两个问题之后 ,按理说就可以进行开发了,但实践中却发现无法连接服务,报错如下:

    &{192.168.33.10:8046 127.0.0.1:8046 true}
    here
    TestServiceClient: 2013/07/27 16:23:58 trace: Created client '&{DoozerConn:0xf84
    0076770 Config:0xf84007dcc0 Log:0xf84008c4e8 servicePools:map[] instanceMonitor:
    <nil>}'
    TestServiceClient: 2013/07/27 16:23:58 trace: skynet.DoozerConnected: Connected
    to doozer at 192.168.33.10:8046
    here
    TestServiceClient: 2013/07/27 16:23:58 debug: DoozerDiscovered: Discovered new d
    oozer RMRP4S2D47JH533F at 192.168.33.10:8046
    TestServiceClient: 2013/07/27 16:23:58 debug: skynet.ServiceDiscovered: Discover
    ed service "TestService" at 127.0.0.1:9006
    TestServiceClient: 2013/07/27 16:23:59 error: client.FailedConnection: Failed to
    connect to service: 127.0.0.1:9006
    Service request timed out

    最核心的报错是“connect sto  service: 127.0.0.1:90006”,可以理解为win下客户端发起连接,而skynet也找到了服务,但是服务回应给客户端一个不能连接的地址,本地当然没有这个服务,该服务在192.168.33.10上。其实是因为一个服务回应给客户端的连接地址是写死的,service.go的服务器配置中加上这样一行

                                     config.ServiceAddr.IPAddress = “192.168.33.10”

    就可以了。

    service启动命令:

                                      ./service –doozer=”192.168.33.10:8046” –doozerboot=”192.168.33.10:8046”

    client启动命令:

                                        ./client –doozer=”192.168.33.10:8046”

    为什么要这么穷折腾,因为官方文档说,skynet服务不能运行在win下。如果不想每次启动服务都这么复杂,就配置环境变量。

  • 相关阅读:
    CTR校准
    CTR的贝叶斯平滑
    FTRL 使用tensorflow的实现
    深入理解AUC
    tensorflow wide deep 介绍
    什么是卷积神经网络?为什么它们很重要?
    深度学习中 Batch Normalization为什么效果好
    处理excel将下标转换为ABCD列
    ssh无法登录,提示Pseudo-terminal will not be allocated because stdin is not a terminal.
    sudo: no tty present and no askpass program specified
  • 原文地址:https://www.cnblogs.com/BlankEye/p/3219799.html
Copyright © 2011-2022 走看看