超低成本建zen安全节点技术教程(单服务器多节点)

本文适合有一定计算机运维知识+运营大量zen安全节点或准备运营安全节点用户。
由于文章受众是zen secure node持有者,“zencash” 和 “安全节点”的介绍省略,直接进入正题。

为什么要Docker来建安全节点

成本 降低85%

运行一个zen安全节点 ,普通的VPS方案需要一个至少10刀每月的vps服务器,运营成本约每月67元RMB,通过Docker来运营,可以将成本降低到每月10元左右。极大的降低了安全节点运营成本,极大的增加节点收益。

效率 提高千倍

建一个安全节点 ,从购买vps -> 初始化基础环境 -> 安装节点服务 -> 同步全网区块, 少则几小时,多则几天,通过docker建立安全节点镜像,可以在几分钟内完成节点上线。

步骤

初始环境

买linode 8G 实例(国内服务商拿不到大量IP地址,linode分配ipv6无限制);
这里买服务器

超低成本建zen安全节点技术教程(单服务器多节点)_第1张图片
image.png

发ticket 要求分配ipv6 pool

初始配置

Image 选择Ubuntu 18.04 LTS
swap分区分配 32768MB
Disk 分区分配 131072MB
启动系统并ssh登陆。


超低成本建zen安全节点技术教程(单服务器多节点)_第2张图片
image.png

配置ipv6地址 参照 Ubuntu 17.10
官方文档https://www.linode.com/docs/networking/linux-static-ip-configuration/
首先在remote access菜单找到 Public IP Pools,找到你的 ipv6 地址段;

超低成本建zen安全节点技术教程(单服务器多节点)_第3张图片
image.png

然后编辑"/etc/systemd/network/05-eth0.network"


超低成本建zen安全节点技术教程(单服务器多节点)_第4张图片
image.png

在末尾增加

Gateway=fe80::1
Address=2001:db8:2000:aff0::1/64
Address=2001:db8:2000:aff0::2/64
Address=2001:db8:2000:aff0::3/64
......
Address=2001:db8:2000:aff0::100/64
# 加个100个ip地址,地址根据 Public IP Pools算出

添加好后在终端执行 “netplan apply” 使配置生效
ifconfig -a 查看本地地址
(可使用 http://ipv6now.com.au/pingme.php
测试网络状况)

Docker 安装

参考官方 ,Ubuntu 18.04 LTS安装docker 很方便,复制官方文档命令即可。
官方文档参考

建立第一个安全节点

通过docker启动一个ubuntu实例

  # 拉运行安全节点系统镜像
  docker pull ubuntu
  # 查看本地镜像 复制 image id (一串随机字母数字)
  docker image ls
  # 启动ubuntu
  docker run -it image_id /bin/bash
  #  配置基础环境 并安装 zen服务 和 secnodetracker 服务
  apt-get update
  apt-get install iputils-ping
  apt-get install net-tools

剩下的和在vps安装节点一样
Zen安装参考官方
secnodetracker安装参考官方
证书生成
注意这里要生成通配符证书,避免后续多个节点需要重复建证书(18年3月才开始支持,所以以前的文档没提过这一点)

# 通配符证书 命令
./acme.sh --issue -d '*.example.com' --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

命令第一次执行 会生成一个 “_acme-challenge” ,域名解析添加txt解析 ,记录值为生成的随机码。

# 注意这里是 renew
./acme.sh --renew -d '*.example.com' --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

编辑 /root/.zen/zen.conf 文件 配置zen环境

# 重点关注端口配置
rpcport=18600

在用户目录 root 目录,新建zend启动脚本 ,保存为 start.sh

#!/bin/bash

while true;
do
    zend -port=9000
    sleep 10s
done

启动zend服务

nohup sh /root/start.sh & 2>&1 

配置secnodetracker 并启动

node setup.js
node app.js

将第一个安全节点同步保存为 安全节点基础镜像

Ctrl+P+Q 退出容器交互终端

# 查看第一个安全节点的 container id  并复制
docker ps -a  
# 将第一个安全节点container保存为image  
docker commit --author "i love zen" --message "zen niubi" container_id securenode:v1
# 查看本地镜像
docker image ls

这时候应该已经看到刚才新建的镜像了,复制image id

通过镜像启动新安全节点

交互模式启动新容器, 网络模式为host, 取名node001

docker run -it --net=host --name node001 image_id /bin/bash

编辑监听端口 /root/start.sh /root/.zen/zen.conf 两个监听端口数都+1

rpcport=18601   # /root/.zen/zen.conf
-port=9001      # /root/start.sh

配置并启动zend 和 node服务

rm -fr /root/.zen/wallet.dat
rm -fr /root/secnodetracker/config
nohup sh /root/start.sh & 2>&1
node setup.js   # 新配置
node app.js     # 或者pm2 管理

Ctrl + p + q 退出交互式命令,完成第二个节点的启动。然后依次启动第3,4,5……20个。
测试8G RAM+ 32G swap 20个以后机器异常卡,理论上越高配机器,单节点性价比越高,所以币足够的情况下建议选更高配机器。

看效果

超低成本建zen安全节点技术教程(单服务器多节点)_第5张图片
image.png

PS.

节点注册时 会验注册ip,会碰到提示ip已注册。我的解决也很简单,服务器有无限量的IPv6地址,每注册一个节点,删除一个ip即可。

ip -6 addr del 2400:8xxx:xx:::/64 dev eth0

从docker容器 命令交互环境退出 用 Ctrl+P+Q ,不要直接Cmd+c或者exit,直接退出会导致容器 down,终止服务。

你可能感兴趣的:(超低成本建zen安全节点技术教程(单服务器多节点))