前言:
最近在写apollo标准化,遇到了一个eureka的多网卡问题(默认只识别了第一块网卡),下载的github的编译好的源码,还不能够直接vim修改包,否则启动报错,如果调试网卡顺序,又会浪费一些时间,重新编译则更耗时了(目的是拆分容器apollo的高可用架构),最后选择将所有配置都修改第一块网卡信息。
主机信息:192.168.111.135 node8 eth0,还有eth1,eth2
分析:
1、eureka中的yaml文件
[root@node8 test]# grep -R 8080 1
1/application.yml: port: 8080
1/bootstrap.yml: defaultZone: http://${eureka.instance.hostname}:8080/eureka/
1/configservice.properties:server.port= 8080
return InetAddress.getLocalHost();
#Eureka Client的源码在eureka-client模块下,com.netflix.appinfo包下的InstanceInfo类封装了本机信息,其中就包括了IP地址。
源码如果以上逻辑都没有找到合适的网卡,则使用JDK的InetAddress.getLocalhost()
2、临时解决措施:
将所有的地址都写成第一块网卡的地址
#启动命令
export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.ip-address=192.168.111.135
#数据库
#portal
[root@node8 config]# cat apollo-env.properties
#local.meta=http://node8:8080
dev.meta=http://192.168.111.135:8080
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
#lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server:8080
[root@node8 config]#
#默认数据库中启用了dev环境
调试后:
http://node8:8080/
http://node8:8090/ http://node8:8070/
apollo-adminservice
apollo admin
http://node8:8070/system_info.html