运营CYBEX见证人节点 - CybexDex/cybex-node-doc GitHub Wiki

环境配置

  • 4核及以上
  • 16GByte内存及以上
  • 500G文件系统存储及以上(随时间变化可能需要增加)
  • 10Mbit/s带宽及以上(随交易量增加可能需要增加)
  • Linux操作系统(推荐使用Ubuntu最新发行版本)
  • 系统基础库
    • libcurl
    • libssl
    • openssl
    • libcrypto
    • 其他可能需要的库

部署可执行程序及启动配置

# 建立运行目录
mkdir cybex; cd cybex
export CYBEX_ROOT=`pwd`

# 下载编译好的二进制程序映像
mkdir bin
wget https://github.com/CybexDEX/how-to-run-cybex-node/raw/master/bin/witness_node -O ${CYBEX_ROOT}/bin/witness_node
wget https://github.com/CybexDEX/how-to-run-cybex-node/raw/master/bin/cq_append_sbe -O ${CYBEX_ROOT}/bin/cq_append_sbe
wget https://github.com/CybexDEX/how-to-run-cybex-node/raw/master/bin/cq_sync_server -O ${CYBEX_ROOT}/bin/cq_sync_server
wget https://github.com/CybexDEX/how-to-run-cybex-node/raw/master/bin/cq_sync_client -O ${CYBEX_ROOT}/bin/cq_sync_client

# 下载genesis文件
wget https://raw.githubusercontent.com/CybexDEX/how-to-run-cybex-node/master/mainchain/genesis.json -O ${CYBEX_ROOT}/genesis.json

# 建立data目录并下载config.ini文件
mkdir -p ${CYBEX_ROOT}/data
wget https://raw.githubusercontent.com/CybexDEX/how-to-run-cybex-node/master/mainchain/config.ini -O ${CYBEX_ROOT}/data/config.ini

# 修改data/config.ini,将您提前注册好的witness-id和private-key配置到config.ini中
# 增加以下两行(去掉行首的#符号)
# witness-id = "1.6.X"
# private-key = ["your-signing-pubkey-in-base58-format", "your-signing-privkey-in-wif-format"]

# 建立每日数据目录(这个目录需要配置到后面的server.xml和client.xml文件中)
mkdir -p ${CYBEX_ROOT}/daily

# 建立CQ配置目录
mkdir -p ${CYBEX_ROOT}/config/cq

# 编辑${CYBEX_ROOT}/config/cq/server.xml文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<config>
    <cq_path>full-path-to-your-daily-dir/${TODAY}/wn_in</cq_path>
    <heartbeat_interval>1000</heartbeat_interval>
    <connection name="name-of-local-endpoint" port="port-of-local-cq-server" passphrase="passphrase-of-local-cq-server"/>
</config>

# 编辑${CYBEX_ROOT}/config/cq/client.xml文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<config>
    <cq_path>full-path-to-your-daily-dir/${TODAY}/wn_out</cq_path>
    <heartbeat_interval>1000</heartbeat_interval>
    <sleep_interval>5</sleep_interval>
    <connection server="ip-of-rte-cq-server" port="port-of-rte-cq-server" passphrase="passphrase-of-rte-cq"/>
</config>

# 按UTC时间建立当日的CQ工作目录
export TODAY=`date -u +"%Y%m%d"`
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/wn_in
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/wn_out
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/wn_in_temp
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/logs

启动witness_node和cq

# 启动witness_node
${CYBEX_ROOT}/bin/witness_node --data-dir=${CYBEX_ROOT}/data --out-dir=${CYBEX_ROOT}/daily/${TODAY}/wn_out --in-dir=${CYBEX_ROOT}/daily/${TODAY}/wn_in --genesis-json=${CYBEX_ROOT}/genesis.json --plugins "witness"

# 启动cq_sync_server
${CYBEX_ROOT}/bin/cq_sync_server ${CYBEX_ROOT}/config/cq/server.xml

# 启动cq_sync_client
${CYBEX_ROOT}/bin/cq_sync_client ${CYBEX_ROOT}/config/cq/client.xml

每日交易日换日操作

每个交易日换日时,需要重启cq。推荐使用crontab系统定时任务来操作交易日换日。需要在utc时间每天00:00后执行,推荐每日00:01执行此脚本

换日脚本如下

#!/bin/bash

export CYBEX_ROOT='your path to root dir of witness node'
export YESTERDAY=`date -u -d "24 hours ago" +"%Y%m%d"`
export TODAY=`date -u +"%Y%m%d"`

mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/wn_in
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/wn_out
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/wn_in_temp
mkdir -p ${CYBEX_ROOT}/daily/${TODAY}/logs

${CYBEX_ROOT}/bin/cq_append_sbe ${CYBEX_ROOT}/daily/${YESTERDAY}/wn_in \
script sod ${CYBEX_ROOT}/daily/${TODAY}/wn_in ${CYBEX_ROOT}/daily/${TODAY}/wn_out

sleep 3

ps auxwww | grep `whoami` | egrep "cq_sync_server" | grep -v grep | awk '{print "kill -9 "$2}' | sh
ps auxwww | grep `whoami` | egrep "cq_sync_client" | grep -v grep | awk '{print "kill -9 "$2}' | sh

sleep 10

nohup ${CYBEX_ROOT}/bin/cq_sync_server ${CYBEX_ROOT}/config/cq/server.xml \
>${CYBEX_ROOT}/daily/${TODAY}/logs/cq_sync_server.log 2>&1 &
nohup ${CYBEX_ROOT}/bin/cq_sync_client ${CYBEX_ROOT}/config/cq/client.xml \
>${CYBEX_ROOT}/daily/${TODAY}/logs/cq_sync_client.log 2>&1 &

产品升级

在一些特定情况下(例如链上操作升级),运营方需要配合社区进行节点升级工作。

日常维护和监控

安装监控插件,监控节点出块和系统运行情况

  • 下载zabbix_install.sh(接入时提供下载方式)
  • 执行zabbix_install.sh

维护升级

  • 停止 cq和witnessnode (慎用kill -9)
  • 替换程序
  • 启动 cq和witnessnode
  • 核对区块和其他数据及状态是否一致健康

安全

  • 开放5000端口给所有见证人节点(接入时提供见证人节点列表)
  • 开放CQ端口给RTE服务器
  • 封闭其他所有端口

机房选择建议

  • 中国大陆推荐使用阿里云
  • 海外及港澳台推荐使用aws
⚠️ **GitHub.com Fallback** ⚠️