《云计算与虚拟化技术丛书 Service Mesh实战》—3.2.2服务发现:Consul

举报
华章计算机 发表于 2019/06/05 23:57:45 2019/06/05
【摘要】 本书摘自《云计算与虚拟化技术丛书 Service Mesh实战:基于Linkerd和Kubernetes的微服务实践》一文中的第3章,第3.2.2节,作者是杨彰显。

3.2.2 服务发现:Consul

       1. Consul简介

       第2章我们谈到使用基于文件的服务发现方法,但是由于一些原因可能导致高CPU使用率,影响Linkerd的性能,因此不推荐在产线环境使用该方法。而本节我们将引入一个在产线被广泛使用的服务发现工具Consul,Consul同Vagrant一样也是Hashicorp公司旗下主要产品之一,集服务发现、服务健康监测、键值对数据库,支持跨数据中心服务发现的高可用分布式系统。

       Consul Agent

       Consul Agent是Consul集群中每个机器上长时间运行的守护进程,其运行模式可分为server模式或client模式运行,Consul Agent只能以一种模式运行,要么server模式,要么client模式。

       Consul Client(client模式)

       Consul Client接收请求方发起的请求并转发RPC请求到Consul Server(server模式),然后将Consul Server返回结果传递给请求方,此外,Consul Client加入局域网(LAN)Gossip池以提供成员关系管理、错误检测以及事件广播。

       Consul Server(server模式)

       Consul Server维护整个Consul集群的运行状态,选择leader,响应Consul Client的RPC请求,不同数据中心间万网(WAN)Gossip信息交换以及跨数据中心请求转发。

       数据中心

       每个Consul集群对应一个逻辑或者物理的数据中心。

       Consul架构(如图3-2所示)

image.png

     image.png

图3-2 Consul架构 

       由于本章重点介绍如何配置Linkerd,所以如果你需要了解更多关于Consul的知识,可参考Consul官方文档(https://www.consul.io/docs/index.html)。

       2. 基于Docker部署Consul

       根据上述内容,演示环境中只有三台虚拟机,为此我们约定在其中一台虚拟机部署Consul Server,另外两台部署Consul Client,为了方便后续讲解,我们约定linkerd01部署Consul Server,linkerd02和linkerd03部署Consul Client,部署命令为:  

# 部署Consul Server到linkerd01

# BIND_ADDR=$(ip addr show|grep eth1|grep inet|awk ‘{print $2}’|cut -d’/’ -f1);\

 docker run -d \

 --net=host \

 --name server \

 consul:1.0.5 agent -server -bootstrap -client=0.0.0.0 -bind=$BIND_ADDR

# 部署Consul Client到linkerd02和linkerd03,192.168.1.11为linkerd01的地址,也是Consul Leader地址

# BIND_ADDR=$(ip addr show|grep eth1|grep inet|awk ‘{print $2}’|cut -d’/’ -f1);\ 

docker run -d \

--net=host \

--name client \

consul:1.0.5 agent -bind=$BIND_ADDR -join=192.168.1.11

      完成部署后,可查看Consul集群信息:  

# docker exec server consul members

Node       Address            Status  Type    Build  Protocol  DC   Segment

Linkerd01  192.168.1.11:8301  alive   server  1.0.5  2         dc1  <all>

Linkerd02  192.168.1.12:8301  alive   client  1.0.5  2         dc1  <default>

Linkerd03  192.168.1.13:8301  alive   client  1.0.5  2         dc1  <default>

       默认Consul数据中心为dc1,所有注册到Consul中服务DNS域为service.consul,比如注册服务booking到Consul,则其DNS记录为booking.service.consul。

       注意  

     (1)演示环境中部署一台Consul Server以作演示之用,而实际产线环境中至少需要部署三台Consul Server以确保集群高可用。

     (2)我们约定演示环境中Consul版本为1.0.5。


       3. 部署Dnsmasq

       另外,需要在每台机器部署Dnsmasq,用作Consul DNS缓存,使得所有Consul服务域名的DNS请求转发到本地Dnsmasq加速Consul服务域名解析。具体安装命令及配置参考provision.sh,并且在启动虚拟机时自动安装。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。