サーバー上でCENMを動かす
Identity Manager等の設定は以下を参考に行う:
やること
Identity Manager, Network Map, Notaryを一つのEC2内で起動する
ここでは cenm-01 と呼ぶ
Signing Serviceを上記EC2とは別のEC2で起動する
ここでは cenm-02 と呼ぶ
ただ動かすのを試すだけならsupervisorは必要ない
環境
VPCを1つ作成
corda-cenm
subnetを2つ作成
public
デフォルトルート (0.0.0.0/0) のdestinationをInternet Gatewayに設定したサブネット
private
デフォルトルート (0.0.0.0/0) のdestinationをNAT Gatewayに設定したサブネット
以下インスタンスを2台用意しておく
publicサブネット上にEC2 (Name: cenm-01)
privateサブネット上にEC2 (Name: cenm-02)
スペック
Amazon Linux 2
m5.large
TODO: network構成図
ローカル環境設定
cenm-01, cenm-02にSSH接続するための設定をしておく。
code:.ssh/config
Host cenm-01
HostName <public-ip-OR-public-dns>
IdentityFile ~/.ssh/<your-secret-key>
User ec2-user
Host cenm-02
HostName <private-ip-OR-private-dns>
IdentityFile ~/.ssh/<your-secret-key>
User ec2-user
ProxyCommand ssh -W %h:%p cenm-01
これで以下のようにして各サーバーにログインできる。
ssh cenm-01
ssh cenm-02
当然、cenm-01はローカルからアクセスできるようSSHのポートを開けておかなければならない。
cenm-02に関してはcenm-01からのSSHアクセスだけ許可しておけば良い。ローカルからcenm-02へのポートを開ける必要はない。
cenm-02構築
このサーバー内でsigning serviceを起動する。
NotaryやNetwork Map Serviceを起動する前にSigning Serviceを起動しておきたいので、こちらから先にセットアップする。
依存モジュールのインストール
code:setup
sudo yum -y install python3 java-1.8.0-openjdk
sudo pip3 install supervisor
sudo mkdir -p /etc/supervisor
sudo mkdir -p /var/log/supervisor
Signing Service初期設定
前提として、signing serviceのconfファイルは設定済みで、jarファイル等と共に/usr/local/bin配下に配布済みとする。
設置する設定ファイル signer.conf のserviceLocationsとcrlDistributionPointにはホスト名を設定する箇所があるが、そこにはcenm-01のIPないしIPに解決できるドメインを設定しておく。
supervisor設定
以下の場所にsupervisorの設定ファイルを作成
code:/etc/supervisor/supervisord.conf
port=127.0.0.1:9001
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
logfile = /var/log/supervisor/supervisord.log
logfile_maxbytes = 50MB
pidfile = /tmp/supervisord.pid
umask = 022
nocleanup = true
childlogdir = /var/log/supervisor
command=java -jar signer.jar --config-file signer.conf
process_name=signer
directory=/usr/local/bin/signer-1.1.0
Signing Service起動
supervisordを起動
sudo /usr/local/bin/supervisord
これで全てのプロセスが起動する。
ssh接続等を試すことで起動の確認ができる
ssh testuser@localhost -p 20003
ログは/var/log/supervisor配下に出力される
再起動方法
supervisorの管理コンソールに入る
sudo /usr/local/bin/supervisorctl
notary再起動
supervisor> restart signer
コマンド一覧を見る
supervisor> help
コマンドのヘルプを見る
supervisor> help restart
cenm-01の構築
このサーバー内でIdentity Manager, Network Map, Notaryを起動する。
依存モジュールのインストール
code:setup
sudo yum -y install python3 java-1.8.0-openjdk
sudo pip3 install supervisor
sudo mkdir -p /etc/supervisor
sudo mkdir -p /var/log/supervisor
CENM初期設定
前提として、各サービスのconfファイルは設定済みで、jarファイル等と共に/usr/local/bin配下に配布済みとする。
identity-manager.confとnetwork-map.confのaddressは以下のようにパブリックDNSに書き換えておく
code:identity-manager.conf
address="ec2-x-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com:10000"
...
code:network-map.conf
address="ec2-x-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com:20000"
...
Notaryのnode.confのnetworkServicesもパブリックDNSに書き換える
code:node.conf
networkServices {
}
...
まず以下を行う:
Identity Managerを手動で起動
cd /usr/local/bin/identitymanager-1.1.0
java -jar corda.jar --initial-registration --network-root-truststore-password trustpass --network-root-truststore network-root-truststore.jks
Notaryを手動で登録
cd /usr/local/bin/Notary
java -jar corda.jar --initial-registration --network-root-truststore-password trustpass --network-root-truststore network-root-truststore.jks
Network Mapの初期設定をする
cd /usr/local/bin/networkmap-1.1.0
java -jar networkmap.jar --config-file network-map.conf --set-network-parameters network-parameters.conf --network-truststore network-root-truststore.jks --truststore-password trustpass --root-alias cordarootca
ここまで終わったら手動で起動したIdentity Managerを停止しておく。
supervisor設定
以下の場所にsupervisorの設定ファイルを作成
code:/etc/supervisor/supervisord.conf
port=127.0.0.1:9001
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
logfile = /var/log/supervisor/supervisord.log
logfile_maxbytes = 50MB
pidfile = /tmp/supervisord.pid
umask = 022
nocleanup = true
childlogdir = /var/log/supervisor
command=java -jar identitymanager.jar --config-file identity-manager.conf
process_name=identitymanager
directory=/usr/local/bin/identitymanager-1.1.0
command=java -jar networkmap.jar --config-file network-map.conf
process_name=networkmap
directory=/usr/local/bin/networkmap-1.1.0
command=java -jar corda.jar
process_name=notary
directory=/usr/local/bin/Notary
CENM起動
supervisordを起動
sudo /usr/local/bin/supervisord
これで全てのプロセスが起動する。
ssh接続等を試すことで起動の確認ができる
ssh testuser@ec2-x-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com -p 10002
ログは/var/log/supervisor配下に出力される
再起動方法
supervisorの管理コンソールに入る
sudo /usr/local/bin/supervisorctl
supervisor daemon自体を再起動
supervisor> reload
notary再起動
supervisor> restart notary
コマンド一覧を見る
supervisor> help
コマンドのヘルプを見る
supervisor> help restart
おまけ:Local(他のマシン)でCorda Nodeを立ててネットワークに参加する
Nodeのnode.confに記載していたdoorman(Identity Manager)とNetwork Mapの向き先をEC2に変更
code:node.conf の例
networkServices {
}
同様に複数Nodeを登録してみよう!
NodeにSSH接続などしてflowを実行してみよう!
追加で試したいこと
複数のIdentity Managerを起動し、ALB経由でサービス提供し、正常にNotaryやNodeを登録できるか確認