Dubbo + etcd 搭配
Posted sp42a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo + etcd 搭配相关的知识,希望对你有一定的参考价值。
选型
确定 Dubbo 3 + ectd 3 的方案了。先单机部署,再集群。
下载 etcd 二进制可执行文件
到 release 查找自己需要的版本。
# 下载
cd /data/etcd/
wget https://github.com/coreos/etcd/releases/download/v$ETCD_VERSION/etcd-v$ETCD_VERSION-linux-amd64.tar.gz
# 解压
tar xvf etcd-v$ETCD_VERSION-linux-amd64.tar.gz
# 复制到/usr/local/bin/下,默认已经有可执行权限了,无需在使用chmod +x。
mv etcd-v$VER-linux-amd64/etcd* /usr/local/bin/
# 或者通过 yum 安装也行
yum install -y etcd
如果是上传 etcd 可执行文件,提示“权限不够”?改下:chmod 777 etcd
使用 etcd
测试下:./etcd --version
,没问题后运行。
etcdctl 是官方提供的客户端程序,我们测试下(最好可以在别的机器上测试)。
# 验证服务状态
./etcdctl --endpoints=http://$YOUR ETCD IP:2379 endpoint health
输出结果:
写入键值对:
./etcdctl --endpoints=localhost:2379 put foo "Hello World!"
如果出现 bash: !": event not found
,可执行:set +H
。
配置
开放防火墙端口
CentOS 6.7 下修改 /etc/sysconfig/iptables
文件,加入 2379
端口和 2380
端口(用于集群通讯)。全部修改完之后重启 iptables:service iptables restart
。你可以验证一下是否规则都已经生效:iptables -L
。
开启远程访问
etcd 安装完成后,默认只能本地访问,如果需要开启远程访问,还需要修改配置文件。我使用的当前文件夹下的配置文件 etcd.conf
,内容如下。
"listen-client-urls":"http://0.0.0.0:2379"
带配置文件启动 etcd:
./etcd --config-file=etcd.conf
nohup ./etcd --config-file=etcd.conf &
与 Dubbo 搭配
笔者开始使用 Dubbo 最新版本 3.0.9,但官方的 etcd 注册中心的驱动一直没有升级,仍在 2.x 时代,于是我只好降级使用 2.7.16。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.16</version>
</dependency>
尽管上述 dubbo 依赖已经包含了 etcd 驱动的类,但缺少 etcd 与 Java 通讯的包,增加下面依赖:
<!-- etcd 注册中心驱动 -->
<dependency>
<groupId>io.etcd</groupId>
<artifactId>jetcd-core</artifactId>
<version>0.7.1</version>
</dependency>
<!-- etcd 注册中心驱动依赖 -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.5.1</version>
</dependency>
连不上 etcd 怎办办?检查防火墙、是否开启远程等的操作,试试把官方 github 的单测EtcdServiceDiscoveryTest
在本地改你 etcd 地址试试。Web 程序启动的时候同时启动 Dubbo 服务端,会比平时启动的时间久一点。
小结
下面是关于 Dubbo + etcd 重量级的文章,之所以说“重量级”,是因为内容太深了,看不懂,只能于此备份一下。
以上是关于Dubbo + etcd 搭配的主要内容,如果未能解决你的问题,请参考以下文章