Skip to content
forked from 0chain/blobber

A storage provider (blobber) interface to the blockchain and consumers of storage.

License

Notifications You must be signed in to change notification settings

hm90121/blobber

This branch is 1535 commits behind 0chain/blobber:staging.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

379405e · Jul 1, 2021
Jul 1, 2021
Mar 5, 2020
Jun 30, 2021
May 25, 2021
May 7, 2021
Jun 29, 2021
Jun 24, 2021
Mar 17, 2021
Jun 28, 2021
Nov 18, 2019
Mar 22, 2021
Oct 9, 2020
May 7, 2021
Jun 12, 2021
Mar 5, 2020
May 7, 2021

Repository files navigation

Blobber Setup

Table of Contents

Initial Setup

Directory Setup for Blobbers

In the git/blobber run the following command


$ ./docker.local/bin/blobber.init.setup.sh

Building and Starting the Nodes

  1. Setup a network called testnet0 for each of these node containers to talk to each other.

$ docker network create --driver=bridge --subnet=198.18.0.0/15 --gateway=198.18.0.255 testnet0

  1. Go to git/blobber directory to build containers using (skip this step if you want to use existing docker images)

$ ./docker.local/bin/build.blobber.sh

For Apple M1 chip builds:


$ ./docker.local/bin/build.blobber.sh -m1

  1. After building the container for blobber, go to Blobber1 directory (git/blobber/docker.local/blobber1) and run the container using
# For locally build images
$ ../bin/blobber.start_bls.sh

# For remote images
$ ../bin/p0blobber.start.sh

Note: Replace the localhost form docker.local/p0docker-compose.yml to your public IP if you are trying to connect to another network .

Troubleshooting

  1. Ensure the port mapping is all correct:

$ docker ps

This should display a container image blobber_blobber and should have the ports mapped like "0.0.0.0:5050->5050/tcp"

  1. When starting multiple blobbers, it could happen that blobbers are not being registered properly (not returned on zbox ls-blobbers).

Blobber registration takes sometime and adding at least 5 second wait before starting the next blobber usually avoids the issue.

  1. If unable to create new allocations as shown below.

zbox example

zbox newallocation --lock 0.5
Error creating allocation: transaction_not_found: Transaction was not found on any of the sharders

To fix this issue, the delegate_wallet configured on config/0chain_blober.yaml and config/0chain_validator.yaml must lock some tokens on the blobber. Through zbox, it can be done like the example below.

zbox sp-lock --blobber_id f65af5d64000c7cd2883f4910eb69086f9d6e6635c744e62afcfab58b938ee25 --tokens 0.5

Connect to other network

  • Your network connection depends on the block_worker url you give in the config/0chain_blobber/validator.yaml and 0chain_blobber.yaml config file.

block_worker: http://198.18.0.98:9091

This works as a dns service, You need to know the above url for any network you want to connect, Just replace it in the above metioned file.

For example: If you want to connect to one network


block_worker: http://one.devnet-0chain.net/dns

Miscellaneous

Cleanup

  1. Get rid of old unused docker resources:

$ docker system prune

  1. To get rid of all the docker resources and start afresh:

$ docker system prune -a

  1. Stop All Containers

docker stop $(docker ps -a -q)

  1. Remove All Containers

docker rm $(docker ps -a -q)

Minio

  • You can use the inbuild minio support to store old data on cloud

You have to update minio_config file with the cloud creds data, The file can found at docker.local/keys_config/minio_config.txt.

The following order is used for the content :


CONNECTION_URL

ACCESS_KEY_ID

SECRET_ACCESS_KEY

BUCKET_NAME

REGION

  • Your minio config file is then used in the docker-compose while starting the sharder node

--minio_file keysconfig/minio_config.txt

  • You can either update the setting in the same file which is given above or create a new one with you config and use that as

--minio_file keysconfig/your_new_minio_config_file.txt

**_Note: Do not forget to put the file in the same config folder OR mount your new folder.

  • Apart from private connection config, There are other options as well in the 0chain_blobber.yaml file to manage minio settings.

Sample config


minio:

# Enable or disable minio backup service

start: false

# The frequency at which the worker should look for files, Ex: 3600 means it will run every 3600 seconds

worker_frequency: 3600 # In Seconds

# Use SSL for connection or not

use_ssl: false

  • You can also tweak the cold storage setting depending how you want to decide which data to move to the cloud.

Sample config


cold_storage:

# Minimum file size to be considered for moving to cloud

min_file_size: 1048576 #in bytes

# Minimum time for which file is not updated or not used

file_time_limit_in_hours: 720 #in hours

# Number of files to be queried and processed at once

job_query_limit: 100

# Capacity in percentage after which the cloud backup should start work

max_capacity_percentage: 50

# Delete local copy once the file is moved to cloud

delete_local_copy: true

# Delete cloud copy if the file is deleted from the blobber by user/other process

delete_cloud_copy: true

About

A storage provider (blobber) interface to the blockchain and consumers of storage.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 95.8%
  • PLpgSQL 1.9%
  • Shell 1.3%
  • Other 1.0%