TeamTalk 服务器--配置

    xiaoxiao2021-04-18  85

    TeamTalk 服务端分析 二、配置

    作者: zhyh 时间: 2014-12-22 22:35:00 分类: TeamTalk

    前言

    近期由于忙于工作,还有些纠结个人的事情,本来说好的本文,不得不拖到今天才写。

    配置说明

    在此,为了便于说明,我们做如下约定:

    Name 内网IP 外网IP(IP1/IP2) Instance C1 192.168.1.101 1.2.3.1/5.6.7.1 login_server1 C2 192.168.1.102 1.2.3.2/5.6.7.2 login_server2 C3 192.168.1.103 1.2.3.3/5.6.7.3 msg_server1 C4 192.168.1.104 1.2.3.4/5.6.7.4 msg_server2 C5 192.168.1.105 1.2.3.5/5.6.7.5 route_server1 C6 192.168.1.106 1.2.3.6/5.6.7.6 route_server2 C7 192.168.1.107 1.2.3.7/5.6.7.7 file_server C8 192.168.1.108 1.2.3.8/5.6.7.8 msfs C9 192.168.1.109 1.2.3.9/5.6.7.9 db_proxy

    db_proxy 开启两个实例,分别监听10200与10201两个端口。所有的服务端都在一个内网里面。 配置中的X代表数字。

    1、login_server

    可以简单的把login_server理解成为一个负载均衡服务器。msg_server在启动的时候会将自己监听的ip,port注册到告知login_server,当有用户登录或登出到msg_server的时候,msg_server会通知login_server进行变更,当用户通过login_server请求msg_server的ip与port的时候,login_server通过一个简单的规则,给出负载相对较小的msg_server回复给用户。

    login_server的配置:

    ClientListenIP= ClientPort= MsgServerListenIP= MsgServerPort=

    ClientListenIP 这个是用来配置login_server监听的IP地址,供客户端连接时候的IP,如果希望监听所有的IP则填写0.0.0.0。如果监听多个IP,可以使用";"来分割,比如:1.2.3.1;5.6.7.1 这样就会监听同时监听这两个IP。 ClientPort 这个是用来配置login_server监听的Port MsgServerListenIP 这个是用来配置login_server与msg_server通信用的IP。这个配置建议使用内网地址(如果login_server与msg_server在同一个内网的话),同样可以使用";"来分割监听多个IP。 MsgServerPort 这个是用来配置login_server与msg_server通信的端口。

    配置例子1:

    ClientListenIP= 1.2.3.1;5.6.7.1 ClientPort=80 MsgServerListenIP=192.168.1.101 MsgServerPort=8100

    配置例子2:

    ClientListenIP= 1.2.3.2;5.6.7.2 ClientPort=80 MsgServerListenIP=192.168.1.102 MsgServerPort=8100

    2、msg_server

    msg_server的配置相对来说比较复杂,该服务端也是最复杂的一个,其与login_server,route_server,db_proxy保持通信。其负责整个TeamTalk的整个核心通信功能。

    msg_server的配置:

    ListenIP= ListenPort= HttpListenIP= HttpListenPort= ConcurrentDBConnCnt= DBServerIPX= DBServerPortX= LoginServerIPX= LoginServerPortX= RouteServerIPX= RouteServerPortX= FileServerIPX= FileServerPortX= IpAddr1= IpAddr2= MaxConnCnt=

    ListenIP 这个是用来配置msg_server监听客户端连接的IP,供客户端连接的时候使用,同login_server一样,如果希望监听所有的IP,可以配置为0.0.0.0,如果监听多个IP,可以使用";"分割。ListenPort 这个是用来配置msg_server监听的Port。HttpListenIP:HttpListenPort是使msg_server拥有http的功能。ConcurrentDBConnCnt 这个是配置与db_proxy的连接的并发。会于下面的四个配置一起使用。LoginServerIPX与LoginServerPortX用来配置与login_server通信用。 RouteServerIPX与RouteServerPortX用来配置与route_server通信用。IpAddr1 与 IpAddr2用来向login_server 发送自己监听的IP。保持与ListenIP一致。MaxConnCnt 用来告知login_server自己最大接受多少个连接并发。

    配置例子1:

    ListenIP=1.2.3.3;5.6.7.3 ListenPort=443 HttpListenIP=1.2.3.3;5.6.7.3 HttpListenPort=80 ConcurrentDBConnCnt=2 DBServerIP1=192.168.1.109 DBServerPort1=10200 DBServerIP2=192.168.1.109 DBServerPort2=10201 LoginServerIP1=192.168.1.101 LoginServerPort1=8100 LoginServerIP2=192.168.1.102 LoginServerPort2=8100 RouteServerIP1=192.168.1.105 RouteServerPort1=8400 RouteServerIP2=192.168.1.106 RouteServerPort2=8400 FileServerIP1=192.168.1.107 FileServerPort1=8500 IpAddr1=1.2.3.3 IpAddr2=5.6.7.3 MaxConnCnt=100000

    配置例子2:

    ListenIP=1.2.3.4;5.6.7.4 ListenPort=443 HttpListenIP=1.2.3.4;5.6.7.4 HttpListenPort=80 ConcurrentDBConnCnt=2 DBServerIP1=192.168.1.109 DBServerPort1=10200 DBServerIP2=192.168.1.109 DBServerPort2=10201 LoginServerIP1=192.168.1.101 LoginServerPort1=8100 LoginServerIP2=192.168.1.102 LoginServerPort2=8100 RouteServerIP1=192.168.1.105 RouteServerPort1=8400 RouteServerIP2=192.168.1.106 RouteServerPort2=8400 FileServerIP1=192.168.1.107 FileServerPort1=8500 IpAddr1=1.2.3.4 IpAddr2=5.6.7.4 MaxConnCnt=100000

    3、route_server

    route_server比较简单,就是用来转发msg_server的消息。同时用来保持各个用户的状态以及该用户在哪个msg_server上。

    route_server配置:

    ListenIP= ListenMsgPort=

    ListenIP:ListenMsgPort 是用来配置与msg_server通信用的。

    配置例子1:

    ListenIP=192.168.1.105 ListenMsgPort=8400

    配置例子2:

    ListenIP=192.168.1.106 ListenMsgPort=8400

    4、msfs

    这个是小文件存储系统,主要是用来保存用户头像以及聊天中产生的图片、语音等小文件。msfs 提供的一个简单的http服务。 msgs 配置:

    ListenIP= ListenPort= BaseDir= FileCnt= FilesPerDir= GetThreadCount= PostThreadCount=

    ListenIP:ListenPort 的含义与之前各个服务端的配置意义相同。BaseDir 是msfs保存文件的路径,msfs在启动的时候,会在该目录下产生256个目录,每个目录下面再产生256个子目录。FileCnt用来记录已经存储的文件数目,该配置在msfs关闭的时候会被程序重写。FilesPerDir每个目录下面最多保存多少个小文件,GetThreadCount获取小文件的线程数目,PostThreadCount上传小文件的线程数目。建议GetThreadCount + PostThreadCount = 内核数目,GetThreadCount >= PostThreadCount。

    所以msfs总共可以存储的文件数目为:256*256*FilesPerDir

    配置例子1:

    ListenIP=1.2.3.8;5.6.7.8 ListenPort=80 BaseDir=./tmp FileCnt=0 FilesPerDir=30000 GetThreadCount=6 PostThreadCount=2

    5、file_server

    file_server的功能是提供给用户传输文件使用。同时也存储用户传输的离线文件。 file_server配置项:

    Address= ListenPort= TaskTimeout=

    Address:ListenPort与上述服务端的IP:Port的意义一样,供与客户端通信用。TaskTimeout用来配置文件传输时效。 配置例子1:

    Address=192.168.1.107 ListenPort=8500 TaskTimeout=60

    以上是c++各个服务端的配置项,配置完成后整个TeamTalk的部署如下(其中虚线代表tcp短连接,实线代表tcp长连接):

    转载请注明原文地址: https://ju.6miu.com/read-675573.html

    最新回复(0)