diff --git a/source/deployment/deployment-peer/src/main/resources/docs/imgs/browser.jpeg b/source/deployment/deployment-peer/src/main/resources/docs/imgs/browser.jpeg index 2cfb38a7..180367d8 100644 Binary files a/source/deployment/deployment-peer/src/main/resources/docs/imgs/browser.jpeg and b/source/deployment/deployment-peer/src/main/resources/docs/imgs/browser.jpeg differ diff --git a/source/deployment/deployment-peer/src/main/resources/docs/安装部署.MD b/source/deployment/deployment-peer/src/main/resources/docs/安装部署.MD index 28ea020d..75cd0502 100644 --- a/source/deployment/deployment-peer/src/main/resources/docs/安装部署.MD +++ b/source/deployment/deployment-peer/src/main/resources/docs/安装部署.MD @@ -1,5 +1,6 @@ # JDChain安装部署指南 +本部署指南基于JDChain1.0.0.RELEASE版本来构建。 ## 1. 部署环境 ### 1.1 系统部署结构 ![部署结构](imgs/structure.png) @@ -56,21 +57,21 @@ unzip jdchain-peer-$version.zip Peer打包程序解压完后的安装包结构如下: + bin - - keygen.sh - - ledger-init.sh - - startup.sh - - shutdown.sh + - keygen.sh + - ledger-init.sh + - startup.sh + - shutdown.sh + config - - init - + ledger-init.conf - + local.conf - + bftsmart.config(默认) - - keys - + %.priv - + %.pub - + %.pwd - - ledger-binding.conf - - application.properties + - init + + ledger.init + + local.conf + + bftsmart.config(默认) + - keys + + %.priv + + %.pub + + %.pwd + - ledger-binding.conf + - application.properties + docs + libs + system @@ -93,10 +94,10 @@ chmod 777 * Gateway节点打包程序为:jdchain-gateway-$version.tar.gz或jdchain-gateway-$version.zip,其解压完后的安装包结构如下: + bin - - startup.sh - - shutdown.sh + - startup.sh + - shutdown.sh + config - - gateway.conf + - gateway.conf + lib @@ -125,12 +126,12 @@ JDChain提供了创建用户的工具,可直接通过命令行生成一个新 **请将所有Peer节点都按照上述流程注册一个独立的用户,在实际生产环境中该过程可能由不同的参与方完成。** ### 2.3 账本初始化 -账本初始化是所有参与Peer节点进行共识,并生成初始化账本至数据库的过程。该过程需要所有节点共同参与,同时启动。 +账本初始化是所有参与Peer节点进行共识,并生成初始化账本至数据库的过程。该过程需要所有节点共同参与,**同时启动**。 #### 2.3.1 初始化配置 -*config/init* 目录下有三个配置文件需要修改:**local.conf** 、 **ledger-init.conf** 和 **bftsmart.config** 。 +*config/init* 目录下有三个配置文件需要修改:**local.conf** 、 **ledger.init** 和 **bftsmart.config** 。 + local.conf描述账本初始化的本地(即当前节点)配置; - + ledger-init.conf描述账本初始化过程中涉及到的其他参与Peer节点配置信息; + + ledger.init描述账本初始化过程中涉及到的其他参与Peer节点配置信息; + bftsmart.config为BFTSmart进行共识的相关配置。 ##### 2.3.1.1 local.conf配置 @@ -157,18 +158,11 @@ ledger.db.uri=rocksdb:///export/app/peer/rocks.db/rocksdb0.db #账本数据库的连接口令 ledger.db.pwd= - -#共识配置文件路径 -consensus.conf=../bftsmart.config - -#共识Providers配置 -#BftSmart共识Provider:com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider -consensus.service-provider=com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider ``` 其中local.parti.id从 **0** 开始编号,且不同Peer节点不能相同;local.parti.privkey为当前节点私钥,即 *config/keys/%.priv* 文件中的内容;其他参数根据实际环境进行配置。 -##### 2.3.1.2 ledger-init.conf配置 +##### 2.3.1.2 ledger.init配置 ```config #账本的种子;一段16进制字符,最长可以包含64个字符;可以用字符“-”分隔,以便更容易读取; ledger.seed=932dfe23-fe23232f-283f32fa-dd32aa76-8322ca2f-56236cda-7136b322-cb323ffe @@ -176,37 +170,49 @@ ledger.seed=932dfe23-fe23232f-283f32fa-dd32aa76-8322ca2f-56236cda-7136b322-cb323 #账本的描述名称;此属性不参与共识,仅仅在当前参与方的本地节点用于描述用途; #ledger.name= +#声明的账本创建时间;格式为 “yyyy-MM-dd HH:mm:ss.SSSZ”,表示”年-月-日 时:分:秒:毫秒时区“;例如:“2019-10-17 05:21:58.069+0800”,其中,+0800 表示时区是东8区 +created-time=2019-10-17 05:21:58.069+0800 + +#共识服务提供者;必须; +consensus.service-provider=com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider + +#共识服务的参数配置;必须; +#consensus.conf=/export/app/peer/config/init/bftsmart.config +consensus.conf=bftsmart.config + +#密码服务提供者列表,以英文逗点“,”分隔;必须; +crypto.service-providers=com.jd.blockchain.crypto.service.classic.ClassicCryptoService, \ +com.jd.blockchain.crypto.service.sm.SMCryptoService + #参与方的个数,后续以 cons_parti.id 分别标识每一个参与方的配置; cons_parti.count=4 -#第0个参与方的名称 -cons_parti.0.name=parti-0.com -#第0个参与方的公钥文件路径 +#第0个参与方的名称; +cons_parti.0.name= +#第0个参与方的公钥文件路径; cons_parti.0.pubkey-path= -#第0个参与方的公钥内容(由keygen工具生成),此参数优先于 pubkey-path 参数 -cons_parti.0.pubkey=endPsK36koyFr1D245Sa9j83vt6pZUdFBJoJRB3xAsWM6cwhRbna -#第0个参与方的账本初始服务的主机 +#第0个参与方的公钥内容(由keygen工具生成);此参数优先于 pubkey-path 参数; +cons_parti.0.pubkey= +#第0个参与方的账本初始服务的主机; cons_parti.0.initializer.host=127.0.0.1 -#第0个参与方的账本初始服务的端口 -cons_parti.0.initializer.port=17000 -#第0个参与方的账本初始服务是否开启安全连接 +#第0个参与方的账本初始服务的端口; +cons_parti.0.initializer.port=8800 +#第0个参与方的账本初始服务是否开启安全连接; cons_parti.0.initializer.secure=false - -#第1个参与方的名称 -cons_parti.1.name=parti-1.com -#第1个参与方的公钥文件路径 +#第1个参与方的名称; +cons_parti.1.name= +#第1个参与方的公钥文件路径; cons_parti.1.pubkey-path= -#第1个参与方的公钥内容(由keygen工具生成),此参数优先于 pubkey-path 参数 -cons_parti.1.pubkey=endPsK36sC5JdPCDPDAXUwZtS3sxEmqEhFcC4whayAsTTh8Z6eoZ -#第1个参与方的账本初始服务的主机 +#第1个参与方的公钥内容(由keygen工具生成);此参数优先于 pubkey-path 参数; +cons_parti.1.pubkey= +#第1个参与方的账本初始服务的主机; cons_parti.1.initializer.host=127.0.0.1 -#第1个参与方的账本初始服务的端口 -cons_parti.1.initializer.port=17010 -#第1个参与方的账本初始服务是否开启安全连接 +#第1个参与方的账本初始服务的端口; +cons_parti.1.initializer.port=8810 +#第1个参与方的账本初始服务是否开启安全连接; cons_parti.1.initializer.secure=false - ``` 账本初始化过程中,需要其他Peer节点的公钥信息进行验证及保存,因此每个节点都需要获取其他Peer节点的公钥信息至本地。配置中cons_parti.N.*****中的N需按照实际每个参与方定义的序号配置(该配置为local.conf中的local.parti.id)。其他参数根据实际环境进行配置。 @@ -214,14 +220,12 @@ cons_parti.1.initializer.secure=false ##### 2.3.1.1 bftsmart.config配置 ```config -system.block.txsize=15 - -system.block.maxdelay=500 - -system.server.0.pubkey=endPsK36koyFr1D245Sa9j83vt6pZUdFBJoJRB3xAsWM6cwhRbna system.server.0.network.host=127.0.0.1 system.server.0.network.port=16000 +system.server.1.network.host=127.0.0.1 +system.server.1.network.port=16010 + system.servers.num = 4 system.servers.f = 1 @@ -231,9 +235,6 @@ system.initial.view = 0,1,2,3 > 注意:上述只是将bftsmart.config文件中主要需要修改的参数显示,以方便进行相关说明,其他参数的修改可参考具体文件中的具体说明 参数具体说明如下: - + system.block.txsize:每个区块结块期望含交易数量; - + system.block.maxdelay:区块结块时最大时延(单位:毫秒),该参数与system.block.txsize符合优先发生原则; - + system.server.$n.pubkey:第n节点的公钥信息; + system.server.$n.network.host:第n个节点的域名; + system.server.$n.network.port:第n个节点的共识端口; + system.servers.num:共识节点总数; @@ -249,7 +250,7 @@ cd bin 执行命令之后,会在 *config* 目录下生成ledger-binding.conf文件,该文件即账本初始化生成的文件,Peer节点启动时需要依赖该文件。 > 1)注意:因为JDChain支持多账本形式,若config/ledger-binding.conf文件在初始化之前就存在的话,初始化操作后不会覆盖其中的内容,会以追加的方式写入。若第一次创建账本,建议先将该文件删除再进行初始化! -> 2)注意:Peer节点会定时检测ledger-binding.conf,有新账本加入时会自动进行更新,不需要重启Peer节点! +> 2)注意:Peer节点会定时检测ledger-binding.conf,有新账本加入时会自动进行更新,不需要重启Peer节点!目前默认时间为封5自动更新,即:每个小时的5/15/25/35/45/55分钟会执行; 账本初始化成功后,每个Peer节点对应的Rocksdb都会写入该账本相关的数据。 @@ -262,9 +263,9 @@ Peer节点启动依赖于 *config* 目录下ledger-binding.conf的配置,该 cd bin ./startup.sh ``` -> 1)注意:startup.sh命令中可修改启动端口,默认为:-p 17080; +> 1)注意:startup.sh命令中可修改启动端口,默认为:-p 7080; -> 2)注意:Peer节点会与账本中涉及到的参与方进行通信,当通信不成功(例如有节点尚未启动)时,会自动进行重试,因此多个Peer节点启动可不必完全同时进行。 +> 2)注意:Peer节点会与账本中涉及到的参与方进行通信,当通信不成功(例如有节点尚未启动)时,会自动进行重试,因此多个Peer节点启动可不必完全同时进行。目前默认设置为重试16次操作,每次间隔时间2秒。 ### 2.5 Gateway节点安装 GateWay(网关)节点可以认为是一个过滤节点,交易的提交及账本的查询都需要通过网关节点与Peer节点进行通信。 @@ -272,7 +273,7 @@ Gateway程序可独立部署,不需要依赖Peer节点,它的操作环境是 ```config #网关的HTTP服务地址; -http.host=127.0.0.1 +http.host=0.0.0.0 #网关的HTTP服务端口; http.port=8081 #网关的HTTP服务上下文路径,可选; @@ -292,15 +293,15 @@ peer.providers=com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider data.retrieval.url=http://192.168.151.39:10001 #默认公钥的内容(Base58编码数据); -keys.default.pubkey=endPsK36koyFr1D245Sa9j83vt6pZUdFBJoJRB3xAsWM6cwhRbna +keys.default.pubkey= #默认私钥的路径;在 pk-path 和 pk 之间必须设置其一; keys.default.privkey-path= #默认私钥的内容(加密的Base58编码数据);在 pk-path 和 pk 之间必须设置其一; -keys.default.privkey=177gjsj5PHeCpbAtJE7qnbmhuZMHAEKuMsd45zHkv8F8AWBvTBbff8yRKdCyT3kwrmAjSnY +keys.default.privkey= #默认私钥的解码密码; -keys.default.privkey-password=DYu3G8aGTMBW1WrTw76zxQJQU4DHLw9MLyy7peG4LKkY +keys.default.privkey-password= ``` -其中keys.default.%配置是网关的角色配置,目前暂不支持网关自定义角色,因此,网关可选择4个参与方的任何一个作为其配置(主要是密钥对)。 +其中keys.default.% 配置是网关的角色配置,目前暂不支持网关自定义角色,因此,网关可选择4个参与方的任何一个作为其配置(主要是密钥对)。 >注意:keys.default.privkey-password填写内容为*2.2章节*中生成的%.pwd文件中的内容! 启动网关节点只需要执行:startup.sh即可,参考命令: diff --git a/source/deployment/deployment-peer/src/main/resources/docs/安装部署.html b/source/deployment/deployment-peer/src/main/resources/docs/安装部署.html index 1d75f3c9..432e4f1e 100644 --- a/source/deployment/deployment-peer/src/main/resources/docs/安装部署.html +++ b/source/deployment/deployment-peer/src/main/resources/docs/安装部署.html @@ -1,571 +1,67 @@ - - - - - 安装部署 - - -

JDChain安装部署指南

-

1. 部署环境

-

1.1 系统部署结构

-

部署结构

-

JDChain有三类节点:Peer、网关和客户端。peer节点是区块链主节点,参与共识、账本操作等;网关节点(GateWay)与Peer节点通信,负责区块链浏览器及消息传递;客户端与网关通信,可以进行写入或查询账本等操作。

-

JDChain默认采用Rocksdb作为存储数据库,每个Peer节点与一个(或多个)Rocksdb实例连接,Rocksdb实例的数量与账本相关,不同Peer节点对应不同的Rocksdb实例。

-

JDChain也支持Redis作为其存储数据库,Redis数据库不必和Peer节点安装在同一服务器,只需要配置正确即可(后面配置会说到)。

-

JDChain默认共识机制采用的是BFTSmart,该共识算法要求最低四个共识节点,BFTSmart 对作恶节点的支持为:N = 3f+1,即在N个节点共识中可允许f个作恶节点,当节点数增加时可根据该公式进行配置。

-

本安装部署指南以四个节点为例进行说明。

+ +

JDChain安装部署指南

+

本部署指南基于JDChain1.0.0.RELEASE版本来构建。

+

1. 部署环境

+

1.1 系统部署结构

+

部署结构

+

JDChain有三类节点:Peer、网关和客户端。peer节点是区块链主节点,参与共识、账本操作等;网关节点(GateWay)与Peer节点通信,负责区块链浏览器及消息传递;客户端与网关通信,可以进行写入或查询账本等操作。

+

JDChain默认采用Rocksdb作为存储数据库,每个Peer节点与一个(或多个)Rocksdb实例连接,Rocksdb实例的数量与账本相关,不同Peer节点对应不同的Rocksdb实例。

+

JDChain也支持Redis作为其存储数据库,Redis数据库不必和Peer节点安装在同一服务器,只需要配置正确即可(后面配置会说到)。

+

JDChain默认共识机制采用的是BFTSmart,该共识算法要求最低四个共识节点,BFTSmart 对作恶节点的支持为:N = 3f+1,即在N个节点共识中可允许f个作恶节点,当节点数增加时可根据该公式进行配置。

+

本安装部署指南以四个节点为例进行说明。


-

1.2 服务器配置

-

1.2.1 硬件配置

-

为了更好的运行,JDChain推荐使用 Linux 操作系统,Peer节点自身运行对内存要求较低,但对于Rocksdb存储而言,其对运行环境有较高要求,以下为单Peer节点可正常运行 亿级交易 的参考指标:

+

1.2 服务器配置

+

1.2.1 硬件配置

+

为了更好的运行,JDChain推荐使用 Linux 操作系统,Peer节点自身运行对内存要求较低,但对于Rocksdb存储而言,其对运行环境有较高要求,以下为单Peer节点可正常运行 亿级交易 的参考指标:

-

1.2.2 软件配置

-

JDChain使用Java开发,其软件需求如下:

+

1.2.2 软件配置

+

JDChain使用Java开发,其软件需求如下:

-

注意:若数据库使用的Redis,则需要对应数据库服务器安装Redis,Redis版本要求>=3.x。

+

注意:若数据库使用的Redis,则需要对应数据库服务器安装Redis,Redis版本要求>=3.x。


-

2. 系统安装与配置

-

2.1 安装包结构

-

JDChain默认发布的安装包有两个,一个是Peer节点打包程序,一个是Gateway节点打包程序,两者默认都是用tar.gz(或zip)打包的。

-

2.1.1 Peer节点安装包

-

Peer节点打包程序为:jdchain-peer-$version.tar.gz或jdchain-peer-$version.zip,若是tar.gz压缩文件可通过tar命令解压(如下):

-
tar -xzvf jdchain-peer-$version.tar.gz
-

若是zip文件可通过unzip命令解压(如下):

-
unzip jdchain-peer-$version.zip
+

2. 系统安装与配置

+

2.1 安装包结构

+

JDChain默认发布的安装包有两个,一个是Peer节点打包程序,一个是Gateway节点打包程序,两者默认都是用tar.gz(或zip)打包的。

+

2.1.1 Peer节点安装包

+

Peer节点打包程序为:jdchain-peer-$version.tar.gz或jdchain-peer-$version.zip,若是tar.gz压缩文件可通过tar命令解压(如下):

+
tar -xzvf jdchain-peer-$version.tar.gz
+

若是zip文件可通过unzip命令解压(如下):

+
unzip jdchain-peer-$version.zip
-

注意:$version为JDChain发布的版本号

+

注意:$version为JDChain发布的版本号

-

Peer打包程序解压完后的安装包结构如下:

+

Peer打包程序解压完后的安装包结构如下:

+ +
+ \ No newline at end of file