同居するSymbolノードとdHealthノード

どうも上手くノード間の通信が出来ないようです。
とりあえず、履歴として残しておきます…

さて、今回はほぼ同じ物を同居させてみようと思います。
ポートやら何やら色々いろいろモロかぶりです。

思い出しながら書いてるので抜けとか間違いとかあって、このままでは動かないかもしれません。

ドメインはharvestasya.comにそれぞれサブドメインを追加して以下のようにしました。
Symbol: symbol02.harvestasya.com
dHealth: dhealth02.harvestasya.com

Nginxの設定

まずは通信ポートが被っているので、これをホスト名で分岐させます。
あ、今回は面倒なのでHTTPSは対応させてません。

streamを使うのでngx_stream_module.soが導入されていること。
入ってなかったらapt -y install libnginx-mod-stream

Symbol: symbol02.harvestasya.com
REST-Gateway: 3000->3010
ノード間通信: 7900->7910

dHealth: dhealth02.harvestasya.com
REST-Gateway: 3000->3050
ノード間通信: 7900->7950

Nginx
http {
~略~
        # Websocket用
        map $http_upgrade $connection_upgrade {
                default upgrade;
                ''      close;
        }

        server {
                server_name symbol02.harvestasya.com;
                listen 3000;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                location / {
                        proxy_pass http://127.0.0.1:3010;
                }
        }

        server {
                server_name dhealth02.harvestasya.com;
                listen 3000;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                location / {
                        proxy_pass http://127.0.0.1:3050;
                }
        }

}
stream {
        map $ssl_preread_server_name $domain {
                symbol02.harvestasya.com symbol02_node;
                dhealth02.harvestasya.com dhealth02_node;
        }
        upstream symbol02_node {
                server 127.0.0.1:7910;
        }
        upstream dhealth02_node {
                server 127.0.0.1:7950;
        }
        server {
                listen 7900;
                proxy_pass $domain;
                proxy_next_upstream on;
                ssl_preread on;
        }
}
nginx.conf

Symbol-bootstrap

そのままだと、互いのコンテナ消し合ってしまうので、プロジェクト名を付けます。
targetディレクトリが出来る階層に.envファイルを作成します。

名前は分かれば何でも良いです。

Plaintext
COMPOSE_PROJECT_NAME=symbol-bootstrap
.env

次にカスタムプリセットを設定しましょう。
Symbolは基本的にポートの変更程度に抑えてます。

YAML
maxChainBytesPerSyncAttempt: 10MB
messageSynchronizationMaxResponseSize: 5MB
blockDisruptorMaxMemorySize: 1000MB

nodes:
  -
    host: symbol02.harvestasya.com
    friendlyName: _symbol_HarvestasyaNode02/.
    voting: false
    openPort: 7910
    brokerOpenPort: 7912

gateways:
  -
    openPort: 3010
my-preset.yml

あとはいつも通りに設定ファイルとcomposeの作成して起動。

ShellScript
symbol-bootstrap config -p mainnet -a dual -c my-preset.yml --upgrade
symbol-bootstrap compose --upgrade
symbol-bootstrap run -d
ShellScript

YourDLT

dHealth側も同じように.envファイルを作成します。

Plaintext
COMPOSE_PROJECT_NAME=dHealth-network
.env

カスタムプリセット。
こちらはポートとコンテナ名やらipやらを変更します。

YAML
maxChainBytesPerSyncAttempt: 10MB
messageSynchronizationMaxResponseSize: 5MB
blockDisruptorMaxMemorySize: 1000MB

nodes:
  -
    host: dhealth02.harvestasya.com
    friendlyName: _dHealth_HarvestasyaNode02/.
    voting: false
    brokerName: dhealth-broker
    databaseHost: dhealth-db
    openPort: 7950
    brokerOpenPort: 7952
    trustedHosts: '127.0.0.1, 172.20.50.25'
    localNetworks: '127.0.0.1, 172.20.50.25'

databases:
  -
    name: dhealth-db

gateways:
  -
    name: dhealth-rest-gateway
    databaseHost: dhealth-db
    apiNodeBrokerHost: dhealth-broker
    openPort: 3050
    ipv4_address: 172.20.50.25

subnet: 172.20.50.0/24
my-preset.yml

こちらも同じように設定とcomposeを作成して起動。

ShellScript
yourdlt config -p dhealth -a dual -c my-preset.yml --upgrade
yourdlt compose --upgrade
yourdlt run -d
ShellScript

これで起動するはず。

runでエラーが出るようになったら

以下のコマンドで不要なもの消したら動くようになるかもしれません。。。

ShellScript
docker system prune
docker network prune
ShellScript