什么是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

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验证服务是否已自动发现


网友评论