네트워크가 없는 Micro VM의 YugabyteDB
4006 단어 dnsmicrovmyugabytedbfirecracker
ysqlsh
에 연결하는 경우 필요하지 않지만 이름 확인 문제가 발생할 수 있습니다. docker run --network none
로 재현할 수 있습니다.이 게시물은 다음 오류 및 해결 방법에 관한 것입니다.
ysqlsh: FATAL: Timed out: OpenTable RPC (request call id 2) to 0.0.0.0:9100 timed out after 120.000s
또는
yb-tserver.ERROR
에서:E0830 11:32:44.518383 66 async_initializer.cc:100] Failed to initialize client: Network error (yb/util/net/net_util.cc:447): Could not determine local host names: Unable to lookup FQDN (699cdfc74424), getaddrinfo returned -11 (EAI_SYSTEM): Connection refused (system error 111)
이것은 이름 확인과 관련이 있습니다. YugabyteDB는 분산 데이터베이스이며 노드를 식별하기 위해 호스트 이름과 IP 주소가 일치해야 합니다. 마지막 메시지는 명시적입니다. YugabyteDB는 Linux
getaddrinfo()
시스템 호출을 호출하여 내 컨테이너 호스트 이름인 699cdfc74424
의 IP를 가져옵니다.기본적으로 다음과 동일합니다.
sh-4.2# getent ahosts $(hostname)
127.0.0.2 STREAM 699cdfc74424
127.0.0.2 DGRAM
127.0.0.2 RAW
::1 STREAM
::1 DGRAM
::1 RAW
그런데 왜
127.0.0.2
? 네트워크가 없는 컨테이너에 있는 유일한 인터페이스인 127.0.0.1
에서 YugabyteDB를 시작하려고 합니다.
/home/yugabyte/bin/yb-master --fs_data_dirs=/var/tmp --master_addresses=127.0.0.1:7100 --replication_factor=1 --default_memory_limit_to_ram_ratio=0.30 &
/home/yugabyte/bin/yb-tserver --fs_data_dirs=/var/tmp --tserver_master_addrs=127.0.0.1:7100 --default_memory_limit_to_ram_ratio=0.30 &
그 이유는
/etc/nsswitch.conf
에 있습니다.sh-4.2# grep hosts: /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns myhostname
sh-4.2#
호스트 이름 확인은 먼저
files
로 진행되며, 이 경우에는 /etc/hosts
입니다.sh-4.2# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
내 호스트 이름을 알 수 없습니다.
그런 다음
dns
로 이동하지만 네트워크가 없는 컨테이너에 DNS가 없습니다(Connection refused
오류의 원인으로 추측)그런 다음 호스트 이름을 확인하는
myhostname
로 이동하지만 127.0.0.2
로 이동합니다. /etc/hosts
패치를 피하는 데 사용되지만 제 경우에는 127.0.0.2
를 알 수 없기 때문에 사용할 수 없습니다.yb-master --master_addresses=127.0.0.2:7100
를 시작하려고 했지만 None of the local addresses are present in master_addresses 127.0.0.2:7100
와 함께 실패합니다.그런 다음 내 솔루션은 단순히 호스트 이름을
/etc/hosts
에 추가하는 것입니다.echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
yb-master--fs_data_dirs=/var/tmp --master_addresses=127.0.0.1:7100 --replication_factor=1
및 yb-tserver --fs_data_dirs=/var/tmp --master_addresses=127.0.0.1:7100 --replication_factor=1
를 시작하기 전에 이를 통해 기본적으로 ysqlsh
에 연결되는 간단한 localhost
에 연결할 수 있어야 합니다.물론 네트워크가 없는 분산 SQL 데이터베이스는 예를 들어 지속적인 통합에 사용되는 작은 컨테이너를 제외하고는 의미가 없습니다.
Reference
이 문제에 관하여(네트워크가 없는 Micro VM의 YugabyteDB), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yugabyte/yugabytedb-in-a-micro-vm-with-no-network-3ac3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)