门外汉自学系列:[ 四、 普通节点增删 ]


#1

普通节点增删

增加节点

默认创建4个节点,需增加第5个节点(普通节点)参考下列指令

./env.sh ./scripts/create_cita_config.py append --chain_name “test-chain” --node “127.0.0.1:4004”
#添加新节点(普通节点),设置新端口号
/env.sh ./bin/cita setup test-chain/4
#初始化新节点配置文件
/daemon.sh ./bin/cita start test-chain/4
#启动新节点(普通节点)

检查新增节点的工作状态

检查服务进程

netstat -nutlp | grep ‘cita-network’
#查看 Network 微服务进程端口号4004

netstat -nutlp | grep ‘cita-jsonrpc’
#查看 RPC 微服务进程端口号1341

新增节点后检查 CITA 服务状态

curl -s -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“peerCount”,“params”:[],“id”:1}’ 127.0.0.1:1337 | python -m json.tool
#查看 CITA 节点总数量

Tips:
在单台主机部署4个共识节点的环境中,在该主机上新增普通节点后,新节点的数据会更新到所有共识节点的 network 微服务配置文件中,所以通过任何节点的 RPC 接口去查询节点数量都会增加;
普通节点在 CITA 服务中仅同步共识节点的数据,并不参与共识计算;所以只需要在任意一台共识节点的 network 微服务配置文件中添加普通节点的信息即可实现数据同步,但是仅可以在添加普通节点信息的共识节点 RPC 接口查询中看到节点数量增加;

curl -s -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“blockNumber”,“params”:[],“id”:1}’ 127.0.0.1:1337 | python -m json.tool
#查看共识节点的区块高度

curl -s -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“blockNumber”,“params”:[],“id”:1}’ 127.0.0.1:1341 | python -m json.tool
#查看普通节点的区块高度,由于所有节点需要区块高度一致,所以新增节点将会通过 P2P 网络同步旧的数据信息;

Tips:
普通节点仅同步区块数据,所以在 CITA 服务中,并不参与投票,此信息可在节点配置目录下的logs/cita-bft.log文件来核实;
新节点将会同步共识节点的数据,所以在刚开始查看新节点的区块高度时,会快速增长,直到数据同步完成后才会恢复正常的增长速度;

停止节点

./daemon.sh ./bin/cita stop test-chain/4

删除节点

进入到所有添加了新节点配置信息的共识节点文件目录下,找到 Network 微服务的network.toml文件,删除新增节点peers条目即可,例如:

vim network.toml

删除下列参数后保存退出:

[[peers]]
id_card = 4
ip = “127.0.0.1”
port = 4004

Tips:

  1. CITA中节点分为 普通节点 和 共识节点,普通节点可以通过修改各节点的配置network.toml停止通讯,共识节点需要管理员调用deleteNode(address)合约方法删除。
  2. 修改 network.toml 文件后 CITA的 cita-network 微服务会自动重新加载,不需要重启整个 CITA 服务。

:grinning: 很感谢您能够看到这里,如果文中的内容有描述不当,请您在本章节下方指出,我会尽快修改;