【區塊鏈】BigChainDB docker安裝

如果餓了就吃,困了就睡,渴了就喝,人生就太無趣了


單節點安裝

1.環境準備

本人使用的是CentOS7 的虛擬機,安裝了docker和docker-compose工具。

2. 編輯docker-compose文件

創建並編輯文件

vim docker-compose.yml

編輯內容如下

version: '2.1'

services:
  mongodb:
    image: mongo:3.6
    ports:
      - "27017:27017"
    command: mongod
  bigchaindb:
    image: bigchaindb/bigchaindb
    depends_on:
      - mongodb
      - tendermint
    environment:
      BIGCHAINDB_DATABASE_BACKEND: localmongodb
      BIGCHAINDB_DATABASE_HOST: mongodb
      BIGCHAINDB_DATABASE_PORT: 27017
      BIGCHAINDB_SERVER_BIND: 0.0.0.0:9984
      BIGCHAINDB_WSSERVER_HOST: 0.0.0.0
      BIGCHAINDB_WSSERVER_ADVERTISED_HOST: bigchaindb
      BIGCHAINDB_TENDERMINT_HOST: tendermint
      BIGCHAINDB_TENDERMINT_PORT: 26657
    ports:
      - "9984:9984"
      - "9985:9985"
      - "26658:26658"
    healthcheck:
      test: ["CMD", "bash", "-c", "curl http://bigchaindb:9984 && curl http://tendermint:26657/abci_query"]
      interval: 3s
      timeout: 5s
      retries: 3
    #command: 'bigchaindb start'
  tendermint:
    image: tendermint/tendermint:0.22.8
    entrypoint: ''
    ports:
      - "26656:26656"
      - "26657:26657"
    command: sh -c "tendermint init && tendermint node --consensus.create_empty_blocks=false --proxy_app=tcp://bigchaindb:26658"

3. 運行BigchainDB節點

docker-compose up -d

運行成功後查看容器狀態,啓動成功會產生3個容器。如圖1:
在這裏插入圖片描述

多節點安裝

1. 準備節點

1.1 環境準備

準備四個節點的運行環境,本人安裝是使用的4個CentOS7的虛擬機環境,每個幾點環境需要安裝dockerdocker-compose工具。

1.2 獲取每個節點的IP

本人的四臺虛擬機的ip如下:

node0:192.168.85.147
node1:192.168.85.136
node2:192.168.85.137
node3:192.168.85.146

1.3 創建目錄

在每各節點都創建bigchaindb文件夾,如圖2:這是最終的bigchaindb文件夾結構,現在可以看一下,這些文件會在後面出現。

在這裏插入圖片描述

2. docker-compose

準備docker-compose文件,在bigchaindb目錄下創建docker-compose.yml

vim docker-compose.yml

編輯下面內容:

version: '2.1'

services:
  mongodb:
    image: mongo:3.6
    ports:
      - "27017:27017"
    command: mongod
  bigchaindb:
    image: bigchaindb/bigchaindb
    depends_on:
      - mongodb
      - tendermint
    environment:
      BIGCHAINDB_DATABASE_BACKEND: localmongodb
      BIGCHAINDB_DATABASE_HOST: mongodb
      BIGCHAINDB_DATABASE_PORT: 27017
      BIGCHAINDB_SERVER_BIND: 0.0.0.0:9984
      BIGCHAINDB_WSSERVER_HOST: 0.0.0.0
      BIGCHAINDB_WSSERVER_ADVERTISED_HOST: bigchaindb
      BIGCHAINDB_TENDERMINT_HOST: tendermint
      BIGCHAINDB_TENDERMINT_PORT: 26657
    ports:
      - "9984:9984"
      - "9985:9985"
      - "26658:26658"
    healthcheck:
      test: ["CMD", "bash", "-c", "curl http://bigchaindb:9984 && curl http://tendermint:26657/abci_query"]
      interval: 3s
      timeout: 5s
      retries: 3
    #command: 'bigchaindb start'
  tendermint:
    image: tendermint/tendermint:0.22.8
    volumes:
      - ./tmdata:/tendermint
    entrypoint: ''
    ports:
      - "26656:26656"
      - "26657:26657"
    command: sh -c "tendermint init && tendermint node --consensus.create_empty_blocks=false --proxy_app=tcp://bigchaindb:26658"

3. 下載 tendermint

因爲需要使用tendermint來生成配置文件,就是tmdata下的文件。所以需要下載編譯好的tendermint二進制文件,因爲BigchainDB需要使用的tendermint的0.22.8版本,所以下載0.22.8的二進制文件。

#下載二進制文件
wget https://github.com/tendermint/tendermint/releases/download/v0.22.8/tendermint_0.22.8_linux_amd64.zip
#解壓文件
unzip unzip tendermint_0.22.8_linux_amd64.zip
#檢查版本
./tendermint version

4. 生成配置文件

使用tendermint testnet來生成所有節點的配置文件,使用tendermint testnet -h查看命令詳細信息。

4.1 生成多個節點配置信息

命令默認生成4個節點的配置文件,如果需要更多節點的配置信息,在tendermint testnet命令後加-v,例:需要生成10個節點配置信息

tendermint testnet -v 10

4.2 配置連續的ip的配置信息

如果節點的ip是連續的,例:192.168.85.100~192.168.85.103

tendermint testnet starting-ip-address 192.168.85.100

這樣配置文件中的ip就是配置好的。

5. 修改配置文件

如果是按照4.2中的方法生成的配置文件,就直接跳過此步驟。
生成的配置文件會在當前文件夾下生成mytestnet文件。目錄如圖3:

在這裏插入圖片描述
將每一個config.toml文件進行修改,修改第93行,如圖4:將其中node0-node3中改成對應的ip

在這裏插入圖片描述

將各個config文件發送到各個節點bigchaindb/tmdata

scp -r /mytestnet/node0/ [email protected]:/root/bigchaindb/tmdata
scp -r /mytestnet/node1/ [email protected]:/root/bigchaindb/tmdata
scp -r /mytestnet/node2/ [email protected]:/root/bigchaindb/tmdata
scp -r /mytestnet/node3/ [email protected]:/root/bigchaindb/tmdata

6. 修改文件夾用戶組

因爲docker-compose.yml中掛載的文件夾bigchaindb/tmdata,如果不改變該文件夾的用戶組,啓動後,tendermint會報錯Permission denied,所以需要修改用戶組,每個節點都需要修改tmdata

chown -R 100 tmdata
chgrp -R 1000 tmdata

7. 啓動

每個節點都運行docker-compose up -d,使用docker ps查看啓動的容器,正常啓動會有3個容器。tendermint,mongodbbigchaindb,如圖5

在這裏插入圖片描述

7.1 檢查集羣啓動情況

訪問:http://192.168.85.147:26657/abci_info
返回信息如圖6:塊高爲1表示成功。

在這裏插入圖片描述

8. 測試

8.1 發送交易

選擇其中一個節點,發送交易,
發送POST交易:192.168.85.146:9984/api/v1/transactions?mode=async,發送輸入如下:

{
  "asset": {
    "data": {
      "msg": "Hello BigchainDB!"
    }
  },
  "id": "4957744b3ac54434b8270f2c854cc1040228c82ea4e72d66d2887a4d3e30b317",
  "inputs": [
    {
      "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCy4BR6gKaYT-tdyAGPPpknIqI4JYQQ-p2nCg3_9BfOI-15vzldhyz-j_LZVpqAlRmbTzKS-Q5gs7ZIFaZCA_UD",
      "fulfills": null,
      "owners_before": [
        "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
      ]
    }
  ],
  "metadata": {
    "sequence": 0
  },
  "operation": "CREATE",
  "outputs": [
    {
      "amount": "1",
      "condition": {
        "details": {
          "public_key": "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD",
          "type": "ed25519-sha-256"
        },
        "uri": "ni:///sha-256;PNYwdxaRaNw60N6LDFzOWO97b8tJeragczakL8PrAPc?fpt=ed25519-sha-256&cost=131072"
      },
      "public_keys": [
        "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
      ]
    }
  ],
  "version": "2.0"
}

8.2 查詢

在另一個節點查詢剛剛發送的交易,發送get請求:

http://192.168.85.147:9984/api/v1/assets/?search=Hello BigchainDB

查詢結果如下:比對剛纔的交易ID即可。

[
    {
        "data": {
            "msg": "Hello BigchainDB!"
        },
        "id": "4957744b3ac54434b8270f2c854cc1040228c82ea4e72d66d2887a4d3e30b317"
    }
]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章