Deploy Hyperledger blockchain on Docker swarm
Blockchain
37
devops
39
White

Giaosucan viết ngày 05/03/2021

https://www.giaosucan.com/

Chia sẻ kiến thức theo cách bá đạo

alt text
Làm blockchain một thời gian mới nhận ra sai lầm tuổi trẻ khi thấy món này từ trước tới nay chủ yếu là chém gió demo chứ thực tế ứng dụng thì vô cùng mờ mịt, nên quyết định bỏ để sang làm món DevOps. Nhưng đời người đâu học được chữ ngờ, sau 3 năm rửa tay gác kiếm món blockchain thì lại có vụ cần làm, lại là demo tiếp. Tuy không interest nhưng đã có $ nhét vô mồm lại đang thời Covid đói rách thì nhắm mắt múc tất.

Sản phẩm demo là một hệ thống eKYC sử dụng blockchain Hyperledger. KYC là gì thì search Google sẽ có nhiều kết quả. Còn hiểu nhanh theo kiểu giaosucan’s blog thì đại loại là khi bạn ra ngân hàng gửi tiền tiết kiệm thì ngân hàng phải biết bạn là ai, nhà cửa quê quán ở đâu, để tránh trùng phải phần tử IS khủng bố. Thông tin của bạn như tên tuổi, ID, số điện thoại sẽ được lưu trên blockchain thay vì lưu database truyền thống.

Một mạng Blockchain Hyperledger thì có các thành phần sau là

Certificate Authority or CA dùng để quản lý user certificate như user registration, user enrollment
Peer là blockchain node dùng để lưu các transaction
Orderer để sắp xếp các transaction, tạo block mới trong chuỗi chain

alt text
Như vậy theo kiến trúc trên, 1 mạng BC cần deploy sẽ có 2 peer node 1 CA và 1 Orderer node. Mạng này được deploy from scratch trên Azure. Như vậy cần 4 con VM azure đặt tên là ekyc01, ekyc02, ekyc03, ekyc04

Do Hyperledger Fabric sử dụng docker nên có 2 cách để deploy mạng BC là dùng docker swarm và K8s Bài viết này hướng dẫn cách sử dụng docker swarm

Docker Swarm là một nhóm các máy chạy Docker và tập hợp lại với nhau thành một cluster. Các máy tham gia vào swarm được gọi là worker node. Các node này chỉ có khả năng cung cấp khả năng hoạt động chứ không có quyền quản lý các node khác

Step 1) Cài đặt docker swarm

Vì dùng docker nên trước tiên phải install docker lên từng VM

Install git: 
Install docker
Install docker compose
Install golang (Do chaincode của hyperledge sử dụng golang)
sudo apt-get install firewalld

Chú ý những port mà docker swarm sử dụng

TCP port 2377 for cluster management communications
TCP and UDP port 7946 for communication among nodes
UDP port 4789 for overlay network traffic
Do đó trên mỗi VM phải open firewall cho những pod này

firewall-cmd --permanent --zone=public --add-port=2377/tcp --add-port=7946/tcp --add-port=7946/udp --add-port=4789/udp
firewall-cmd --reload

Các components của Hyperledger được viết dưới dạng docker-compose file

Step 2) Setup docker swarm

Docker swarm hoạt động theo kiến trúc manager – worker nên cần setup một leader node trước
alt text
Ví dụ con ekyc02 là manager node, run lệnh dưới

docker swarm init

Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.

  To add a worker to this swarm, run the following command:

    docker swarm join --token <token> 172.18.2.5:2377

  To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Sau đó những VM còn lại run lệnh docker swarm join để join docker swarm. Nếu các VM đã join thành công có thể thấy kết quả như ở dưới

Step 3) Setup docker network

Do các docker container chạy trên các node khác nhau nên cần setup network để các docker container này kết nối với nhau

Docker network có nhiều dạng khác nhau như Host, bridge, overlay.

Bridge là dạng mặc định được dùng các container chạy trên cùng 1 Docker daemon host

Host là các container dùng chung host networking

Overlay dùng để kết nối nhiều docker daemon với nhau cho nên loại overlay được sử dụng trong trường hợp này

Tạo một network là fabcricnetwork có driver là overlay

docker network create --attachable --driver overlay fabricnetwork

cho phép một standalone container có thể attach vào network

Output như dưới là docker network được setup thành công
alt text

Bước tiếp theo là generate folder crypto-config & config bằng script cryptogen của fabric

Deploy các container

docker stack deploy -c ekyc-zookeeper.yml ekyc-zk
docker stack deploy -c ekyc-kafka.yml ekyc-kafka 
docker stack deploy -c ekyc-order.yml ekyc-orderer
docker stack deploy -c ekyc-couchdb.yml ekyc-couchdb
docker stack deploy -c ekyc-peer.yml ekyc-peer
docker stack deploy -c ekyc-cli.yml ekyc-cli
docker stack deploy -c ekyc-ca.yml ekyc-ca

Đây là các file docker compose tương tự như https://github.com/hyperledger/fabric-samples/blob/master/test-network/docker/docker-compose-test-net.yaml để deploy Hyperledger component

Có 1 điểm chú ý muốn docker container run trên VM nào thì thêm thuộc tính này ở trong docker-compose file

alt text

  placement:

        constraints:

          - node.hostname == ekyc01

Các container đã được deploy thành công

Trong trường hợp có lỗi có thể verify bằng logs

journalctl -u docker.service -n 30 | grep <service_id>

Bước cuối cùng là thực hiện các bước dưới bằng hyperledger cli

Tạo channel

peer channel create

Join peer vào channel

peer channel join

Install chain code vào peer và init chaincode trên từng peer

peer chaincode install
peer chaincode instantiate

Vậy là mạng BC đã được deploy thành công trên docker swarm, bạn có thể việc code để invoke chaincode function trong BC hyperledger

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Giaosucan

45 bài viết.
476 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
77 42
Part 1 http://www.giaosucan.com/2019/03/toiphongvanosilliconvalleynhunao.html Part 2 http://www.giaosucan.com/2019/03/phongvanosilliconphan2happ...
Giaosucan viết 2 năm trước
77 42
White
59 5
Bản quyền thuộc Fsoft Potato Tech Mag Giới thiệu series chuyện về kiến trúc Microservice từ thiết kế đển implementation Giaosucan's blog: Chia sẻ...
Giaosucan viết hơn 3 năm trước
59 5
White
33 3
Đón đọc những bài viết đặc sắc ở blog https://giaosucan.blogspot.com Lịch sử ra đời Những người làm trong ngành tài chính ngân hàng sẽ không xa lạ...
Giaosucan viết hơn 3 năm trước
33 3
Bài viết liên quan
White
11 5
Tạm xóa
Giaosucan viết 3 năm trước
11 5
White
11 2
Xin chào mọi người. Đây là phần 4 trong bài viết của mình về xây dựng 1 blockchain đơn giản với ngôn ngữ Go. Các bạn có thể có thể tham khảo 3 ph...
Trần Mỹ viết hơn 3 năm trước
11 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
45 bài viết.
476 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!