Geth多臺電腦搭建集羣網絡

上篇博客介紹了在一臺電腦上配置多個geth節點,同時再最後也有個問題,多臺電腦之間連接沒有成功,後來多方研究之後,搭建成功了。防火牆沒關!!!
Ubuntu系統關閉防火牆命令:sudo ufw disable

現在三臺電腦:電腦一 219.216.65.127(Ubuntu)、電腦二 219.216.65.139(Windows)、電腦三 219.216.64.144(Ubuntu)

三臺電腦上的genesis.json文件要相同,創建一樣的創世區塊;然後networkid要相同,屬於同一個網絡。genesis.json文件如下:

{
  "nonce": "0x0000000000000042",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x00",
  "gasLimit": "0x80000000",
  "difficulty": "0x01",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {     }
}

好了,現在來在三臺電腦上各自創建一個節點

電腦一

//創建創世區塊
$ geth --datadir ~/ether/n1 init genesis.json

# 啓動console
$ geth --identity "hello" --datadir ~/ether/n1 --port 30301 --rpcport 8101 --networkid 12345 console 2>> ~/ether/n1/geth.log

啓動成功,獲取節點信息,方便後面連接。

> admin.nodeInfo
{
  enode: "enode://2c196b02b23598426f3915dbd7a1e8e178b067b3e9921af6849e42027ec41f73f6febc27b52da7e77c0edf69412b0231b886904c750167de335ead2798de12ff@[::]:30301",
  id: "2c196b02b23598426f3915dbd7a1e8e178b067b3e9921af6849e42027ec41f73f6febc27b52da7e77c0edf69412b0231b886904c750167de335ead2798de12ff",
  ip: "::",
  listenAddr: "[::]:30301",
  name: "Geth/v1.4.5-stable-a269a713/linux/go1.4.2/hello",
  ports: {
    discovery: 30301,
    listener: 30301
  },
  protocols: {
    eth: {
      difficulty: 5290384,
      genesis: "0x6099b65e564bd511f49e8f39ba27b6a68b6b78fd1481592257f06bbf93abe624",
      head: "0x337f2059a1a6d82aee1afba91828d86a8a3b6f85d83b8cb2f8a9210af3b29c1c",
      network: 12345
    }
  }
}

同樣地,在電腦二、三上創建創世區塊,啓動console,獲取它們的節點信息,然後在電腦一上連接另外兩臺電腦上的節點。

電腦二的enode:

"enode://54b7b1dccbe37148cda6e0c9889d23ffb8e2efc905f3c2d001cd66b3b513210a4a426706bab795d83d0c236b9b1647f46947d86c48ac8faf7f802aff318c4aa1@[::]:30301"

電腦三的enode:

"enode://07954219f1a52acfa7562ac841e77860505bb6f6cc948bc540b94326606679d33e805a21b21cb105eaf58f449b0acc84893560919afee00bbc01b8a3fc0213af@[::]:30301"

電腦一連接電腦二和電腦三:

>admin.addPeer("enode://54b7b1dccbe37148cda6e0c9889d23ffb8e2efc905f3c2d001cd66b3b513210a4a426706bab795d83d0c236b9b1647f46947d86c48ac8faf7f802aff318c4aa1@219.216.65.139:30301")

>admin.addPeer("enode://07954219f1a52acfa7562ac841e77860505bb6f6cc948bc540b94326606679d33e805a21b21cb105eaf58f449b0acc84893560919afee00bbc01b8a3fc0213af@219.216.64.144:30301")

現在可以看見連接的數量:

> net.peerCount
2
> admin.peers
[{
    caps: ["eth/61", "eth/62", "eth/63"],
    id: "07954219f1a52acfa7562ac841e77860505bb6f6cc948bc540b94326606679d33e805a21b21cb105eaf58f449b0acc84893560919afee00bbc01b8a3fc0213af",
    name: "Geth/v1.4.5-stable-a269a713/linux/go1.6.2/hello",
    network: {
      localAddress: "219.216.65.127:30301",
      remoteAddress: "219.216.64.144:36332"
    },
    protocols: {
      eth: {
        difficulty: 5290384,
        head: "337f2059a1a6d82aee1afba91828d86a8a3b6f85d83b8cb2f8a9210af3b29c1c",
        version: 63
      }
    }
}, {
    caps: ["eth/61", "eth/62", "eth/63"],
    id: "54b7b1dccbe37148cda6e0c9889d23ffb8e2efc905f3c2d001cd66b3b513210a4a426706bab795d83d0c236b9b1647f46947d86c48ac8faf7f802aff318c4aa1",
    name: "Geth/v1.4.5-stable/windows/go1.6.2/hello",
    network: {
      localAddress: "219.216.65.127:30301",
      remoteAddress: "219.216.65.139:50911"
    },
    protocols: {
      eth: {
        difficulty: 5290384,
        head: "337f2059a1a6d82aee1afba91828d86a8a3b6f85d83b8cb2f8a9210af3b29c1c",
        version: 63
      }
    }
}]

現在可以看見兩個節點都連接成功。主要是防火牆的問題!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章