# 鍚姩鏀寔鏃х増鏈珼ocker_VM鐨勯摼 ## 閫氳繃绠$悊鍙板惎鍔ㄥ惎鐢―ocker铏氭嫙鏈虹殑閾� <a id='3.1.1'></a> ### 鐧诲綍 <img loading="lazy" src="../images/ManagementLogin.png" style="zoom:50%;" /> - 绉佹湁鍖栭儴缃叉湰骞冲彴鏃朵細鐢熸垚鐨勫搴旂殑admin璐﹀彿锛岄粯璁ゅ瘑鐮佷负a123456 <a id='3.1.2'></a> #### 鏂板缁勭粐璇佷功 <img loading="lazy" src="../images/ManagementAddOrgCert.png" style="zoom:50%;" /> - 濉啓缁勭粐ID鍜岀粍缁囧悕绉� - 缁勭粐鍜屽拰缁勭粐鍚嶇О涓嶈兘閲嶅 - 鏀寔鐢宠鍥藉瘑鍜岄潪鍥藉瘑涓ょ璇佷功銆� #### 鏂板鑺傜偣璇佷功 <img loading="lazy" src="../images/ManagementAddNodeCert.png" style="zoom:50%;" /> - 鐩墠鑺傜偣璇佷功瑙掕壊鍒嗕负鍏辫瘑鑺傜偣鍜屽悓姝ヨ妭鐐逛袱绉嶃€� - 閫氳繃濉啓鑺傜偣鍚嶇О銆佺粍缁囦俊鎭紝鑺傜偣瑙掕壊锛岀敵璇疯妭鐐硅瘉涔︺€� - 鏀寔鐢宠鍥藉瘑鍜岄潪鍥藉瘑涓ょ璇佷功銆� #### 鏂板鐢ㄦ埛璇佷功 <img loading="lazy" src="../images/ManagementAddUserCert.png" style="zoom:50%;" /> - 鐩墠鐢ㄦ埛璇佷功瑙掕壊鍒嗕负admin銆乧lient鍜宭ight涓夌銆� - 閫氳繃濉啓鐢ㄦ埛鍚嶇О銆佺粍缁囦俊鎭紝鐢ㄦ埛瑙掕壊鐢宠鐢ㄦ埛璇佷功銆� - 鏀寔鐢宠鍥藉瘑鍜岄潪鍥藉瘑涓ょ璇佷功銆� - 鍚堢害閮ㄧ讲闇€瑕佸搴旂殑绠$悊鍛樿瘉涔︼紝鎵€浠ラ渶瑕佺敵璇峰搴旂殑绠$悊鍛樼敤鎴� #### 鏂板缓鍖哄潡閾� <img loading="lazy" src="../images/ManagementAddChain2.png" style="zoom:50%;" /> <img loading="lazy" src="../images/ManagementAddChain3.png" style="zoom:50%;" /> - 閫夋嫨璇佷功妯″紡 - 閾鹃厤缃枃浠跺弬鏁拌瀹� - 姝ゅ鐢ㄤ簬鏂板閾鹃厤缃枃浠讹紝鐩墠鏀寔鑷畾涔夐摼鐨刬d銆佸悕绉般€佸尯鍧楁渶澶у閲忥紝鍑哄潡闂撮殧銆佷氦鏄撹繃鏈熸椂闀匡紝浠ュ強鍏辫瘑閰嶇疆銆� - 鐩墠鏀寔閰嶇疆TBFT銆丷AFT銆丼OLO銆丮AXBFT鍏辫瘑銆� - 鐢宠閾鹃厤缃枃浠跺墠锛岃鍏堢‘淇濓紝鎵€闇€鐨勭粍缁囧拰鑺傜偣璇佷功宸茬粡鐢宠/瀵煎叆鏈鐞嗗钩鍙般€� - 姝ゅ闇€瑕佸嬀閫塂ocker_VM - 鏀寔鍗曟満閮ㄧ讲鍜屽鏈洪儴缃诧紝璇锋纭~鍐欐墍瑕佷箣鍚庤閮ㄧ讲鍖哄潡閾捐妭鐐圭殑鏈哄櫒鎵€鍦ㄧ殑ip锛屽苟纭繚绔彛涓嶅啿绐併€� #### 涓嬭浇閮ㄧ讲閾� <img loading="lazy" src="../images/ManagementDownloadChain2.png" style="zoom:50%;" /> - 濡傚浘鎵€绀洪渶瑕佸厛涓嬭浇瀹夎Docker_VM鐨勭幆澧冧緷璧栵紝鐒跺悗鍐嶉儴缃插尯鍧楅摼銆� - 閮ㄧ讲鍖哄潡閾� - 涓嬭浇閾鹃厤缃互zip鍖呬负鍑嗭紝zip鍖呭寘鍚搴旂殑閾鹃厤缃枃浠跺拰閮ㄧ讲鑴氭湰 - 灏嗕笅杞界殑鍖呯Щ鍔ㄧ殑闇€瑕侀儴缃茬殑鏈哄櫒涓婂幓锛堝彲浠ヤ娇鐢╯cp杩涜绉诲姩锛� - 鎵ц`unzip`瑙e帇鎴恅release`鍖咃紝杩涘叆`release`鍖呮墽琛宍start.sh`杩涜鍚姩 #### 蹇€熻闃呴摼 <img loading="lazy" src="../images/ManagementSubscribe.png" style="zoom:50%;" /> - 閾鹃儴缃叉垚鍔熶箣鍚庡湪绠$悊鍙拌繘琛屽揩閫熻闃� #### 閮ㄧ讲/璋冪敤鍚堢害楠岃瘉閾炬槸鍚︽甯� 璁㈤槄鎴愬姛鍚庯紝鍙繘琛岄儴缃�/璋冪敤绀轰緥鍚堢害锛屼互妫€鏌ラ摼鍔熻兘鏄惁姝e父銆傞儴缃插悎绾︾殑浣跨敤鏁欑▼鍙瑙侊細[閮ㄧ讲绀轰緥鍚堢害](./閮ㄧ讲绀轰緥鍚堢害.md)銆� ## 閫氳繃鍛戒护琛屽惎鍔ㄥ惎鐢―ocker铏氭嫙鏈虹殑閾� ### 鐜渚濊禆 **鎿嶄綔绯荤粺** DockerVM瀹炵幇渚濊禆浜巆group锛岀洰鍓嶄粎鏀寔鍦↙inux绯荤粺涓嬮儴缃插拰杩愯DockerVM銆� **杞欢渚濊禆** docker锛�7zip 渚濊禆杞欢涓嬭浇锛� - docker锛氳鍙傜湅[https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/) - 7zip锛氳鍙傜湅[7zip瀹樼綉](https://sparanoid.com/lab/7z/) 鎷夊彇瀹樻柟Docker铏氭嫙鏈烘櫙璞★細 ```shell docker pull chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 ``` ### 鐢熸垚璇佷功骞跺垵濮嬪寲閰嶇疆 **鍚敤DockerVM** 鍦╟hainmaker涓惎鐢―ocker VM鏈変袱绉嶆柟寮忋€� **鏂瑰紡涓€:** [閫氳繃鍛戒护琛屽伐鍏峰惎鍔ㄩ摼](../recovery/閫氳繃鍛戒护琛屽伐鍏峰惎鍔ㄩ摼.md)锛屽湪鎵ц`prepare.sh`銆乣prepare_pk.sh`銆乣prepare_pwk.sh`鏃讹紝`enable docker vm` 閫夋嫨 YES ```shell enable docker vm (YES|NO(default)) ``` - 杩涘叆chainmaker-go/scripts鐩綍锛屾墽琛宲repare.sh鑴氭湰鐢熸垚鍗曢摼4鑺傜偣闆嗙兢閰嶇疆锛屽瓨浜庤矾寰刢hainmaker-go/build涓� - prepare_pk.sh鑴氭湰鏀寔鐢熸垚4/7/10/13/16鑺傜偣鍏閽ュ拰閰嶇疆 ```shell # 杩涘叆鑴氭湰鐩綍 $ cd ../scripts # 鏌ョ湅鑴氭湰甯姪 $ ./prepare.sh -h Usage: prepare.sh node_cnt(1/4/7/10/13/16) chain_cnt(1-4) p2p_port(default:11301) rpc_port(default:12301) vm_go_runtime_port(default:32351) vm_go_engine_port(default:22351) eg1: prepare.sh 4 1 eg2: prepare.sh 4 1 11301 12301 eg2: prepare.sh 4 1 11301 12301 32351 22351 # 鐢熸垚鍗曢摼4鑺傜偣闆嗙兢鐨勮瘉涔﹀拰閰嶇疆 ./prepare.sh 4 1 begin check params... begin generate certs, cnt: 4 input consensus type (0-SOLO,1-TBFT(default),3-MAXBFT,4-RAFT): input log level (DEBUG|INFO(default)|WARN|ERROR): enable vm go (YES|NO(default))YES vm go transport protocol (uds|tcp(default)) input vm go log level (DEBUG|INFO(default)|WARN|ERROR): config node total 4 begin generate node1 config... begin node1 chain1 cert config... begin node1 trust config... begin generate node2 config... begin node2 chain1 cert config... begin node2 trust config... begin generate node3 config... begin node3 chain1 cert config... begin node3 trust config... begin generate node4 config... begin node4 chain1 cert config... begin node4 trust config... # 鏌ョ湅鐢熸垚濂界殑鑺傜偣璇佷功鍜岄厤缃� $ tree -L 3 ../build/ ../build/ 鈹溾攢鈹€ backup 鈹偮犅� 鈹溾攢鈹€ backup_certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220816164215 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220816193731 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220816193745 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220817195010 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220819164151 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220822204421 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ crypto-config_20220823193308 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ crypto-config_20220823193419 鈹偮犅� 鈹溾攢鈹€ backup_config 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ config_20220823193425 鈹偮犅� 鈹斺攢鈹€ backup_release 鈹偮犅� 鈹溾攢鈹€ release_20220808210208 鈹偮犅� 鈹溾攢鈹€ release_20220809203122 鈹偮犅� 鈹溾攢鈹€ release_20220816193816 鈹偮犅� 鈹溾攢鈹€ release_20220817195117 鈹偮犅� 鈹斺攢鈹€ release_20220819164434 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ node1 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹偮犅� 鈹溾攢鈹€ node2 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹偮犅� 鈹溾攢鈹€ node3 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹偮犅� 鈹斺攢鈹€ node4 鈹偮犅� 鈹溾攢鈹€ certs 鈹偮犅� 鈹溾攢鈹€ chainconfig 鈹偮犅� 鈹溾攢鈹€ chainmaker.yml 鈹偮犅� 鈹斺攢鈹€ log.yml 鈹溾攢鈹€ crypto-config 鈹偮犅� 鈹溾攢鈹€ wx-org1.chainmaker.org 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ user 鈹偮犅� 鈹溾攢鈹€ wx-org2.chainmaker.org 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ user 鈹偮犅� 鈹溾攢鈹€ wx-org3.chainmaker.org 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹偮犅� 鈹斺攢鈹€ user 鈹偮犅� 鈹斺攢鈹€ wx-org4.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ ca 鈹偮犅� 鈹溾攢鈹€ node 鈹偮犅� 鈹斺攢鈹€ user 鈹溾攢鈹€ crypto_config.yml 鈹溾攢鈹€ pkcs11_keys.yml 鈹斺攢鈹€ release 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org1.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ data 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org1.chainmaker.org-20220819164205-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org2.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org2.chainmaker.org-20220819164205-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org3.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org3.chainmaker.org-20220819164205-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org4.chainmaker.org 鈹偮犅� 鈹溾攢鈹€ bin 鈹偮犅� 鈹溾攢鈹€ config 鈹偮犅� 鈹溾攢鈹€ lib 鈹偮犅� 鈹斺攢鈹€ log 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org4.chainmaker.org-20220819164205-x86_64.tar.gz 鈹斺攢鈹€ crypto-config-20220819164205.tar.gz ``` **鏂瑰紡浜�** 淇敼鑺傜偣閰嶇疆鐩綍涓嬬殑`chainmaker.yml`鏂囦欢锛坄enable`璁剧疆涓篳true`锛�: ```yaml vm: go: # 鏄惁鍚敤鏂扮増Golang瀹瑰櫒 enable: true ``` ### DockerVM閰嶇疆 **閰嶇疆淇℃伅璇存槑** chainmaker.yml 鏂囦欢鐩稿叧閰嶇疆濡備笅锛� ```yaml vm: go: # 鏄惁鍚敤鏂扮増Golang瀹瑰櫒 enable: true # 鏁版嵁鎸傝浇璺緞, 鍖呮嫭鍚堢害銆乻ock鏂囦欢锛坲ds锛� data_mount_path: ../data/wx-org1.chainmaker.org/go # 鏃ュ織鎸傝浇璺緞 log_mount_path: ../log/wx-org1.chainmaker.org/go # chainmaker鍜屽悎绾﹀紩鎿庝箣闂寸殑閫氫俊鍗忚锛堝彲閫塼cp/uds锛� protocol: tcp # 濡傛灉闇€瑕佽嚜瀹氫箟楂樼骇閰嶇疆锛岃灏唙m.yml鏂囦欢鏀惧叆dockervm_config_path涓紝浼樺厛绾э細chainmaker.yml > vm.yml > 榛樿閰嶇疆 # dockervm_config_path: /config_path/vm.yml # 鏄惁鍦ㄦ帶鍒跺彴鎵撳嵃鏃ュ織 log_in_console: false # docker鍚堢害寮曟搸鐨勬棩蹇楃骇鍒� log_level: DEBUG # 涓嬮潰涓や釜server鐨勬渶澶ф秷鎭彂閫佸ぇ灏�, 榛樿100MB max_send_msg_size: 100 # 涓嬮潰涓や釜server鐨勬渶澶ф秷鎭帴鏀跺ぇ灏�, 榛樿100MB max_recv_msg_size: 100 # 涓嬮潰涓や釜server鐨勬渶澶ц繛鎺ヨ秴鏃舵椂闂�, 榛樿10s dial_timeout: 10 # 鍚堢害寮曟搸鏈€澶氬惎鐢ㄧ殑鍘熷鍚堢害杩涚▼鏁帮紝榛樿涓�20锛堣法鍚堢害璋冪敤浼氶澶栨媺璧锋柊鐨勮繘绋嬶級 max_concurrency: 20 # 杩愯鏃舵湇鍔″櫒閰嶇疆 (涓庡悎绾﹀疄渚嬭繘绋嬩氦浜掞紝杩涜淇℃伅浜ゆ崲) runtime_server: # 绔彛鍙凤紝榛樿涓� 32351 port: 32351 # 鍚堢害寮曟搸鏈嶅姟鍣ㄩ厤缃� (涓巆hainmaker浜や簰锛岃繘琛屼氦鏄撹姹傘€佸悎绾﹁姹傜瓑浜や簰) contract_engine: # 鍚堢害寮曟搸鏈嶅姟鍣╥p, 榛樿涓� 127.0.0.1 host: 127.0.0.1 # 绔彛鍙凤紝榛樿涓� 22351 port: 22351 # 涓庡悎绾﹀紩鎿庢湇鍔″櫒鐨勬渶澶ц繛鎺ユ暟 max_connection: 5 ``` <span id="migration-docker_vm-configuration"></span> 鈿狅笍娉ㄦ剰锛氭棫鐗堟湰鐨勫悎绾︿笉鏀寔鍦ㄦ柊鐗圖ockerVM涓繍琛岋紝涓轰簡鍏煎鍘嗗彶鍚堢害锛屾垜浠敮鎸佸悓鏃惰繍琛屼袱涓狣ockerVM锛屾棫鐨凞ockerVM鐢ㄤ簬鎵ц鑰佺増鏈殑鍚堢害锛屾墍浠ュ湪*chainmaker.yml*涓湁涓ゅ鍏充簬DockerVM鐨勯厤缃」`vm:go`銆乣vm:docker_go`鍒嗗埆瀵规柊銆佹棫DockerVM杩涜閰嶇疆銆� 鏂版棫鐗堟湰鍚嶇О瀵圭収濡備笅琛細 | | 鏂扮増鏈� | 鏃х増鏈� | | -------------------------- | ---------------------------------------------- | ------------------------------------------------- | | 瀹樻柟闀滃儚鍚嶇О | chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 | chainmakerofficial/chainmaker-vm-docker-go:v2.3.0.1 | | chainmaker.yml涓搴旈厤缃」 | vm:go | vm:docker_go | | 鍚堢害鐗堟湰 | v2.3.0 | v2.2.1鍙婃洿浣庣増鏈� | 濡傛灉闇€瑕佸惎鍔�**鏃у悎绾﹀紩鎿庡鍣�**锛岄渶瑕佸皢涔嬪墠鐨勯厤缃縼绉诲埌`vm:docker_go`锛� ```yaml # Contract Virtual Machine(VM) configs vm: # Docker go virtual machine configuration docker_go: # Enable docker go virtual machine enable_dockervm: true # Mount point in chainmaker dockervm_mount_path: ../data/wx-org1.chainmaker.org/docker-go # Specify log file path dockervm_log_path: ../log/wx-org1.chainmaker.org/docker-go # Whether to print log at terminal log_in_console: true # Log level log_level: DEBUG # Unix domain socket open, used for chainmaker and docker manager communication uds_open: true # docker vm contract service host, default 127.0.0.1 docker_vm_host: 127.0.0.1 # docker vm contract service port, default 22351 docker_vm_port: 22451 # Grpc max send message size, Default size is 4, Unit: MB max_send_msg_size: 20 # Grpc max receive message size, Default size is 4, Unit: MB max_recv_msg_size: 20 # max number of connection created to connect docker vm service max_connection: 5 ``` 鍚敤鏃х増DockerVM鏃讹紝閰嶇疆杩佺Щ瀵圭収濡備笅鍥撅細 <img loading="lazy" src="../images/DockerVM_Update_Config.png" style="width:1024px;" /> **閫氳繃閰嶇疆搴熷純鏃у悎绾︾殑瀹夎鎴栧崌绾э紝鍙娇鐢ㄦ柊鍚堢害** 濡傛灉甯屾湜搴熷純鏃у悎绾︾殑瀹夎鎴栧崌绾э紝鍙娇鐢ㄦ柊鍚堢害锛岃娣诲姞鎴栦慨鏀逛笅闈㈢殑閰嶇疆锛� ```yaml # Contract Virtual Machine(VM) configs vm: # Docker go virtual machine configuration docker_go: # Grpc max receive message size, Default size is 4, Unit: MB disable_install: true # max number of connection created to connect docker vm service disable_upgrade: true ``` **楂樼骇閰嶇疆** 濡傛灉甯屾湜浣跨敤鍚堢害寮曟搸楂樼骇閰嶇疆锛岄渶瑕侀厤缃甡vm:go`涓媊dockervm_config_path`涓厤缃枃浠讹紝閰嶇疆鏂囦欢妯℃澘濡備笅锛� ```yaml ########### RPC ########### rpc: chain_rpc_protocol: 1 # chain rpc protocol, 0 for unix domain socket, 1 for tcp(default) chain_host: 127.0.0.1 # chain tcp host chain_rpc_port: 22351 # chain rpc port, valid when protocol is tcp sandbox_rpc_port: 32351 # sandbox rpc port, valid when protocol is tcp max_send_msg_size: 100 # max send msg size(MiB) max_recv_msg_size: 100 # max recv msg size(MiB) server_min_interval: 60s # server min interval connection_timeout: 5s # connection timeout time server_keep_alive_time: 60s # idle duration before server ping server_keep_alive_timeout: 20s # ping timeout ########### Process ########### process: # max original process num, # max_call_contract_process_num = max_original_process_num * max_contract_depth (defined in protocol) # max_total_process_num = max_call_contract_process_num + max_original_process_num max_original_process_num: 20 exec_tx_timeout: 8s # process timeout while busy waiting_tx_time: 200ms # process timeout while tx completed (busy -> idle) release_rate: 30 # percentage of idle processes released periodically in total processes (0-100) release_period: 10m # period of idle processes released periodically in total processes ########### Log ########### log: contract_engine: level: "info" console: true sandbox: level: "info" console: true ########### Pprof ########### pprof: contract_engine: enable: false port: 21215 sandbox: enable: false port: 21522 ########### Contract ########### contract: max_file_size: 20480 # contract size(MiB) ``` **鈿狅笍娉ㄦ剰锛�** 鍦ㄥ鍣ㄥ惎鍔ㄨ剼鏈腑锛宍max_concurrency`锛堟渶澶у惎鐢ㄧ殑杩涚▼鏁伴噺锛夐粯璁や负`20`锛堣法鍚堢害璋冪敤浼氶澶栨媺璧锋柊鐨勮繘绋嬶級銆� 濡傛灉鏄湪鐢熶骇鐜涓嬶紝寤鸿鏍规嵁cpu鏍告暟閰嶇疆杩欎笁涓弬鏁般€� | | 8C CPU | 16C CPU | 32C CPU | | --------------- | ------ | ------- | ------- | | max_concurrency | 20 | 100 | 1500 | 濡傛灉鏈夎緝澶氳法鍚堢害璋冪敤浜ゆ槗锛岃鏍规嵁璺ㄥ悎绾﹁皟鐢ㄧ殑娣卞害鎸夋瘮渚嬪噺灏慲max_concurrency`鐨勫€硷紝渚嬪32鏍哥郴缁熶笅锛屽鏋滄湁杈冨涓ゅ眰璺ㄥ悎绾﹁皟鐢紝鍒檂max_concurrency`鍊煎缓璁涓篳750锛�1500/2锛塦銆� 濡傛灉浣跨敤鑴氭湰鍚姩锛岃鎸夐渶淇敼鑴氭湰閲岀殑鍙傛暟閰嶇疆銆� ### 缂栬瘧鍜屽畨瑁呭寘鍒朵綔 - 鐢熸垚璇佷功锛坧repare.sh鑴氭湰锛夊悗鎵цbuild_release.sh鑴氭湰锛屽皢缂栬瘧chainmaker-go妯″潡锛屽苟鎵撳寘鐢熸垚瀹夎锛屽瓨浜庤矾寰刢hainmaker-go/build/release涓� ```shell $ ./build_release.sh $ tree ../build/release/ ../build/release/ 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org1.chainmaker.org-20220823193812-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org2.chainmaker.org-20220823193812-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org3.chainmaker.org-20220823193812-x86_64.tar.gz 鈹溾攢鈹€ chainmaker-v2.3.0-wx-org4.chainmaker.org-20220823193812-x86_64.tar.gz 鈹斺攢鈹€ crypto-config-20220823193812.tar.gz ``` ### 鍚屾椂鍚姩閾惧拰DockerVM **鍚姩** - 鎵цcluster_quick_start.sh鑴氭湰锛屼細瑙e帇鍚勪釜瀹夎鍖咃紝璋冪敤bin鐩綍涓殑start.sh鑴氭湰锛屽惎鍔╟hainmaker鑺傜偣锛屽苟鎷夎捣鑺傜偣闇€瑕佺殑DockerVM瀹瑰櫒 ```shell $ ./cluster_quick_start.sh normal ``` **鏌ョ湅鑺傜偣鏄惁瀛樺湪** - 鏌ョ湅杩涚▼ ```shell $ ps -ef|grep chainmaker | grep -v grep 2058348 1 4 19:40 pts/5 00:00:00 ./chainmaker start -c ../config/wx-org1.chainmaker.org/chainmaker.yml 2059604 1 3 19:40 pts/5 00:00:00 ./chainmaker start -c ../config/wx-org2.chainmaker.org/chainmaker.yml 2060801 1 4 19:40 pts/5 00:00:00 ./chainmaker start -c ../config/wx-org3.chainmaker.org/chainmaker.yml 2062057 1 5 19:40 pts/5 00:00:00 ./chainmaker start -c ../config/wx-org4.chainmaker.org/chainmaker.yml ``` - 鏌ョ湅绔彛 ```shell $ netstat -lptn | grep 1230 tcp6 0 0 :::12301 :::* LISTEN 2058348/./chainmake tcp6 0 0 :::12302 :::* LISTEN 2059604/./chainmake tcp6 0 0 :::12303 :::* LISTEN 2060801/./chainmake tcp6 0 0 :::12304 :::* LISTEN 2062057/./chainmake ``` - 鏌ョ湅DockerVM瀹瑰櫒 ```shell $ docker ps | grep "chainmakerofficial/chainmaker-vm-engine:v2.3.0.1" 0955ccdb6ebc chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 "/bin/startvm" 4 minutes ago Up 4 minutes VM-GO-wx-org4.chainmaker.org b48bbb69e204 chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 "/bin/startvm" 4 minutes ago Up 4 minutes VM-GO-wx-org3.chainmaker.org 727adbb76c58 chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 "/bin/startvm" 4 minutes ago Up 4 minutes VM-GO-wx-org2.chainmaker.org 2c944fb3a1d9 chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 "/bin/startvm" 4 minutes ago Up 4 minutes VM-GO-wx-org1.chainmaker.org ``` - 鏌ョ湅鏃ュ織 ```shell $ cat ../build/release/*/bin/panic.log $ cat ../build/release/*/log/system.log $ cat ../build/release/*/log/system.log |grep "ERROR\|put block\|all necessary" ``` ### 鐙珛閮ㄧ讲DockerVM铏氭嫙鏈� **棣栧厛鍘籤./build/release`璺緞涓嬭В鍘嬪悇涓妭鐐硅瘉涔﹀強閰嶇疆鐨刯ar鍖�:** ```shell tar -zxvf chainmaker-v2.3.0-wx-org4.chainmaker.org-20220824115035-x86_64.tar.gz ``` **鍚姩鑺傜偣1闇€瑕佺殑DockerVM** - 浣跨敤*docker-vm-standalone-start.sh*鑴氭湰鍚姩DockerVM ```shell $ ./docker-vm-standalone-start.sh input path to cache contract files(must be absolute path, default:'./docker-go'): /home/data/wx-org1.chainmaker.org/go contracts path does not exist, create it or not(y|n): y input log path(must be absolute path, default:'./log'): /home/log/wx-org1.chainmaker.org/go log path does not exist, create it or not(y|n): y input log level(DEBUG|INFO(default)|WARN|ERROR): DEBUG input expose port(default 22351): 22351 input runtime port(default 32351): 32351 input container name(default 'chainmaker-docker-vm'): VM-GO-wx-org1.chainmaker.org # 涓嶄娇鐢ㄩ厤缃枃浠跺惎鍔―ockerVM锛屽拷鐣ヨ椤� input vm config file path(use default config(default)): docker-vm config is nil, use default config start docker vm container ``` - 浣跨敤Docker鍛戒护鍚姩 ```shell $ docker run -itd \ --net=host \ -v "/home/data/wx-org1.chainmaker.org/go":/mount \ -v "/home/log/wx-org1.chainmaker.org/go":/log \ -e CHAIN_RPC_PROTOCOL="1" \ -e CHAIN_RPC_PORT="22351" \ -e SANDBOX_RPC_PORT="32351" \ -e MAX_SEND_MSG_SIZE="100" \ -e MAX_RECV_MSG_SIZE="100" \ -e MAX_CONN_TIMEOUT="10" \ -e MAX_ORIGINAL_PROCESS_NUM="20" \ -e DOCKERVM_CONTRACT_ENGINE_LOG_LEVEL="DEBUG" \ -e DOCKERVM_SANDBOX_LOG_LEVEL="DEBUG" \ -e DOCKERVM_LOG_IN_CONSOLE="false" \ --name VM-GO-wx-org1.chainmaker.org \ --privileged chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 \ > /dev/null ``` **鐒跺悗鍚姩鑺傜偣1** ```shell $ ./start.sh -f alone ``` **鏌ョ湅鑺傜偣鍜屽鍣ㄦ槸鍚﹀凡缁忓缓绔嬮摼鎺�** ```shell $ cat /home/log/wx-org1.chainmaker.org/go/go.log |grep "Chain RPC Service" ``` 鎸夌収涓婅堪姝ラ渚濇鍚姩鍓╀綑鑺傜偣銆� ### 浣跨敤楂樼骇閰嶇疆鐙珛閮ㄧ讲DockerVM **楂樼骇閰嶇疆** 濡傛灉甯屾湜浣跨敤鍚堢害寮曟搸楂樼骇閰嶇疆锛岄渶瑕侀厤缃甡vm:go`涓媊dockervm_config_path`楂樼骇閰嶇疆鏂囦欢璺緞锛岃繖閲屾垜浠妸鑺傜偣1鐨凞ockerVM楂樼骇閰嶇疆鏂囦欢*vm.yml*鏀剧疆鍦╜/home/config_path/wx-org1.chainmaker.org`锛屽湪*chainmaker.yml*涓搴旂殑閰嶇疆濡備笅锛� ```yaml # Contract Virtual Machine(VM) configs vm: # Golang runtime in docker container go: ... # If use a customized VM configuration file, supplement it; else, do not configure # Priority: chainmaker.yml > vm.yml > default settings dockervm_config_path: /home/config_path/wx-org1.chainmaker.org/vm.yml ... ``` 閰嶇疆鏂囦欢妯℃澘濡備笅锛� ```yaml ########### RPC ########### rpc: chain_rpc_protocol: 1 # chain rpc protocol, 0 for unix domain socket, 1 for tcp(default) chain_host: 127.0.0.1 # chain tcp host chain_rpc_port: 22351 # chain rpc port, valid when protocol is tcp sandbox_rpc_port: 32351 # sandbox rpc port, valid when protocol is tcp max_send_msg_size: 100 # max send msg size(MiB) max_recv_msg_size: 100 # max recv msg size(MiB) server_min_interval: 60s # server min interval connection_timeout: 5s # connection timeout time server_keep_alive_time: 60s # idle duration before server ping server_keep_alive_timeout: 20s # ping timeout ########### Process ########### process: # max original process num, # max_call_contract_process_num = max_original_process_num * max_contract_depth (defined in protocol) # max_total_process_num = max_call_contract_process_num + max_original_process_num max_original_process_num: 20 exec_tx_timeout: 8s # process timeout while busy waiting_tx_time: 200ms # process timeout while tx completed (busy -> idle) release_rate: 30 # percentage of idle processes released periodically in total processes (0-100) release_period: 10m # period of idle processes released periodically in total processes ########### Log ########### log: contract_engine: level: "info" console: true sandbox: level: "info" console: true ########### Pprof ########### pprof: contract_engine: enable: false port: 21215 sandbox: enable: false port: 21522 ########### Contract ########### contract: max_file_size: 20480 # contract size(MiB) ``` **浣跨敤楂樼骇閰嶇疆鍚姩鑺傜偣闇€瑕佺殑DockerVM** - 浣跨敤*docker-vm-standalone-start.sh*鑴氭湰鍚姩DockerVM ```shell $ ./docker-vm-standalone-start.sh input path to cache contract files(must be absolute path, default:'./docker-go'): /home/data/wx-org1.chainmaker.org/go contracts path does not exist, create it or not(y|n): y input log path(must be absolute path, default:'./log'): /home/log/wx-org1.chainmaker.org/go log path does not exist, create it or not(y|n): y ## 浣跨敤閰嶇疆鏂囦欢锛屽拷鐣ヨ椤� input log level(DEBUG|INFO(default)|WARN|ERROR): ## 浣跨敤閰嶇疆鏂囦欢锛屽拷鐣ヨ椤� input expose port(default 22351): ## 浣跨敤閰嶇疆鏂囦欢锛屽拷鐣ヨ椤� input runtime port(default 32351): input container name(default 'chainmaker-docker-vm'): VM-GO-wx-org1.chainmaker.org input vm config file path(use default config(default)): /home/config_path/wx-org1.chainmaker.org/vm.yml start docker vm container ``` - 浣跨敤Docker鍛戒护鍚姩DockerVM ```shell $ docker run -itd \ --net=host \ -v "/home/data/wx-org1.chainmaker.org/go":/mount \ -v "/home/log/wx-org1.chainmaker.org/go":/log \ --name VM-GO-wx-org1.chainmaker.org \ --privileged chainmakerofficial/chainmaker-vm-engine:v2.3.0.1 \ > /dev/null ``` **鍚姩鑺傜偣** ```shell $ ./start.sh -f alone ``` **鏌ョ湅鑺傜偣鏄惁鍜孌ockerVM宸茬粡寤虹珛杩炴帴** ```shell $ cat /home/log/wx-org1.chainmaker.org/go/go.log |grep "Chain RPC Service" ``` 鎸夌収涓婅堪姝ラ渚濇鍚姩鍓╀綑鑺傜偣銆� ### 鏈湴閮ㄧ讲鐨勫仠姝� 濡傛灉鏄€氳繃`./cluster_quick_start.sh`鍚屾椂鍚姩鐨勮妭鐐瑰拰铏氭嫙鏈猴紝鍙互閫氳繃瀵瑰簲鐨剆top鑴氭湰鍚屾椂鍋滄閾惧拰DockerVM瀹瑰櫒锛� ```shell $ ./cluster_quick_stop.sh ``` 濡傛灉鍚屾椂闇€瑕佹竻闄ゆ墍鏈夐摼鏁版嵁鍙互浣跨敤锛� ```shell $ ./cluster_quick_stop.sh clean ``` 鐢变簬DockerVM鍐呬娇鐢ㄥ鍣ㄥ唴鐨剅oot鐢ㄦ埛鍚姩铏氭嫙鏈烘湇鍔★紝鍥犳鏃ュ織鍜岀紦瀛樻枃浠朵篃灞炰簬root鐢ㄦ埛锛坲id=0锛夈€傚鏋滀互闈瀝oot鐢ㄦ埛鍚姩鐨勭▼搴忥紝娓呴櫎鏁版嵁鏃跺彲鑳戒細鎶ラ敊鎻愮ず缂哄皯鏂囦欢璁块棶鐨勬潈闄愶紝闇€瑕佷互root鏉冮檺鍒犻櫎鏁版嵁锛屾垨鑰呬娇鐢╗userns-remap](https://docs.docker.com/engine/security/userns-remap/)鐨勫姛鑳藉皢瀹瑰櫒閲岀敤鎴锋槧灏勬垚鏅€氱敤鎴枫€� ### 鐙珛閮ㄧ讲鐨勫仠姝� **棣栧厛鍏抽棴閾捐妭鐐�** ```shell $ ./stop.sh alone ``` **鐒跺悗鍏抽棴璇ヨ妭鐐瑰搴旂殑铏氭嫙鏈�** ```shell $ docker stop VM-GO-wx-org1.chainmaker.org ``` ## 鍚堢害鐨勫畨瑁呬笌璋冪敤 鍚堢害鐨勫畨瑁呬笌璋冪敤璇峰弬鑰冿細[浣跨敤Golang杩涜鏅鸿兘鍚堢害寮€鍙慮(./浣跨敤Golang杩涜鏅鸿兘鍚堢害寮€鍙�.md)