1、概述 WDC core使用docker方式部署,通过docker-compose 来实现。 总体步骤为,将wdc.yml和entry_point.sh(见第 3 节)放入同一目录,修改 entry_point.sh 权限为可执行,根据需要修改 wdc.yml 文件内容。 执行启动命令:docker-compo -f wdc.yml up -d 本文档基于 Linux 系统来部署 WDC core。 详细操作,请阅读后续内容。 2、准备工作 2.1、配置网络防火墙 WDC P2P 和 RPC 默认端口均为 19585,在 docker 容器端口映射时,可根据需求修改。请根据需求修改网络防火墙设置,决定是否开放该端口。 2.2、服务器硬件 磁盘空间建议 500GB,内存 16GB,CPU 8 核。 2.3、安装docker、docker-compose 2.3.1.Ubuntu(官方建议) apt install -y docker-compose 2.3.2.CentOS yum install -y docker sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(u name-s)-$(uname-m)"-o /usr/local/bin/docker-compose sudo chmod+x /usr/local/bin/docker-compose 参考文档:https://docs.docker.com/compose/install/ 3、YML文件(wdc.yml)与入口脚本(entry_point.sh) 3.1、Docker 镜像地址 节点程序镜像:wisdomchain/wdc_core 数据库镜像:wisdomchain/wdc_pgsql 3.2、wdc.yml 文件示例 * 以下内容为示例性内容,实际部署时,卷映射、环境变量、端口映射等根据实际情况,需要调整。 version: '3.1' services: wdc_pgsql: image: wisdomchain/wdc_pgsql restart: always container_name: wdc_pgsql privileged: true volumes: - /opt/wdc_pgsql:/var/lib/postgresql/data # pgsql 数据目录ports: - 127.0.0.1:5433:5432 environment: POSTGRES_USER: wdcadmin POSTGRES_PASSWORD: PqR_w9hk6Au-jq5ElsFcEjq!wvULrYXeF3*oDKp5i@A/D5m03VaB1M/hyKY WDC_POSTGRES_USER: replica WDC_POSTGRES_PASSWORD: replica wdc_core: image: wisdomchain/wdc_core restart: always container_name: wdc_core privileged: true volumes: -/opt/wdc_logs:/logs #程序日志目录 -/opt/wdc_leveldb:/leveldb -./entry_point.sh:/entry_point.sh -/opt/ipc:/root/ipc -./libs:/libs -/opt/fast-sync:/fast-sync entrypoint: /usr/bin/env bash /entry_point.sh-d wdc_pgsql:5432-c '/usr/bin/env bash /run_wdc_core.sh' ports: - 19585:19585 - 9585:9585 environment: LOGGING_CONFIG: 'https://wisdom-config.oss-cn-hangzhou.aliyuncs.com/public-chain/logback.xml' # 如发现LOGGING_CONFIG 相关路径报错,可以去除此项 DATA_SOURCE_URL: 'jdbc:postgresql://wdc_pgsql:5432/postgres' DB_USERNAME: 'replica' DB_PASSWORD: 'replica' WDC_MINER_COINBASE:'WX1********XN1T21573hYata' P2P_MODE: 'grpc' P2P_ADDRESS: 'wisdom://192.**.***.156:9585' BOOTSTRAPS: 'wisdom://47.74.183.249:9585,wisdom://47.74.216.251:9585,wisdom://47.96.67.155:95 85,wisdom://47.74.86.106:9585' MAX_BLOCKS_PER_TRANSFER: '256' ENABLE_DISCOVERY: 'true' ENABLE_MINING: 'true' FAST_SYNC_DIRECTORY: '/fast-sync' DATABASE_DIRECTORY: '/leveldb' 3.3、卷映射(volumes) 可根据需要,映射到不同的目录。 其中,wdc_pgsql volumes映射的是PostgreSql数据库数据目录,docker 容器删除后,该目录不会自动删除,节点数据仍然保留。如果想要全新启动 WDC Core,请备份该目录后,删除或清空该目录。 wdc_core volumes 映射的是 WDC Core 节点程序日志目录。 容器内部的一些文件,也可以根据需要映射到宿主机目录。比如 wdc_core 容器内部的 /fast-sync,可以映射为:/opt/fast-sync:/fast-sync 3.4、网络端口映射(ports) wdc_pgsql 的端口映射,为了保障安全,建议映射到IP 地址 127.0.0.1,只允许本机访问。如果不想通过外部客户端访问数据库,也可以去掉该端口映射。 wdc_pgsql 和 wdc_core 的外部端口号,可根据需求修改。 3.5、环境变量(environment) 数据库用户名密码可以自定义,但要保证 WDC_POSTGRES_USER 与 DB_USERNAME 保持一致,WDC_POSTGRES_PASSWORD 与 DB_PASSWORD 一致。 ENABLE_MINING 表示是否启动挖矿。 WDC_MINER_COINBASE 为挖矿 coinbase 地址,必须设置,否则节点无法启动。生成地址的方法参见下一节“矿工地址生成”。 DATA_SOURCE_URL 的值,利用 docker 容器互联,不必修改。如果需要修改,需确保 URL 中的主机名为 pgsql 容器名,端口与 pgsql 容器内部的数据库端口相同。 BOOTSTRAPS:种子节点列表,英文逗号分隔 ENABLE_DISCOVERY:是否允许节点发现,true/false P2P_ADDRESS:自己节点 ip、port ports:9585是p2p 端口,19585 是 rpc 端口MAX_BLOCKS_PER_TRANSFER:最大同步区块数(官方建议默认 256) FAST_SYNC_DIRECTORY: '/fast-sync':快照文件路径(此路径为容器内的路径,需要与wdc.yml 中配置 volumes 下的保持一致) DATABASE_DIRECTORY: '/leveldb'::leveldb 存储路径(此路径为容器内的路径,需要与wdc.yml 中配置 volumes 下的保持一致) 3.6、矿工地址生成 使用手机 APP 生成地址 APP 可在官网下载:https://www.wisdchain.com/ 目前下载页面为:https://www.wisdchain.com/user/application_1 3.7、entry_point.sh wdc.yml 文件中,wdc_core 服务的入口脚本内容: #!/bin/bash #set -x #******************************************************************************? ? ?# @file : entrypoint.sh # @author : wangyubin # @date : 2018-08- 1 10:18:43 # # @brief? : entry point for manage service start order # history : init #****************************************************************************** : ${SLEEP_SECOND:=2} wait_for() { echo Waiting for $1 to listen on $2... while ! nc -z $1 $2; do echo waiting...; sleep $SLEEP_SECOND; done } declare DEPENDS declare CMD while getopts "d:c:" arg do case $arg in d) DEPENDS=$OPTARG ;; c) CMD=$OPTARG ;; ?) echo "unkonw argument" exit 1 ;; esac done for var in ${DEPENDS//,/ } do host=${var%:*} port=${var#*:} wait_for $host $port done eval $CMD 示例: 3.8、数据快照(120w 高度) 数据快照下载链接:https://wisdom-backup.oss-cn-beijing.aliyuncs.com/fast_sync.zip解压并把快照文件放入(官方建议,有需要可以自定义路径,在 wdc.yml 中修改) /opt/fast-sync 路径下。 如有新数据快照请关注官方公众号。 4、启动 docker 镜像 4.1、准备工作 更新镜像: docker pull wisdomchain/wdc_core docker pull wisdomchain/wdc_pgsql 将 entry_point.sh 与 YML 文件(wdc.yml)放入同一目录,修改 entry_point.sh 权限为可执行: chmod a+x entry_point.sh 4.2、启动命令 docker-compose -f wdc.yml up -d (wdc.yml 内容见第 2 节 YML 文件) 命令最终输出如下内容,表是 docker 容器启动成功: Creating wdc_core ... Creating wdc_pgsql ... Creating? wdc_core Creating wdc_pgsql ... done 4.3、节点运行情况检查 命令 docker ps 查看容器状态 Status 字段为Up...字样,容器运行正常。 浏览器访问:http://<节点 IP>:<端口>/block/-1,查看最新区块信息。 浏览器访问:http://<节点 IP>:<端口>/height,查看区块高度。区块高度值不断增加,表示区块正在同步。 浏览器访问:http://<节点 IP>:<端口>/peers/status,查看 peer 互联情况。 4.4、日志检查 命令 docker logs -f <CONTAINER NAME> 查看节点程序控制台输出 /opt/wdc_logs 目录为节点程序日志文件目录,如果再 YML 文件映射到了其他目录,请到相应目录查看。 4.5、更新升级节点程序 停止并删除容器 docker-compose -f wdc.yml down 获得最新版本镜像 docker pull wisdomchain/wdc_core 修改 wdc.yml,如果有必要的话。启动新版镜像 docker-compose -f wdc.yml up -d 5、挖矿规则说明 5.1、矿工规则 (1)申请:如果要申请矿工,首先账户抵押数必须大于或者等于十万,投票数必须要排列在前? ? 十五名,才能成为矿工。投票可以是本账户给本账户投票,也可以是其他账户给本账户投票。 (2)竞争:如果有新账户的投票数进入前十五名,那么投票数低于前十五名的原矿工到了下一? ? 个纪元(每个纪元 120 个区块)就会被挤掉,失去矿工资格,而符合矿工条件的新矿工到了下一个纪元会成为矿工。投票数每个纪元排列一次。 (3)拉黑:如果某个矿工在一个纪元(120 个区块)内没有出块,那么到了下一个纪元,该矿工就会被拉黑。 5.2、投票规则 (1)每 1 个月衰减 10%,按照 10 秒一个块进行设定; (2)10 秒一个块,1 小时为 360 块,1 天为 8640 块,30 天为 259200 块 (3)投票纪元为 120 个区块,但我们并不会在每次纪元切换时就进行衰减,而是在某笔投票 事务达到 1 个月区块总数后进行衰减,也就是说是按照 259200 的高度倍数进行衰减的。 (4)参与计算衰减的是有效的投票事务,如果已经撤销则不用计算。 (5)每一次 10%的衰减,是依据一开始的投票数的,比如一开始投票 1000 票,衰减后其权益为 1000-1000*10%=900,再次衰减则为 900-900*10%=810 而不是 900-100=800。 (6)注意对投票撤销的考虑,投票以及投票的撤销是可以连续进行的,因此投票并不总是有效的,当某笔投票撤销后,其实际投票权益则为 0,投票数也变为 0。 5.3、挖矿状态检查 浏览器访问:http://<节点 IP>:<端口>/votes/<帐户地址>,查看<帐户地址>被投票情况。 浏览器访问:http://<节点 IP>:<端口>/account/<帐户地址>,查看矿工帐户地址信息。 6、PostgreSQL 数据库优化 6.1、配置文件修改 配置文件为 pgsql 数据目录的 postgresql.conf 文件。比如示例 yml 文件中映射的目录/opt/wdc_pgsql。可以根据系统软硬件资源情况进行调整。详细内容请参考 https://www.postgresql.org/docs/10/runtime-config.html 修改配置文件后,需要重启数据库服务,即重启 pgsql 所对应的 docker 容器。另外,在制作 docker 镜像时,可以复制预先修改好的配置文件到镜像数据目录,从而使得新建的容器不使用默认的配置。 6.1.1常见修改项 数据库最大连接数:max_connections=500#默认值 100 共享缓冲区:shared_buffers = 256MB #默认值 128MB 最大缓存,这个数字对于独立的 pgsql 服务器而言应该足够大,比如 4G 的内存,可以设置为3.5G(437500) effective_cache_size = 10GB 增加 work_mem 有助于提高排序的速度 work_mem = 128MB 维护操作内存用量 maintenance_work_mem = 512MB 自动清理操作内存用量 autovacuum_work_mem = 256MB 6.1.2日志配置 配置日志记录的一个目的是记录查询较慢的 SQL 语句,进而优化数据库索引或者改进查询语句。典型的配置: log_destination = 'csvlog' # 日志输出目的地。Csvlog 便于导入 DB 进行分析。需要开启logging_collector。 logging_collector = on # 搜集日志到 csvlog 或 stderr log_directory = 'log' #日志目录。可以是绝对路径或PGDATA的相对路径 log_filename = 'postgresql.%H.log' # 日志文件名 log_truncate_on_rotation = on # 日志回滚,新建文件时清空同名新文件。对基于时间的回滚设置有效。 log_rotation_age = 2h #日志回滚周期 log_min_duration_statement = 5000#记录耗时大于等于该时长的 SQL 查询语句, 单位毫秒 log_duration = on #记录查询持续时间 注意: 日志文件可能增长较快,导致磁盘空间耗尽。注意观察、清理,并缩短回滚周期。 上面的设置,可以使日志文件数量固定下来,日志回滚时清空同名新文件,进而占用的磁盘空间会保持在较小的范围。避免无限增长,耗尽磁盘空间。 具体来说,每 2 个小时回滚日志,文件名格式为 postgresql.<小时>.log,对应的 csvlog 为postgresql.<小时>.csv。日志回滚时,准备写入的新日志文件如果存在,则先清空,然后开始写入。 6.2、数据库索引 使用客户端的 SQL 分析工具,或者执行 SQL 命令:explain <sql 语句>,查看 SQL 语句执行时的索引使用情况,进而优化数据库索引。 尤其是频繁查询大数据表的 SQL 语句,如果进行全表扫描,那么建立合适的索引,将显著提升查询效率。 6.3、数据库密码修改及数据安全 PostgreSQL DB 启动前,可以修改 yml 文件中的 DB 密码。PostgreSQL DB 容器启动后, 修改密码需要通过 DB 客户端连接 DB 后修改密码。 数据库遭到攻击破坏,不会影响钱包资金安全。只要保护好地址私钥以及钱包 keystore, 资金就是安全的。 7、程序日志管理 注意程序日志大小、磁盘空间占用情况。必要时清理。程序日志目录:参考 yml 示例文件,/opt/wdc_logs 8、一些维护操作 8.1、清理无效镜像 docker rmi `docker images | grep '<none>' | awk '{print $3}'` 8.2、查看docker 容器所使用的镜像ID 及名称 docker inspect <container ID>| grep Image 以此来确认容器使用了正确的镜像。 9、FAQ 9.1、no such file or directory 如 果 wdc_core 启 动 报 出 如 下 类 似 错 误 :standard_init_linux.go “no such file or directory” 说明 entry_point.sh 的换行符有问题,很可能是 Windows 格式 \r\n,需要转换为 Linux 格式 \n。 可执行命令:dos2unix entry_point.sh 或者使用其他工具转换。 10、RPC 接口与 SDK https://github.com/WisedomChainGroup/rpc-doc https://github.com/WisedomChainGroup/java-sdk 11、参考文档 https://docs.docker.com/ https://docs.docker.com/compose/ https://www.postgresql.org/docs/10/index.html 官网地址: www.wisdchain.com 区块浏览器地址: https://scan.wisdchain.com/index.html 开源代码库: https://github.com/WisedomChainGroup 请关注WDC官方平台动态: 微博:@WisdomChain智慧链 Twitter:@Wisdom_Chain Facebook:@WisdomChain Github:github.com/WisedomChainGroup —- 编译者/作者:智慧链技术社区 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Wisdomcore部署方法—Docker
2020-03-31 智慧链技术社区 来源:区块链网络
LOADING...
相关阅读:
- 炒币有两类人炒币有两类人2020-10-31
- 德国中央银行同意这个区块链项目2020-10-31
- 未来没有发达国家,只有数字化国家‖比特币也许是泡沫,但区块链一2020-10-31
- 在意大利机场发现非法采矿场2020-10-31
- 你的一键式挖矿专家——Pontos矿机新品发布会隆重举行2020-10-31