TCP/IP代理服务aipproxy#

概述#

AIP TCP/IP代理服务针是对4层网络通讯的转发和代理,7层网络(如http)转发由NGINX支持,不在该服务代理范围内。

服务架构见下图。

../_images/proxy.png

左边的负载均衡器由第三方提供。中间层是aipproxy代理服务,每个代理具有完全一致的配置。 每个代理配置一组相同的对外开放的端口,如1000个端口:11333-12332,用于最多1000个并发作业的转发。这些端口由AIP为所需转发的作业统一分配和调度。

AIP分配的端口通过共享文件系统通知aipproxy。

安装和配置#

  1. 明确入口IP地址,和对外开放的端口范围

  2. 配置AIP

    1. cb.yaml里增加共享资源,这个资源是AIP用于为需要转发的作业调度外网端口的。

      cluster:
        resources:
        - name: proxy
          description: Number of ports configured in Proxy
          type: number
          direction: decrease
          assign: yes
          slotresource: no
          instances: "1000@[all]"
      

      上面的1000是外网开放的端口总数。修改配置后需要重启master的cbls:

      cadmin lsrestart
      

      验证:命令chinfo -s和chosts -s输出proxy配置的值,如1000。

    2. 在/opt/skyformai/etc/里增加一个配置文件proxy.yaml:

      pubip: 10.2.2.3
      ports: 11333-12332
      

      上面两行定义外网入口IP(pubip)和对外开放的端口范围(ports), 端口总数应该和cb.yaml里配置的proxy里instances的数字一致。

  3. 安装和配置aipproxy 运行aipproxy的主机必须是AIP的客户端(或集群主机),可以访问aip集群的 /opt/skyformai/etc和/opt/skyformai/work(共享aip集群的这两个目录,按照原路径格式挂过来) 。常规实践在是应用平台的NGINX的主机上部署。 AIP安装包解压后,cd aipproxy,然后运行./aipproxy_install

    安装后检查:systemctl status aipproxy 服务日志:/var/log/aipproxy目录下

作业提交#

需要使用转发的作业需要增加参数proxy。例子:

sshdjob:

csub –proxy sshdjob

cread的结果会自动使用外网入口IP和对外开放的端口。输出分两段,用分号隔开:

ssh -i key -p 11333 u001@10.2.2.3;ssh -i key -p 16331 u001@192.168.10.10

第一段是外网访问命令行,第二段是内网访问命令行。

vncsub:

vncsub –proxy xterm

cread的结果里vncip指向对外开放的端口,如10.2.2.3,vncport指向对外开放的端口,如11333, 本机IP地址和端口放在localip和localport里,例子:

/aj/192.168.10.10/16000/crv.html?path=/aj/192.168.10.10/16000?token=token5240&autoconnect=true&password=bDLrbPUQEqOn4n.Y74crwi51YDMXY7O0&quality=9&compression=5&vncip=192.168.0.10&vncport=10001&localip=192.168.10.10&localport=5901&resize=remote

如果vncsub.yaml里定义了vncpubweb_ips,vncsub -prioxy里的转发将不起作用。