在 Linux 上安装配置 BitTorrent Sync

背景介绍:
目前我们线上的前端服务器数量比较多,超过200多台,每次发布新应用的时候,都是将软件包放在一台专门的Push服务器上,再由所有的前端服务器通过rsync自动同步。但随着前端服务器的数量越来越多,Push服务器的带宽已经成为了瓶颈。

而BitTorrent Sync这种P2P方式的同步则是一种解决方案。同时它的跨平台支持也非常好,无论是Windows,Linux,Mac OS,甚至手机端都有相应的客户端。虽然目前尚未开源,但可以免费使用,还是很不错的。

下面,就是我们在线上的纯Linux测试环境中的安装与配置步骤:

Servers:
Master:idc2-server1
Slave:idc2-server2、idc2-server3

  1. 下载BitTorrent Sync,在所有服务器上
    $ sudo wget http://download-lb.utorrent.com/endpoint/btsync/os/linux-x64/track/stable -O /tmp/btsync_x64.tar.gz
    $ sudo mkdir /opt/btsync
    $ cd /opt/btsync
    $ sudo tar xzf /tmp/btsync_x64.tar.gz
  2. 创建服务管理脚本,在所有服务器上
    $ sudo vim /etc/init.d/btsync

    #!/bin/sh
    #
    # description: starts and stops the btsync client
    
    CONF=/opt/btsync/btsync.cfg
    PROC=/opt/btsync/btsync
    PIDFILE=/opt/btsync/btsync.pid
    
    start() {
      PID1=$(pidof btsync)
      if [ -z ${PID1} ]; then
        echo -n "Starting BitTorrent Sync: "
        ${PROC} --config ${CONF}
      else
        echo "BitTorrent Sync is already running at pid:${PID1}"
      fi
      return $?
    }  
    
    stop() {
      echo -n "Stopping BitTorrent Sync: "
      PID1=$(pidof btsync)
      if [ ! -z ${PID1} ]; then
        kill -9 ${PID1}
        echo "OK"
      else
        echo "Failed"
      fi
      return $?
    }  
    
    status() {
      PID1=$(pidof btsync)
      PID2=$(cat ${PIDFILE})
      echo -n "Checking BitTorrent Sync: "
      if [ ! -z ${PID1} ] && [ "${PID1}" -eq "${PID2}" ]; then
        echo "OK"
      else
        echo "Failed"
      fi
      return $?
    }  
    
    case "$1" in
      start)
       start
      ;;
      stop)
        stop
      ;;
      restart)
        stop
        sleep 1
        start
      ;;
      status)
        status
      ;;
      *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 2
    esac

    btsync Code

    sudo chmod +x /etc/init.d/btsync

  3. 创建用于同步的目录,在所有服务器上
    sudo mkdir /opt/btsync_transfer
  4. 创建配置文件,在idc2-server1上
    sudo vim /opt/btsync/btsync.conf

     {
      "device_name": "idc2-server1",
      "listening_port" : 8889, // 0 - randomize port
    
      "check_for_updates" : false,
      "use_upnp" : false,
    
      "storage_path" : "/opt/btsync",
      "pid_file" : "/opt/btsync/btsync.pid",
    
      "download_limit" : 0, // 0 - no limit
      "upload_limit" : 0, 
    
      "webui" :
      {
        "listen" : "0.0.0.0:8888",
        "login" : "admin",
        "password" : "btsync"
      }
    
      ,
      "folder_rescan_interval" : 60,
      "lan_encrypt_data" : false,
      "lan_use_tcp" : true
    }

    btsync.conf Code

  5. 创建同步所需的密钥,在idc2-server1上
    sudo /etc/init.d/btsync start
    打开Web UI:http://idc2-server1:8888
    用户名: admin
    密码: btsync

    点击 "Add Folder",
    在 "Path" 中输入 "/opt/btsync_transfer"
    点击 "Generate" 得到 "Secret" 为 "ALUORWDEWOLV354ZHPHFT4TSQO67JWQAN"
    如下图所示:

  6. 创建配置文件,在idc2-server2和idc2-server3上:
    sudo vim btsync.cfg

    {
    #定义设备名称,一般写主机名或者IP
      "device_name": "idc2-server2",
    #是使用随机端口还是固定端口,0表示随机
      "listening_port" : 8889, // 0 - randomize port
    
    #是否检查文件更新
      "check_for_updates" : false,
    #使用UPnP进行端口映射
      "use_upnp" : false,
    
    #storage_path包含一些运行时产生的状态文件,如果没有定义,则会在二进制命令运行的目录下产生一个.sync隐藏目录
      "storage_path" : "/opt/btsync",
    #定义pid文件的路径
      "pid_file" : "/opt/btsync/btsync.pid",
    
    #是否对上传/下载进行限速,0表示不限速
      "download_limit" : 0, // 0 - no limit
      "upload_limit" : 0,
      "webui" :
      {
    #如果去掉listen项,则表示禁用WEB UI
        "listen" : "0.0.0.0:8888",
        "login" : "admin",
    #如果去掉login/password,则表示不用验证
        "password" : "btsync"
      }
      , 
    
    #如果你在配置文件中设置了shared folders,则WEB UI中的会被禁止,配置文件中的会覆盖UI中设置的。
      "shared_folders" :
      [
        {
    #你的secret,可以使用--generate-secret参数生成
          "secret" : "ALUORWDEWOLV354ZHPHFT4TSQO67JWQAN", // * required field
    #同步的目录
          "dir" : "/opt/btsync_transfer", // * required field
    #是否自动删除文件
          "use_sync_trash" : false,
    #是否使用中继服务器
          "use_relay_server" : true,
    #是否使用tracker服务器
          "use_tracker" : true,
          "search_lan" : true,
    #设置不用查找就可以直接连接的机器
          "known_hosts" :
          [
            "idc2-server1:8889"
          ]
        }
      ]
      ,
      "folder_rescan_interval" : 60,
      "lan_encrypt_data" : false, // Encryption is very painful in terms of speed. Disabling it for LAN to increase the speed.
      "lan_use_tcp" : true
    }

    btsync.cfg Code

    sudo /etc/init.d/btsync start
    idc2-server3 同 idc2-server2设置,只需更改IP、主机名即可

  7. 在/opt/btsync_transfer中放置一些文件,就可以查看同步的状态了
    打开Web UI:http://idc2-server1:8888
    #将示例配置文件保存到当前目录下:
    ./btsync –dump-sample-config > sync.conf
    #启动btsync服务
    ./btsync –config sync.conf
  8. 注意事项
    如果是选择只读同步(服务器->本地),在文件传送完毕后如果不想再同步,记得在本地客户端上删除同步的目录,否则容易出现服务器端删除了文件,本地也会自动的删除该文件的情况。当然,读写同步更是如此。

    参考资料:

    http://heylinux.com/archives/2917.html

    http://my.oschina.net/guol/blog/202002

时间: 2024-08-13 21:11:07

在 Linux 上安装配置 BitTorrent Sync的相关文章

linux上安装配置vsftpd(转)

转自:http://www.webarch.org/category/linux 我的生产环境是Centos5.6,由于需要提供ftp服务,就找了一款比较小巧的ftp服务器端软件,vsftpd(vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一.在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标.) 1.查看是否安装vsftp rpm -qa | grep vsftpd 如果出现vsftpd-2

Ubuntu Linux上安装配置Mysql

一.安装: 三种安装方式: 1. 从网上安装 sudo apt-get install mysql-server.装完已经自动配置好环境变量,可以直接使用mysql的命令. 注:建议将/etc/apt/source.list中的cn改成us,美国的服务器比中国的快很多. 经测试,总是连接不成功.最后直接到官网下载MySQL APT Repository (mysql-apt-config_0.2.1-1ubuntu14.04_all.deb),然后安装,可以成功,网址:http://dev.my

如何在Debian Linux上安装配置ISC DHCP服务器

动态主机控制协议(DHCP)给网络管理员提供了一种便捷的方式,为不断变化的网络主机或是动态网络提供网络层地址,其中最常用的DHCP服务工具是ISCDHCPServer.DHCP服务的目的是给主机提供必要的网络信息以便能够和其他连接在网络中的主机互相通信.DHCP服务提供的信息包括:DNS服务器信息,网络地址(IP),子网掩码,默认网关信息,主机名等等. 本教程介绍运行在Debian7.7上4.2.4版的ISC-DHCP-Server如何管理多个虚拟局域网(VLAN),也可以非常容易应用到单一网络

[兄弟连技术交流分享]如何在 Linux 上安装和配置Munin

如何在 Linux 上安装和配置Munin Munin 是一款类似 RRD tool 的非常棒的系统监控工具,它能提供给你多方面的系统性能信息,例如 磁盘.网络.进程.系统和用户.这些是 Munin 默认监控的内容.下面跟大家来聊聊Munin! Munin 如何工作? Munin 以客户端-服务器模式运行.主服务器上运行的 Munin 服务器进程会从本地运行的客户端守护进程(Munin 可以监控它自己的资源)或者远程客户端(Munin 可以监控上百台机器)收集数据,然后在它的 web 界面上以图

【ruby】【linux】【irb】CentOS上安装配置ruby开发环境,安装 irb

在读<理解Unix进程>这本书,书中代码是用Ruby写的,就自己想实践一下,搜来搜去要安装配置Ruby,我是centOS6.5的系统.下面这篇不错,我又加入了一点自己的理解和试验. 1 方法一:下载ruby的安装包来进行安装 1.安装编译环境gcc 使用yum install gcc在线安装 2.安装ruby开发环境 PS:经常在搜帖子的时候,大神的文章中都是随随便便下载个什么啊,又没告诉我这样的菜鸟到哪里下,让人几番周折,这里 下载 Ruby - Ruby 官方网站:https://www.

如何在 Linux 上安装和配置Munin

Munin 是一款类似 RRD tool 的非常棒的系统监控工具,它能提供给你多方面的系统性能信息,例如 磁盘.网络.进程.系统和用户.这些是Munin 默认监控的内容.下面兄弟连www.lampbrother.net跟大家来聊聊Munin! Munin 如何工作? Munin 以客户端-服务器模式运行.主服务器上运行的 Munin 服务器进程会从本地运行的客户端守护进程(Munin 可以监控它自己的资源)或者远程客户端(Munin 可以监控上百台机器)收集数据,然后在它的 web 界面上以图形

在Linux上安装JDK7

查看是否安装了JDK 如果安装完毕后,jdk版本不是当前所安装的,则需要卸载之前linux自带的jdk版本,因为安装Redhat9后默认安装了jdk, 可是默认安装的jdk1.4版本比较老,所以需要先卸载掉原有的java 版本. [[email protected]]# java -version      查看安装的java版本信息 [[email protected]]# rpm -qa |grep -i java      查看存在java安装情况命令 java-1.4.2-gcj-com

在Linux上安装Oracle RAC 12 c(12.1) 虚拟机,一步一步向导

Oracle RAC 12 c(12.1)在Linux上安装虚拟机,一步一步向导 今天我们将看到如何安装 12 c版本1 RAC(真正的应用程序集群)数据库2 Linux 64位的虚拟机 使用VMWare或Oracle VirtualBox. 甲骨文的“c”12 c代表“ 云 ” 有一些重要和有趣的变化时安装12 c相比11 g RAC. 甲骨文似乎增加了很多新的有趣的特性在12摄氏度. 请注意,我们需要2虚拟机各有3 GB内存. 所以如果你有足够的记忆你的笔记本电脑/ PC机或服务器上,那么你

Linux 上安装 weblogic12C (静默安装) (一)

最近负责在linux上安装weblogic,领导说要安装最新的版本,版本号为 12.1.X.开始以为和旧版安装一样,使用控制台的方式,下载bin文件,然后一步步在console执行下来就行了.万万没想到,从12C版本后, bin文件不提供了,改成全系统通用的jar文件 (generic.jar).试了半天原来那种安装方式不能用了,非得用图形界面安装.由于服务器是在其他地方,肯定不能跑到主机的地址那边.于是各种google.各种找材料, 最后终于找到一种静默方式的安装.大家看下文. PS:经过公司