マイニングプールの自動切り替えをした

TL;DR

マイニングプールが落ちた時に自動的に切り替わるといいなぁ haproxyを使って各マイニングプールを自動で切り替えよう

#!/bin/bash

minerd -a yescrypt -o stratum+tcp://mproxy.coiner.site:11000 -u User.worker -p password

振り分け先

名称 stratum接続先
銭プール(ZNY) stratum+tcp://zny.coiner.site:19666
bunnymining stratum+tcp://mining.bunnymining.work:19332

※ポートは変わっても大丈夫。ユーザー名とワーカー名・パスワードは同一!

手順書 haproxyをインスコ

環境:Ubuntu16.04TLS

$ sudo apt-get install haproxy
$ sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org
$ vim /etc/haproxy/haproxy.cfg

config書くよ

global
        maxconn 32768 # concurrent connections limit
        user nobody 
        spread-checks 5

defaults
        timeout connect 50000
        #timeout client 5000ms
        timeout server 50000

frontend http-in
       bind *:80
       mode http
       stats enable
       stats uri /admin?stats   

frontend stratum-in
        # proxy stratum
        bind *:11000
        default_backend stratums
    
backend stratums
       balance source
       hash-type consistent
       server stratum1 zny.coiner.site:19666 check inter 20s rise 5 fall 2
       server stratum2 mining.bunnymining.work:19332 check inter 20s rise 5 fall 2

※check inter 20sやtimeoutの部分はstratum (yay!!!) の出る秒数以上に設定!

接続テストする(Failoverテスト)

./minerd -a yescrypt -o stratum+tcp://mproxy.coiner.site:11000 -u User.worker -p password
$ nc -U /tmp/haproxy-cli.sock
prompt
> set weight stratums/stratum1 0 #接続先が変わるか確認
> set weight stratums/stratum1 1 #元に戻す

作った理由

しばしば自分のサーバーが落ちてしまうのでマイニングのダウンタイムを減らすためにLB導入した。

悩んだ点

初回はroundrobinで設定をしていましたが、server1に接続、server2に接続と繰り返すとリクエスト<=>レスポンスの宛先がおかしくなり正常稼働せず。 出来る限り、スティッキーセッションのように接続されるようにしました。

参考

HAProxy Configuration Manual

間宮さんのさくっと仮想通貨

暗号通貨BitZenyまとめWiki bunnymining

追記

マイニングプール、各種コインに対応したよ!

名称 stratum接続先
円天恋なープール stratum+tcp://ytn.coiner.site:19000
Riecoin マイニングプール stratum+tcp://ric.coiner.site:12100
Zcashほしいなー(ZNY) stratum+tcp://zec.coiner.site:11100
ドージ鯉なープール stratum+tcp://doge.coiner.site:19000