zoukankan      html  css  js  c++  java
  • 解决dubbo注册zookepper服务IP乱入问题的三种方式

    最近做一个项目引入了dubbo+zookepper的分布式服务治理框架。在应用的发布的时候出现一个怪问题。zookepper服务是起在开发服务器192.168.23.180上。本机起应用服务提供者注册到192.168.23.180上的dubbo服务可以注册成功,用dubbo-admin看也是本机的IP:10.1.24.20。本机起的客户端程序也可以正常调用。但是服务提供者发布到192.168.23.180服务器上去就不行了。发布到服务器上注册的服务地址就变成了124.232.132.94:20883,这个地址消费者根本就找不到,所以老是报连接超时。按道理来说应该是192.168.23.180是服务提供者的地址才对。开始以为是代码里写了一个124.232.132.94这样的地址,搜了一遍没有找到。搜了一遍服务器的配置也没有这样一个地址。这个地址不知道是从哪里来的。应为服务提供者和zookepper在一台机器上,将服务提供者的注册地址改成127.0.0.1,发现还是一样的注册上去后就变成了124.232.132.94。于是怀疑是不是服务器上做了地址转发什么的。
    上网找了一些资料发现原来是由于服务器上配了DNS的问题。
    经过测试解决办法有以下几个:
    1、去掉服务器上的DNS配置
    找到服务器上的/etc/resolv.conf 将DNS配置去掉或配置成8.8.8.8或配成192.168.23.180这样这台服务器的DNS不可用。
    参考配置如下
    #nameserver 222.246.129.80
    #nameserver 59.51.78.210
    #nameserver 8.8.8.8
    nameserver 192.168.23.180
    #search localdomain
    服务启动的时候会报一个"未知的名称或服务"的错误,但是不要紧,服务可以正常启动。也可以正常注册到zookepper,注册的地址也是真实的服务器地址。客户端可以正常访问。
     
    2、在工程duboo注册服务配置文件里指定IP
    把管理控制台中dubbo/webapps/ROOT/WEB-INF/dubbo.properties文件中加入dubbo.protocol.host=192.168.23.180,然后在Dubbo服务的dubbo配置文件<dubbo:protocol name="dubbo" port="20883"  />中加入 host="192.168.23.180",在Dubbo消费者端加入<dubbo:protocol host="192.168.0.123" />的配置。然后重启Dubbo管理员控制台、停止消费者端,停止服务提供端,启动服务提供端,再启动消费者端。
    参考配置如下:
    服务提供者provider.xml
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" host="192.168.23.180" port="20883" />
    消费者consumer.xml
    <dubbo:protocol host="192.168.23.180" />
    配置完了后在dubbo-admin控制台可以看到服务提供者注册到zookepper上的dobbo服务已经是正常的192.168.23.180。消费者显示的还是consumer://124.232.132.94/***** 但不影响调用。
     
    3、在服务器上/etc/hosts,上配置主机名和注册服务的IP。如:192.168.23.180 host2
    没有配置之前ping 主机名host2 返回的是124.232.132.94
    ping host2
    PING host2 (124.232.132.94) 56(84) bytes of data.
    64 bytes from 124.232.132.94: icmp_seq=1 ttl=55 time=5.67 ms
    在/etc/hosts里配置IP和主机名192.168.23.180 host2 后ping主机名host2返回 192.168.23.180
    ping host2
    PING host2 (192.168.23.180) 56(84) bytes of data.
    64 bytes from host2 (192.168.23.180): icmp_seq=1 ttl=64 time=0.024 ms
    配置完后,服务注册IP地址正常,消费者可以正常访问。
     
    以上三种方式都可以解决问题,但是第3种方式更加直接方便,更好。
     
    转自:https://blog.csdn.net/fullbug/article/details/52739580
  • 相关阅读:
    python常用包收集
    python pep 8
    常用python字符串处理
    安全资源整理
    WordPress下载安装简单配置实例
    PHP框架学习之Laravel基本功能
    PHP框架学习之Laravel安装
    PHP面试题之优化
    PHP面试题之小杂鱼
    PHP面试题之文件目录操作
  • 原文地址:https://www.cnblogs.com/flywang/p/8902090.html
Copyright © 2011-2022 走看看