AWS を使用して 4 ノード / 4 ホストの MySQL Cluster を構成および実行しようとしているときに、最初のデータ ノードを Manager に登録しようとしているときに障害にぶつかりました。
データ ノード (DN) のパブリック IP が、その eth0 に関連付けられた IP (プライベート IP と呼びます) とは異なるという事実に問題があるようです。したがって、クラスタ マネージャは NodeID:11 の DN から着信要求を受信したように見えますが、ソース IP アドレスは config.ini で指定された IP と一致しません。
接続しようとしているときにDNで発生するエラーは次のとおりです。
2014-02-08 22:12:45 [ndbd] INFO -- Angel connected to '<mg_public_ip>:1186'
2014-02-08 22:12:48 [ndbd] INFO -- Angel allocated nodeid: 11
2014-02-08 22:12:49 [ndbd] ERROR -- Could not fetch configuration/invalid configuration, error: 'The hostname this node should have according to the configuration does not match a local interface. Attempt to bind '<dn_public_ip>' failed with error: 99 'Cannot assign requested address''
「構成に従ってこのノードが持つべきホスト名がローカルインターフェースと一致しない」という強調
!luck を使用してオンラインで解決策を探すのに 2 日間を費やしました。この問題を抱えているある投稿者は、DN のパブリック IP に設定されたeth0 : 0でネットワーク エイリアスを作成することを提案しました。これにより、次のログが生成されます: (このソリューションには、ルーターの NAT の構成も必要でした)。
Unable to connect with connect string: nodeid=11,<mg_public_ip>:1186
これはネットワーク構成の問題であり、MySQLとAWSが回避策を提供する可能性があると思いますが、まだ見つけていません。どんな洞察も大歓迎です!
詳細:
DN Public IP == <dn_public_ip>
DN Private IP == <dn_private_ip>
マネージャー (MG) には、パブリック IP とプライベート IP もあります。
Manager Public IP == <mg_public_ip>
Manager Private IP == <mg_private_ip>
マネージャーは、次のconfig.iniで構成されます。
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[tcp default]
# TCP/IP options:
# portnumber=2202 # This the default; however, you can use any
# port that is free for all the hosts in the cluster
# Note: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
[ndb_mgmd]
# Management process options:
hostname = <mg_private_ip> # Private IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "A":
hostname=<dn_public_ip> # Public address of data node A
datadir=/usr/local/mysql/data # Directory for this data node's data files
NodeId=11
[ndbd]
# Options for data node "B":
hostname=*** # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
NodeId=12
[mysqld]
# SQL node options:
hostname=**** # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
NodeId=21
データ ノード A の ifconfig:
eth0 Link encap:Ethernet HWaddr 22:00:0A:FE:87:82
inet <addr:dn_private_ip> Bcast:*.*.*.* Mask:255.255.255.192
inet6 addr: ***** Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9321 errors:0 dropped:0 overruns:0 frame:0
TX packets:7950 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:739918 (722.5 KiB) TX bytes:1194550 (1.1 MiB)
Interrupt:25
マネージャーの _ndb_1_cluster.log:_
[MgmtSrvr] WARNING -- Found timedout nodeid reservation for 11, releasing it
[MgmtSrvr] INFO -- Nodeid 11 allocated for NDB at <dn_public_ip>