美文网首页
Docker-compose结合Consul实现的服务发现

Docker-compose结合Consul实现的服务发现

作者: 多多米 | 来源:发表于2019-10-08 16:19 被阅读0次

什么是Consul

Consul是HashiCorp公司推出的开源软件,使用GO语言编写,提供了分布式系统的服务注册和发现、配置等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格。Consul不仅具有服务治理的功能,而且使用分布式一致协议RAFT算法实现,有多数据中心的高可用方案,并且很容易和Spring Cloud等微服务框架集成,使用起来非常的简单,具有简单、易用、可插排等特点。使用简而言之,Consul提供了一种完整的服务网格解决方案 。

Consul功能要点

服务发现:应用可以发布如api 或 mysql 等服务,并通过Consul clients 发布服务;其他的客户端就可以使用DNS 或 HTTP 通过Consul 发现这些服务。

健康检查:Consul 提供了诸如服务结果("is the webserver returning 200 OK") 或 本地节点 ("is memory utilization below 90%")等健康检查策略。这些信息可以被某些服务用来监控集群健康度,并切除不健康节点上的访问

KV 存储:Consul 提供基于HHTP API 的层级式KV存储,用户可以用来提供动态配置、特征标记、协调、leader选举等功能

多数据中心:Consul 提供多数据中心用户为不同服务构建额外的抽象层

基础环境

  • Centos7.4 两台
  • host73: 10.0.50.73
  • host74: 10.0.50.74

部署Consul

  • 将Consul安装包下载至本地并解压(两台host上都执行)

[root@10.0.50.74 /data# wget https://releases.hashicorp.com/consul/1.6.0/consul_1.6.0_linux_amd64.zip

  • 解压Consul包(两台host上都执行)
[root@10.0.50.74 /data# unzip consul_1.6.0_linux_amd64.zip
[root@10.0.50.74 /data# mv consul /usr/bin/
  • 启动Consul并将host73加入Consul集群

[root@10.0.50.74 ~# nohup consul agent -server -bootstrap-expect=2 -data-dir=/data/consul -ui -client=0.0.0.0 -bind=10.0.50.74 &
[root@10.0.50.73 ~# nohup consul agent -server -bootstrap-expect=2 -data-dir=/data/consul -ui -client=0.0.0.0 -bind=10.0.50.73 &
[root@10.0.50.73 ~# consul join 10.0.50.74

Consul基本参数:
    -data-dir :  指定agent储存状态的数据目录,必填选项对于server尤其重要,因为他们必须持久化集群的状态
    -config-dir:指定service的配置文件和检查定义所在的位置
    -dev:该参数配置下,不会有任何持久化操作,即不会有任何数据写入到磁盘
    -node:指定节点在集群中的名称,该名称在集群中必须是唯一的(默认采用机器的host)
    -server :指定节点为server,每个数据中心(DC)的server数推荐至少为1,至多为5
    -join :将节点加入到集群
    -ui:启用ui界面
    -datacenter :指定机器加入到哪一个数据中心中
    -client :指定节点为client,指定客户端接口的绑定地址,包括:HTTP、DNS、RPC,默认127.0.0.1,只允许回环接口访问
    -bootstrap-expect :该命令通知consul server我们现在准备加入的server节点个数,该参数是为了延迟日志复制的启动直到我们指定数量的server节点成功的加入后启动
  • 查看Consul集群成员
[root@10.0.50.74 /data#consul members
Node        Address          Status  Type    Build  Protocol  DC   Segment
10.0.50.73  10.0.50.73:8301  alive   server  1.6.0  2         dc1  <all>
10.0.50.74  10.0.50.74:8301  alive   server  1.6.0  2         dc1  <all>

  • 在浏览器访问http://10.0.50.73:8500
image.png

Docker-compose部署 (双节点,以下操作在两台主机上都要执行)

  • 查看docker-compose版本
[root@10.0.50.74 /data#docker-compose -v
docker-compose version 1.24.0, build 0aa59064
  • 新建docker-compose目录
[root@10.0.50.74 /data#mkdir docker-compose
[root@10.0.50.74 /data#cd docker-compose/
[root@10.0.50.74 /data/docker-compose#vim docker-compose.yml
  • 编辑docker-compose.yml文件
version: '3.7'
services:
  company-serve:
    image: 10.0.50.13/microservice/company-server:J6.5.0
    ports:
     - 8801:8801
    network_mode: "host"
    restart: on-failure:5
    volumes:
     - /data/logs/8801:/data/logs/8801

  search-server:
    image: 10.0.50.13/microservice/search-server:J6.5.0-30
    ports:
     - 8803:8803
    network_mode: "host"
    restart: on-failure:5
    volumes:
     - /data/logs/8803:/data/logs/8803
  • 启动服务
[root@10.0.50.73 /data/docker-compose#docker-compose up -d
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Pulling search-server (10.0.50.13/microservice/search-server:J6.5.0-30)...
J6.5.0-30: Pulling from microservice/search-server
0e6ce52a1c10: Already exists
401472d2a8c9: Already exists
6aa9888b426a: Already exists
20d22989c267: Already exists
b52a913f9b0b: Already exists
56705ca8b497: Already exists
67f80b1cfa6f: Already exists
39eafd9f7f85: Already exists
Digest: sha256:f8a60aaf919103d35e983603a62ef0061826d0c4b70fd9d5550d9ccc0e02f8ab
Status: Downloaded newer image for 10.0.50.13/microservice/search-server:J6.5.0-30
Pulling company-serve (10.0.50.13/microservice/company-server:J6.5.0)...
J6.5.0: Pulling from microservice/company-server
0e6ce52a1c10: Already exists
401472d2a8c9: Already exists
6aa9888b426a: Already exists
20d22989c267: Already exists
b52a913f9b0b: Already exists
56705ca8b497: Already exists
67f80b1cfa6f: Already exists
f2a665a054d9: Already exists
Digest: sha256:1d582ed9e4a819790a500f0be25c26c767864237fa0999ac5a612d7eacbdab49
Status: Downloaded newer image for 10.0.50.13/microservice/company-server:J6.5.0
Creating docker-compose_company-serve_1 ... done
Creating docker-compose_search-server_1 ... done

注意:docker-compose命令需在与.yml文件同级目录下执行

  • 在浏览器访问http://10.0.50.73:8500验证服务是否已自动发现
image.png
image.png

相关文章

网友评论

      本文标题:Docker-compose结合Consul实现的服务发现

      本文链接:https://www.haomeiwen.com/subject/ibxmyctx.html