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 服务端,会比平时启动的时间久一点。

etcd Web GUI

就是管理界面了。有以下选择:

  • ETCD Keeper,推荐,有 exe 提供,开箱即用
  • etcdv3-browser,要配置 Go 和 nodejs,好像比较麻烦,但好处是前端用 Vue 写,适合我
  • etcd-browser,支持后悔药的 etcd ui ——我不懂 后悔药是什么意思
  • boot4go-etcdv3-browser,作者宣传得很厉害,好像很不错样子,还有 Docker 的。
  • etcd browser,最老的 GUI,直接提供 html,这点很好,立刻可用。后端居然是 nodejs,而且非常简单。不过这项目已经不再更新了,只支持 etcd v2

小结

下面是关于 Dubbo + etcd 重量级的文章,之所以说“重量级”,是因为内容太深了,看不懂,只能于此备份一下。

以上是关于Dubbo + etcd 搭配的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo + etcd 搭配

dubbo与springboot的搭配使用

Nacos服务发现

深度复盘 | 蚂蚁集团万级规模 k8s 集群基建之路

dubbo和zookeeper

Etcd-Etcd快速入门及PromQL查询etcd指标