Проблема при попытке поставить два пилообразных узла на отдельный хост - PullRequest
1 голос
/ 04 октября 2019

Я новичок в sawtooth и в настоящее время пытаюсь подключить два отдельных хоста (пока что в одной сети LAN) к двум пилообразным узлам.

Я использовал sawtooth-default-поэта.yaml составить файл из документов в качестве отправной точки. Как вы можете видеть из моего репозитория , я создал два отдельных файла композиции:

На втором хосте я также создал файл .env с

SEEDS=tcp://<local-ip-of-first-node>:8800

Для ссылки на первый узел.

Все отлично работаеткогда я обедаю два файла компоновки в одной и той же сети докеров, но по какой-то причине он не работает, когда они разделены.

Вывод на второй узел:

sawtooth-shell                | creating key directory: /root/.sawtooth/keys
sawtooth-shell                | writing file: /root/.sawtooth/keys/root.priv
sawtooth-shell                | writing file: /root/.sawtooth/keys/root.pub
sawtooth-validator            | writing file: /etc/sawtooth/keys/validator.priv
sawtooth-validator            | writing file: /etc/sawtooth/keys/validator.pub
sawtooth-validator            | [2019-10-04 16:45:13.756 WARNING  (unknown file)] [src/pylogger.rs: 40] Started logger at level INFO
sawtooth-validator            | [2019-10-04 16:45:14.275 INFO     path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml
sawtooth-validator            | [2019-10-04 16:45:14.275 INFO     validator] Skipping validator config loading from non-existent config file: /etc/sawtooth/validator.toml
sawtooth-validator            | [2019-10-04 16:45:14.275 INFO     keys] Loading signing key: /etc/sawtooth/keys/validator.priv
sawtooth-validator            | [2019-10-04 16:45:14.278 INFO     cli] sawtooth-validator (Hyperledger Sawtooth) version 1.1.5
sawtooth-validator            | [2019-10-04 16:45:14.278 INFO     cli] config [path]: config_dir = "/etc/sawtooth"; config [path]: key_dir = "/etc/sawtooth/keys"; config [path]: data_dir = "/var/lib/sawtooth"; config [path]: log_dir = "/var/log/sawtooth"; config [path]: policy_dir = "/etc/sawtooth/policy"
sawtooth-validator            | [2019-10-04 16:45:14.278 WARNING  cli] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted.
sawtooth-validator            | [2019-10-04 16:45:14.282 INFO     state_verifier] Skipping state verification: chain head's state root is present
sawtooth-validator            | [2019-10-04 16:45:14.282 INFO     cli] Starting validator with serial scheduler
sawtooth-validator            | [2019-10-04 16:45:14.290 INFO     interconnect] Listening on tcp://eth0:4004
sawtooth-validator            | [2019-10-04 16:45:14.291 INFO     genesis] No chain head and not the genesis node: starting in peering mode
sawtooth-validator            | [2019-10-04 16:45:14.292 INFO     interconnect] Listening on tcp://eth0:5050
sawtooth-validator            | [2019-10-04 16:45:14.294 INFO     interconnect] Listening on tcp://eth0:8800
sawtooth-validator            | [2019-10-04 16:45:14.329 WARNING  processor_handlers] Max occupancy was not provided by transaction processor: dcd9a6df19637eab1028f8de01d68cd5685fd013adb8f7d3f8bb878f2fd9e8e5b4d3022dfe0118cd66fef6ee3dce82cf993f12ce6bd72544e7af06a008eb9dd8. Using default max occupancy: 10
sawtooth-validator            | [2019-10-04 16:45:14.329 INFO     processor_handlers] registered transaction processor: connection_id=dcd9a6df19637eab1028f8de01d68cd5685fd013adb8f7d3f8bb878f2fd9e8e5b4d3022dfe0118cd66fef6ee3dce82cf993f12ce6bd72544e7af06a008eb9dd8, family=sawtooth_validator_registry, version=1.0, namespaces=['6a4372'], max_occupancy=10
sawtooth-validator            | [2019-10-04 16:45:14.342 WARNING  processor_handlers] Max occupancy was not provided by transaction processor: 8a563ac3d673e8bb3f6948afdff1330c4954aa5ab2de947cf33d8458a369f1720ac8b2482e1cc60e304fe6dfaae6e627579e9ed841ee8c58d7d4f4e9c9b41c2a. Using default max occupancy: 10
sawtooth-validator            | [2019-10-04 16:45:14.342 INFO     processor_handlers] registered transaction processor: connection_id=8a563ac3d673e8bb3f6948afdff1330c4954aa5ab2de947cf33d8458a369f1720ac8b2482e1cc60e304fe6dfaae6e627579e9ed841ee8c58d7d4f4e9c9b41c2a, family=xo, version=1.0, namespaces=['5b7349'], max_occupancy=10
sawtooth-xo-tp-python         | [2019-10-04 16:45:14.344 INFO     core] register attempt: OK
sawtooth-validator            | [2019-10-04 16:45:14.383 WARNING  processor_handlers] Max occupancy was not provided by transaction processor: 2491d626ce1ca6f4a26d2e1fbed090be730c7653f0b944626e0ea02947777da03e060612ada85a677896cfcb4bf36539f2036c9d540465a6ade56f80bda73de9. Using default max occupancy: 10
sawtooth-validator            | [2019-10-04 16:45:14.384 INFO     processor_handlers] registered transaction processor: connection_id=2491d626ce1ca6f4a26d2e1fbed090be730c7653f0b944626e0ea02947777da03e060612ada85a677896cfcb4bf36539f2036c9d540465a6ade56f80bda73de9, family=sawtooth_settings, version=1.0, namespaces=['000000'], max_occupancy=10
sawtooth-validator            | [2019-10-04 16:45:14.401 WARNING  processor_handlers] Max occupancy was not provided by transaction processor: c539c47206892b86bcf2d08359122faf2ec1dc14d5b5a1615b12578eca461101786d18315ea8b7db356a5fbd5ba8597db21a5846b1bbee413782916c2c420151. Using default max occupancy: 10
sawtooth-validator            | [2019-10-04 16:45:14.402 INFO     processor_handlers] registered transaction processor: connection_id=c539c47206892b86bcf2d08359122faf2ec1dc14d5b5a1615b12578eca461101786d18315ea8b7db356a5fbd5ba8597db21a5846b1bbee413782916c2c420151, family=intkey, version=1.0, namespaces=['1cf126'], max_occupancy=10
sawtooth-validator            | [2019-10-04 16:45:47.387 WARNING  dispatch] Attempted to remove send_message function for connection OutboundConnectionThread-tcp://192.168.1.118:8800, but no send_message function was registered
sawtooth-validator            | [2019-10-04 16:45:47.387 WARNING  dispatch] Attempted to remove send_last_message function for connection OutboundConnectionThread-tcp://192.168.1.118:8800, but no send_last_message function was registered

Где последнийдва сообщения повторяются каждую минуту или около того.

Сначала я не знал разницу между использованием expose или ports в файле docker-compose.
В любом случае, сейчас, даже еслиЯ использую ports, чтобы выставить порт 8800 для внешней сети, для валидатора моя проблема сохраняется.

Почемуэто происходит?

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Файлы Docker, которые вы упомянули в вопросе, могут запускать сеть Hyperledger Sawtooth на том же хосте. Если вы планируете запускать эти файлы компоновки на разных хостах и ​​заставлять контейнеры валидатора взаимодействовать друг с другом, их необходимо обнаружить.

Даже если вы установите SEEDS в файле .env , контейнер валидатора в https://github.com/danipisca07/sawtooth_playground/blob/master/sawtooth-node.yaml не будет обнаружен в контейнере валидатора в https://github.com/danipisca07/sawtooth_playground/blob/master/sawtooth-default-poet-genesis.yaml

Чтобы службы валидатора могли общаться друг с другом, вы можете использовать тег ports в файле компоновки Docker. Это позволит вам сопоставить порт контейнера с портом хост-машины. Таким образом, ваш хост теперь будет доступен для другой машины в локальной сети. Вам также необходимо использовать ports на хосте узла Genesis. Это для валидатора на другом хосте для сопряжения.

Например, служба валидатора вашего узла генезиса будет выглядеть так:

validator-0:
image: hyperledger/sawtooth-validator:1.1
container_name: sawtooth-validator-0
expose:
  - 4004
  - 5050
  - 8000
  - 8800
ports:
  - "8800:8800"
...

В приведенном выше примере порт 8800 хост-машины сопоставляется с контейнерами. Порт 8800.

Вот документ о том, как использовать тег ports в файле compose https://docs.docker.com/compose/compose-file/

1 голос
/ 04 октября 2019

Указанные в вопросе файлы составления Docker являются автономными и не предназначены для работы в сетях Docker. Вы можете попытаться аккуратно объединить их в один файл Docker.

Если вы хотите создать два файла Docker, вы должны убедиться, что сетевые порты открыты и доступны для различных контейнеров. В случае запуска этих файлов Docker на нескольких хостах вам необходимо сопоставить порт контейнера с хост-машиной. В противном случае контейнеры, запущенные на другом хосте, не смогут получить к ним доступ. Поэтому, чтобы ответить на вопрос, вы должны использовать тег «ports» для контейнера валидатора и убедиться, что порт 8800 контейнера валидатора виден другим хост-компьютером.

Более подробную информацию об использовании «портов» можно найтиздесь https://docs.docker.com/compose/compose-file/

Дополнительно смотрите этот список TCP-портов Sawtooth: https://sawtooth.hyperledger.org/faq/validator/#what-tcp-ports-does-sawtooth-use

...