Skip to content

Commit a5ee709

Browse files
author
Micah Young
committed
Simplify by using HTTP based service discovery
1 parent 9c18f37 commit a5ee709

15 files changed

+95
-102
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
deploy/
2+
quorum-examples/

README.md

+24-40
Original file line numberDiff line numberDiff line change
@@ -52,44 +52,16 @@
5252
cp -r quorum-pcf-7nodes/run-scripts/* deploy/
5353
```
5454

55-
1. Create an empty user-provided-service for the apps
55+
1. Push all apps, unstarted
5656
```bash
57-
cf create-user-provided-service ip-service -p '{}'
58-
```
59-
60-
1. Deploy the bootnode
61-
```bash
62-
cf push bootnode -p deploy/ -f quorum-pcf-7nodes/manifests/bootnode-manifest.yml
63-
```
64-
65-
1. Update the service with the bootnode's IP
66-
```bash
67-
cf update-user-provided-service ip-service -p "{
68-
\"BOOTNODE_IP\": \"$(cf ssh bootnode -c "hostname --ip-address")\"
69-
}"
70-
```
71-
72-
1. Deploy node-1
73-
```
74-
cf push node-1 -p deploy/ -f quorum-pcf-7nodes/manifests/node1-manifest.yml
75-
```
76-
77-
1. Update the service with the bootnode's and node-1's IPs
78-
```bash
79-
cf update-user-provided-service ip-service -p "{
80-
\"BOOTNODE_IP\": \"$(cf ssh bootnode -c 'hostname --ip-address')\",
81-
\"OTHER_NODE_IP\": \"$(cf ssh node-1 -c 'hostname --ip-address')\"
82-
}"
83-
```
84-
85-
1. Push the remaining apps
86-
```bash
87-
cf push node-2 -p deploy/ -f quorum-pcf-7nodes/manifests/node2-manifest.yml
88-
cf push node-3 -p deploy/ -f quorum-pcf-7nodes/manifests/node3-manifest.yml
89-
cf push node-4 -p deploy/ -f quorum-pcf-7nodes/manifests/node4-manifest.yml
90-
cf push node-5 -p deploy/ -f quorum-pcf-7nodes/manifests/node5-manifest.yml
91-
cf push node-6 -p deploy/ -f quorum-pcf-7nodes/manifests/node6-manifest.yml
92-
cf push node-7 -p deploy/ -f quorum-pcf-7nodes/manifests/node7-manifest.yml
57+
cf push bootnode -p deploy/ -f quorum-pcf-7nodes/manifests/bootnode-manifest.yml --no-start
58+
cf push node-1 -p deploy/ -f quorum-pcf-7nodes/manifests/node1-manifest.yml --no-start
59+
cf push node-2 -p deploy/ -f quorum-pcf-7nodes/manifests/node2-manifest.yml --no-start
60+
cf push node-3 -p deploy/ -f quorum-pcf-7nodes/manifests/node3-manifest.yml --no-start
61+
cf push node-4 -p deploy/ -f quorum-pcf-7nodes/manifests/node4-manifest.yml --no-start
62+
cf push node-5 -p deploy/ -f quorum-pcf-7nodes/manifests/node5-manifest.yml --no-start
63+
cf push node-6 -p deploy/ -f quorum-pcf-7nodes/manifests/node6-manifest.yml --no-start
64+
cf push node-7 -p deploy/ -f quorum-pcf-7nodes/manifests/node7-manifest.yml --no-start
9365
```
9466

9567
1. Add all the container to container networking rules (copy, paste, wait...)
@@ -304,24 +276,36 @@
304276
cf list-access --app bootnode | wc -l #=> 32
305277
```
306278

279+
1. Start all apps
280+
```bash
281+
cf start bootnode
282+
cf start node-1
283+
cf start node-2
284+
cf start node-3
285+
cf start node-4
286+
cf start node-5
287+
cf start node-6
288+
cf start node-7
289+
```
290+
307291
1. SSH into node-1 to run the `script1.js`
308292
* on your command line:
309293
```bash
310294
cf ssh node-1
311295
```
312-
296+
313297
* ... within the container:
314298
```sh
315299
cd app
316300
export PATH=$PATH:`pwd`/bin
317301
geth attach qdata/dd1/geth.ipc
318302
```
319-
303+
320304
* ... in the solc interpreter:
321305
```js
322306
loadScript('script1.js')
323307
```
324-
308+
325309
* ... you should see the output if successful
326310
```js
327311
Contract transaction send: TransactionHash: 0x541da6399119e66687fe5edada5162d586c56271800d626e33cf9e7ae811d8f6 waiting to be mined...

manifests/bootnode-manifest.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ applications:
33
- name: bootnode
44
buildpack: binary_buildpack
55
health-check-type: process
6-
no-route: true
76
memory: 512MB
87
command: ./bootnode-start.sh
98
env:
109
BOOTNODE_PORT: 33445
1110
BOOTNODE_KEYHEX: "77bd02ffa26e3fb8f324bda24ae588066f1873d95680104de5bc2db9e7b2e510"
11+
routes:
12+
- route: bootnode-ip.cfapps.io

manifests/node1-manifest.yml manifests/node-1-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ applications:
44
buildpack: binary_buildpack
55
health-check-type: process
66
memory: 512MB
7-
no-route: true
87
command: ./primary-node-start.sh
9-
services:
10-
- ip-service
118
env:
9+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
10+
BOOTNODE_PORT: 33445
1211
NETID: 87234
1312
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
14-
BOOTNODE_PORT: 33445
1513
NODE_PORT: 9000
1614
RPC_PORT: 22000
1715
LISTEN_PORT: 21000
1816
PRIVATE_CONFIG_FILE: tm1.conf
1917
DATA_DIR: qdata/dd1
18+
routes:
19+
- route: othernode-ip.cfapps.io

manifests/node2-manifest.yml manifests/node-2-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ applications:
66
memory: 1024MB
77
no-route: true
88
command: ./blockmaker-node-start.sh
9-
services:
10-
- ip-service
119
env:
12-
NETID: 87234
13-
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
10+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
11+
OTHER_NODE_IP_ROUTE: othernode-ip.cfapps.io
1412
BOOTNODE_PORT: 33445
1513
OTHER_NODE_PORT: 9000
14+
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
15+
NETID: 87234
1616
NODE_PORT: 9001
1717
RPC_PORT: 22001
1818
LISTEN_PORT: 21001

manifests/node3-manifest.yml manifests/node-3-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ applications:
66
memory: 512MB
77
no-route: true
88
command: ./node-start.sh
9-
services:
10-
- ip-service
119
env:
12-
NETID: 87234
13-
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
10+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
11+
OTHER_NODE_IP_ROUTE: othernode-ip.cfapps.io
1412
BOOTNODE_PORT: 33445
1513
OTHER_NODE_PORT: 9000
14+
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
15+
NETID: 87234
1616
NODE_PORT: 9002
1717
RPC_PORT: 22002
1818
LISTEN_PORT: 21002

manifests/node4-manifest.yml manifests/node-4-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ applications:
66
memory: 512MB
77
no-route: true
88
command: ./voter-node-start.sh
9-
services:
10-
- ip-service
119
env:
12-
NETID: 87234
13-
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
10+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
11+
OTHER_NODE_IP_ROUTE: othernode-ip.cfapps.io
1412
BOOTNODE_PORT: 33445
1513
OTHER_NODE_PORT: 9000
14+
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
15+
NETID: 87234
1616
NODE_PORT: 9003
1717
RPC_PORT: 22003
1818
LISTEN_PORT: 21003

manifests/node5-manifest.yml manifests/node-5-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ applications:
66
memory: 512MB
77
no-route: true
88
command: ./voter-node-start.sh
9-
services:
10-
- ip-service
119
env:
12-
NETID: 87234
13-
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
10+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
11+
OTHER_NODE_IP_ROUTE: othernode-ip.cfapps.io
1412
BOOTNODE_PORT: 33445
1513
OTHER_NODE_PORT: 9000
14+
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
15+
NETID: 87234
1616
NODE_PORT: 9004
1717
RPC_PORT: 22004
1818
LISTEN_PORT: 21004

manifests/node6-manifest.yml manifests/node-6-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ applications:
66
memory: 512MB
77
no-route: true
88
command: ./node-start.sh
9-
services:
10-
- ip-service
119
env:
12-
NETID: 87234
13-
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
10+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
11+
OTHER_NODE_IP_ROUTE: othernode-ip.cfapps.io
1412
BOOTNODE_PORT: 33445
1513
OTHER_NODE_PORT: 9000
14+
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
15+
NETID: 87234
1616
NODE_PORT: 9005
1717
RPC_PORT: 22005
1818
LISTEN_PORT: 21005

manifests/node7-manifest.yml manifests/node-7-manifest.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ applications:
66
memory: 512MB
77
no-route: true
88
command: ./node-start.sh
9-
services:
10-
- ip-service
119
env:
12-
NETID: 87234
13-
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
10+
BOOTNODE_IP_ROUTE: bootnode-ip.cfapps.io
11+
OTHER_NODE_IP_ROUTE: othernode-ip.cfapps.io
1412
BOOTNODE_PORT: 33445
1513
OTHER_NODE_PORT: 9000
14+
BOOTNODE_HASH: 61077a284f5ba7607ab04f33cfde2750d659ad9af962516e159cf6ce708646066cd927a900944ce393b98b95c914e4d6c54b099f568342647a1cd4a262cc0423
15+
NETID: 87234
1616
NODE_PORT: 9006
1717
RPC_PORT: 22006
1818
LISTEN_PORT: 21006

run-scripts/blockmaker-node-start.sh

+6-8
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,9 @@ true ${LISTEN_PORT:?"!"}
1313
true ${NODE_PORT:?"!"}
1414
true ${VCAP_SERVICES:?"!"}
1515

16-
while read ENV_PAIR; do export "${ENV_PAIR}"; done \
17-
< <(echo $VCAP_SERVICES | jq -r '.["user-provided"] | .[].credentials | to_entries[] | "\(.key)=\(.value)"')
18-
19-
true ${BOOTNODE_IP:?"!missing from VCAP_SERVICES"}
20-
true ${OTHER_NODE_IP:?"!missing from VCAP_SERVICES"}
21-
22-
NODE_IP=$(hostname --ip-address)
16+
NODE_IP=$CF_INSTANCE_INTERNAL_IP
17+
BOOTNODE_IP=$(curl -f -s $BOOTNODE_IP_ROUTE)
18+
OTHER_NODE_IP=$(curl -f -s $OTHER_NODE_IP_ROUTE)
2319
echo "NODE_IP=$NODE_IP"
2420
echo "BOOTNODE_IP=$BOOTNODE_IP"
2521
echo "OTHER_NODE_IP=$OTHER_NODE_IP"
@@ -58,4 +54,6 @@ PRIVATE_CONFIG=$PRIVATE_CONFIG_FILE \
5854
--minblocktime 2 \
5955
--maxblocktime 5 \
6056
--verbosity 4 \
61-
;
57+
&
58+
59+
wait

run-scripts/bootnode-start.sh

+10-1
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,19 @@ set -e
55
true ${BOOTNODE_PORT:?"!"}
66
true ${BOOTNODE_KEYHEX:?"!"}
77

8+
NODE_IP=$CF_INSTANCE_INTERNAL_IP
9+
echo "NODE_IP=$NODE_IP"
10+
811
export PATH=$PATH:`pwd`/bin
912

13+
while true; do
14+
nc -l $PORT < <(echo -e "HTTP/1.1 200 OK\n\n$NODE_IP") > /dev/null
15+
done &
16+
1017
bootnode \
1118
--nodekeyhex "$BOOTNODE_KEYHEX" \
1219
--addr="0.0.0.0:$BOOTNODE_PORT" \
1320
--verbosity 9 \
14-
;
21+
&
22+
23+
wait

run-scripts/node-start.sh

+6-8
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,9 @@ true ${LISTEN_PORT:?"!"}
1313
true ${NODE_PORT:?"!"}
1414
true ${VCAP_SERVICES:?"!"}
1515

16-
while read ENV_PAIR; do export "${ENV_PAIR}"; done \
17-
< <(echo $VCAP_SERVICES | jq -r '.["user-provided"] | .[].credentials | to_entries[] | "\(.key)=\(.value)"')
18-
19-
true ${BOOTNODE_IP:?"!missing from VCAP_SERVICES"}
20-
true ${OTHER_NODE_IP:?"!missing from VCAP_SERVICES"}
21-
22-
NODE_IP=$(hostname --ip-address)
16+
NODE_IP=$CF_INSTANCE_INTERNAL_IP
17+
BOOTNODE_IP=$(curl -f -s $BOOTNODE_IP_ROUTE)
18+
OTHER_NODE_IP=$(curl -f -s $OTHER_NODE_IP_ROUTE)
2319
echo "NODE_IP=$NODE_IP"
2420
echo "BOOTNODE_IP=$BOOTNODE_IP"
2521
echo "OTHER_NODE_IP=$OTHER_NODE_IP"
@@ -49,4 +45,6 @@ PRIVATE_CONFIG=$PRIVATE_CONFIG_FILE \
4945
--rpcport $RPC_PORT \
5046
--port $LISTEN_PORT \
5147
--verbosity 4 \
52-
;
48+
&
49+
50+
wait

run-scripts/primary-node-start.sh

+11-8
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,26 @@ set -e
55
true ${NETID:?"!"}
66
true ${BOOTNODE_HASH:?"!"}
77
true ${BOOTNODE_PORT:?"!"}
8+
true ${BOOTNODE_IP_ROUTE:?"!"}
89
true ${PRIVATE_CONFIG_FILE:?"!"}
910
true ${DATA_DIR:?"!"}
1011
true ${RPC_PORT:?"!"}
1112
true ${LISTEN_PORT:?"!"}
1213
true ${NODE_PORT:?"!"}
13-
true ${VCAP_SERVICES:?"!"}
1414

15-
while read ENV_PAIR; do export "${ENV_PAIR}"; done \
16-
< <(echo $VCAP_SERVICES | jq -r '.["user-provided"] | .[].credentials | to_entries[] | "\(.key)=\(.value)"')
17-
18-
true ${BOOTNODE_IP:?"!missing from VCAP_SERVICES"}
19-
20-
NODE_IP=$(hostname --ip-address)
15+
NODE_IP=$CF_INSTANCE_INTERNAL_IP
16+
BOOTNODE_IP=$(curl -f -s $BOOTNODE_IP_ROUTE)
2117
echo "NODE_IP=$NODE_IP"
2218
echo "BOOTNODE_IP=$BOOTNODE_IP"
2319

20+
while true; do
21+
nc -l $PORT < <(echo -e "HTTP/1.1 200 OK\n\n$NODE_IP") > /dev/null
22+
done &
23+
2424
sed -ibak "s|url = .*|url = \"http://$NODE_IP:$NODE_PORT/\"|" $PRIVATE_CONFIG_FILE
2525
sed -ibak "s|port = .*|port = $NODE_PORT|" $PRIVATE_CONFIG_FILE
2626

27+
2728
export PATH=$PATH:`pwd`/bin
2829
export LD_LIBRARY_PATH=`pwd`/bin
2930

@@ -49,4 +50,6 @@ PRIVATE_CONFIG=$PRIVATE_CONFIG_FILE \
4950
--unlock 0 \
5051
--password passwords.txt \
5152
--verbosity 4 \
52-
;
53+
&
54+
55+
wait

run-scripts/voter-node-start.sh

+6-8
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,9 @@ true ${LISTEN_PORT:?"!"}
1313
true ${NODE_PORT:?"!"}
1414
true ${VCAP_SERVICES:?"!"}
1515

16-
while read ENV_PAIR; do export "${ENV_PAIR}"; done \
17-
< <(echo $VCAP_SERVICES | jq -r '.["user-provided"] | .[].credentials | to_entries[] | "\(.key)=\(.value)"')
18-
19-
true ${BOOTNODE_IP:?"!missing from VCAP_SERVICES"}
20-
true ${OTHER_NODE_IP:?"!missing from VCAP_SERVICES"}
21-
22-
NODE_IP=$(hostname --ip-address)
16+
NODE_IP=$CF_INSTANCE_INTERNAL_IP
17+
BOOTNODE_IP=$(curl -f -s $BOOTNODE_IP_ROUTE)
18+
OTHER_NODE_IP=$(curl -f -s $OTHER_NODE_IP_ROUTE)
2319
echo "NODE_IP=$NODE_IP"
2420
echo "BOOTNODE_IP=$BOOTNODE_IP"
2521
echo "OTHER_NODE_IP=$OTHER_NODE_IP"
@@ -53,4 +49,6 @@ PRIVATE_CONFIG=$PRIVATE_CONFIG_FILE \
5349
--voteaccount $VOTE_ACCOUNT \
5450
--votepassword "" \
5551
--verbosity 4 \
56-
;
52+
&
53+
54+
wait

0 commit comments

Comments
 (0)