Skip to content

Configure host domain name cause nacos server cluster is unavailable #193

@paderlol

Description

@paderlol

System Environment

  • Nacos version:0.2.1
  • Container : docker
  • docker-config:
version: "2"
services:
 nacos1:
   image: paderlol/nacos:0.2.1
   container_name: nacos1
   volumes:
   - $HOME/Downloads/nacos/logs:/home/nacos/logs
   ports:
   - "8848:8848"
   - "9555:9555"
   environment:
   - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
   - DB_HOST_ZERO=mysql1
   - DB_NAME_ZERO=nacos_devtest
   - DB_PORT_ZERO=3306
   - DB_HOST_ONE=mysql2
   - DB_NAME_ONE=nacos_devtest
   - DB_PORT_ONE=3306
   - DB_USER=nacos
   - DB_PASSWORD=nacos
   restart: always
   depends_on:
   - mysql1
   - mysql2

 nacos2:
   image: paderlol/nacos:0.2.1
   container_name: nacos2
   ports:
   - "8849:8848"
   environment:
   - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
   - DB_HOST_ZERO=mysql1
   - DB_NAME_ZERO=nacos_devtest
   - DB_PORT_ZERO=3306
   - DB_HOST_ONE=mysql2
   - DB_NAME_ONE=nacos_devtest
   - DB_PORT_ONE=3306
   - DB_USER=nacos
   - DB_PASSWORD=nacos
   restart: always
   depends_on:
   - mysql1
   - mysql2
 nacos3:
   image: paderlol/nacos:0.2.1
   container_name: nacos3
   volumes:
   - $HOME/Downloads/nacos/mysql:/var/lib/mysql
   ports:
   - "8850:8848"
   environment:
   - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
   - DB_HOST_ZERO=mysql1
   - DB_NAME_ZERO=nacos_devtest
   - DB_PORT_ZERO=3306
   - DB_HOST_ONE=mysql2
   - DB_NAME_ONE=nacos_devtest
   - DB_PORT_ONE=3306
   - DB_USER=nacos
   - DB_PASSWORD=nacos
   restart: always
   depends_on:
   - mysql1
   - mysql2
 mysql1:
   image: mysql:5.7
   container_name: mysql1
   environment:
   - MYSQL_ROOT_PASSWORD=root
   - MYSQL_DATABASE=nacos_devtest
   - MYSQL_USER=nacos
   - MYSQL_PASSWORD=nacos
   volumes:
   - $HOME/Downloads/nacos/mysql:/var/lib/mysql
   ports:
   - "3306:3306"
 mysql2:
   image: mysql:5.7
   container_name: mysql2
   environment:
   - MYSQL_ROOT_PASSWORD=root
   - MYSQL_DATABASE=nacos_devtest
   - MYSQL_USER=nacos
   - MYSQL_PASSWORD=nacos
   ports:
   - "3305:3306"

Error Log

java.lang.IllegalArgumentException: ip: 172.19.0.6:8848 is not in serverlist
	at com.alibaba.nacos.naming.core.DistroMapper.onReceiveServerStatus(DistroMapper.java:218)
	at com.alibaba.nacos.naming.core.DistroMapper$ServerStatusReporter.run(DistroMapper.java:448)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
2018-10-30 19:55:51,349 ERROR SERVER-STATUS

java.lang.IllegalArgumentException: ip: 172.19.0.6:8848 is not in serverlist
	at com.alibaba.nacos.naming.core.DistroMapper.onReceiveServerStatus(DistroMapper.java:218)
	at com.alibaba.nacos.naming.core.DistroMapper$ServerStatusReporter.run(DistroMapper.java:448)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
2018-10-30 19:56:06,332 ERROR SERVER-STATUS

java.lang.IllegalArgumentException: ip: 172.19.0.6:8848 is not in serverlist
	at com.alibaba.nacos.naming.core.DistroMapper.onReceiveServerStatus(DistroMapper.java:218)
	at com.alibaba.nacos.naming.core.DistroMapper$ServerStatusReporter.run(DistroMapper.java:448)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
2018-10-30 19:56:21,335 WARN Can not acquire server list

2018-10-30 19:56:21,337 INFO SERVER-LIST

2018-10-30 19:56:21,339 ERROR SERVER-STATUS

java.lang.IllegalArgumentException: ip: 172.19.0.6:8848 is not in serverlist
	at com.alibaba.nacos.naming.core.DistroMapper.onReceiveServerStatus(DistroMapper.java:218)
	at com.alibaba.nacos.naming.core.DistroMapper$ServerStatusReporter.run(DistroMapper.java:448)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
2018-10-30 19:57:12,066 WARN Can not acquire server list

Code Analysis

if (!NamingProxy.getServers().contains(server.ip)) {
                throw new IllegalArgumentException("ip: " + server.ip + " is not in serverlist");
}

Part of the code fragment, The value in NamingProxy.getServers() was a collection of hostname: port, but the value in server.ip was ip: port, so it is always possible to fail anyway

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions