自建Chihaya Tracker服务器

上回说到bittorrent-tracker项目性能较低,于是便换为chihaya项目,Github地址如下:

该Tracker使用GOLang编写,实测在日请求量400W+的情况下,CPU占用不超过5%。

基本组件与GO环境安装

首先安装一些基本组件(已经安装的可以跳过)

sudo apt-get install wget curl vim git -y

然后下载一个预构建好的GO环境:

wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
sudo tar -xzvf go1.14.2.linux-amd64.tar.gz -C /usr/bin

打开账户配置文件,把GO的PATH写到账户配置文件下:

# 切换到root用户
sudo -i

# 打开账户配置文件
vim ~/.bash_profile

# 将下行内容写到该配置文件中
export PATH=$PATH:/usr/bin/go/bin

# 使其生效
source ~/.bash_profile

拉取Chihaya并构建

首先从github拉取Chihaya仓库

# SSH方式
git clone [email protected]:chihaya/chihaya.git

# HTTPS方式
git clone https://github.com/chihaya/chihaya.git

然后进入仓库内,开始构建

cd chihaya
go build ./cmd/chihaya

构建完成后仓库内会出现一个名为chihaya的可执行二进制文件,将其复制到/usr/bin:

cp chihaya /usr/bin
chmod +x /usr/bin/chihaya

执行如下命令,可以检查Chihaya是否正常:

chihaya --help

下载配置文件,并保存到/etc中。

sudo wget https://raw.githubusercontent.com/chihaya/chihaya/master/dist/example_config.yaml -O /etc/chihaya.yaml

打开并根据需要编辑其中的配置选项,相关配置都有英文说明。

sudo vim /etc/chihaya.yaml

创建Systemd启动项

# 新建systemd配置文件,将以下代码一起复制到SSH运行
sudo cat > /lib/systemd/system/chihaya.service <<EOF
[Unit]
Description=chihaya tracker server
    
[Service]
User=root
ExecStart=/usr/bin/chihaya --config /etc/chihaya.yaml
Restart=on-abort
LimitCORE=infinity
LimitNOFILE=infinity
LimitNPROC=infinity
    
[Install]
WantedBy=multi-user.target
EOF
# 以上为命令的全部内容
# 设置开机启动
sudo systemctl enable chihaya
# 启动服务
sudo systemctl start chihaya
# 查看服务状态
sudo systemctl status chihaya
# 停止服务
sudo systemctl stop chihaya
# 重启服务
sudo systemctl restart chihaya

启动之后chihaya便会根据配置文件监听相应的http和udp端口(默认6969),此时Tracker服务器地址如下:
http://你的服务器公网IP:6969/announce
udp://你的服务器公网IP:6969/announce

至于反向代理和CloudFlare接入,方法参照上一篇文章,不过接入Cloudfare时不需要筛选IP了,Chihaya的配置文件里有一个选项可以指定使用CF的连接IP。

real_ip_header: "CF-Connecting-IP"

Chihaya具有丰富的配置文件,同时还支持Redis,这里就不展开讲了。

本组Tracker地址为:

https://tracker.tamersunion.org/announce

点赞
  1. 寒夜方舟说道:
    Google Chrome Windows 10

    大佬,如果我要配置支持ipv6怎么弄?用的opentracker的时候没找到用什么参数,不知道这个有没有参数可以配置。

    1. 寒夜方舟说道:
      Google Chrome Windows 10

      或者这个默认开启了ipv6支持吗?我服务器已经有v6,并且可以ping通ipv6 谷歌

      1. Hanada说道:
        Google Chrome Windows 10

        试一下监听那里填[::]:6880(可以不用填0.0.0.0:6880),或者直接nginx反向代理,在nginx上添加ipv6支持

        1. 寒夜方舟说道:
          Google Chrome Windows 10

          您好,我看yaml的注释,6880是提供的状态的端口吧,如果是提供ipv4+ipv6的tracker服务的话,应该是
          # This block defines configuration for the tracker's HTTP interface.
          # If you do not wish to run this, delete this section.
          http:
          # The network interface that will bind to an HTTP server for serving
          # BitTorrent traffic. Remove this to disable the non-TLS listener.
          addr: "[::]:6969"

        2. 寒夜方舟说道:
          Google Chrome Windows 10

          我看了下,不行,它只监听IPV6
          ![image.png](https://i.loli.net/2021/05/17/r1TK84vyqlwI6dO.png)
          ![image.png](https://i.loli.net/2021/05/17/q9uYKpA3Ls8vbDf.png)

          1. Hanada说道:
            Google Chrome Windows 10

            没事的,ipv6监听对ipv4有效,你可以测测,ipv4也能访问。或者你可以试试叠两行addr看看chihaya支持不支持。

          2. 寒夜方舟说道:
            Google Chrome Windows 10

            您好,我已部署,原来默认就支持v6+v4双栈了,啥也不用改 :tushe:
            现在还有两个问题:
            1.要等很长时间,两BT客户端才会开始传输数据(下载)
            2.下载速度偶尔会掉很低,然后过一会又恢复正常。
            请问这样是正常的吗?还是因为我需要配redis(我现在还没配redis)

    2. Hanada说道:
      Google Chrome Windows 10

      单独的P2P不要过度依赖tracker, 单独两客户端之间建连本身就不是一件容易的事情, 但是对于网状结构的话影响就不大, 我们字幕组现在在全球就有30多个做种节点. 我自己在本地下载时也只能连上他们之中的一部分. 有时候甚至手动添加IP:端口也得等很久才能建立P2P连接的, 所以也不要太过关注特定的两个客户端之间是否能建立成功. P2P网建立起来就OK了 :huaji:

      1. 寒夜方舟说道:
        Google Chrome Windows 10

        喔喔,原来如此,因为我这个是做游戏文件分发,想补充一下对象存储,分摊一下对象存储的压力,我试试把对象存储直链填入web种子url中,看速度会不会好点。
        大佬你的服务器配置了redis吗?

        1. Hanada说道:
          Google Chrome Windows 10

          没配置, 单机不需要使用redis, 如果是多机集群或者需要数据持久化的话可以考虑上redis, redis对性能影响比较大, 我目前托管在一台2C4G的机器上, 内存占用大概3G不到吧, 带宽占用大概10Mbps左右, 目前承载全网141万个活跃种子, 314万个peers (用户), 你可以参考一下.

        2. Hanada说道:
          Google Chrome Windows 10

          这个页面可以看到我tracker现在的实时状态以及监控数据: https://tracker.tamersunion.org/

          1. 寒夜方舟说道:
            Google Chrome Windows 10

            好的,谢谢。看来还是因为我节点数少了的原因。
            您这个统计页面好漂亮,请问是开源的项目吗?

      1. 寒夜方舟说道:
        Google Chrome Windows 10

        大佬,又有几个问题。
        如果我使用您教程内Prometheus的配置文件,我的Prometheus就会提示有问题。
        ![image.png](https://i.loli.net/2021/05/21/DbTE9dpReGLPJyq.png)
        而使用chihaya推荐的配置,Prometheus就不会报错,但提示的地址和您这个配置不太一样。
        主要是这个参数:
        metrics_path: /metrics

        1. Hanada说道:
          Google Chrome Windows 10

          看了下chihaya对配置文件进行过更改,现在他的默认路径是/metrics(我当初编译时是/),而且配置项的名字也变了(可以参考一下 https://github.com/tamersunion/tracker/blob/master/chihaya/chihaya.yamlhttps://github.com/chihaya/chihaya/blob/master/dist/example_config.yaml ),chihaya官方做了兼容,如果是prometheus_addr的话就是根目录,如果是metrics_addr的话就是/metrics目录。

      2. 寒夜方舟说道:
        Google Chrome Windows 10

        还有使用grafana对接prometheus的时候一直提示Unknown error during query transaction. Please check JS console logs.
        ,请问grafana应该怎么配置对接呢?谢谢了

        1. Hanada说道:
          Google Chrome Windows 10

          这个我没遇到过,网上关于prometheus和grafana添加prometheus数据源的资料挺多的,你可以尝试一下。

          1. 寒夜方舟说道:
            Google Chrome Windows 10

            解决了,原来那个grafana填入的地址要是prometheus公网可以访问的地址,别人的教程都是所谓的127.0.0.1,坑了。

          2. 寒夜方舟说道:
            Google Chrome Windows 10

            ![image.png](https://i.loli.net/2021/05/22/bQ3k5dgnrZlA8RT.png)
            感谢大佬,配好了监控
            请问大佬,您的这个界面可以开源吗?能动态变化的连接数看起来好高大上
            ![image.png](https://i.loli.net/2021/05/22/UfI8H9o7XzstMme.png)

    3. Hanada说道:
      Google Chrome Android 11

      那个动态变化的连接数用js写的……查询prometheus api的而已,我之前发你的仓库就是这个页面的全部源码

  2. HHH说道:
    Google Chrome Windows 10

    剧毒

  3. Hanada说道:
    Google Chrome Windows 10

    What are you talking about. I don't understand?

寒夜方舟进行回复 取消回复

电子邮件地址不会被公开。必填项已用 * 标注