Docker容器---docker-Consul部署

发布于:2024-04-30 ⋅ 阅读:(28) ⋅ 点赞:(0)

一、Docker-consul简介

1、概述

consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。
服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server 和 client。 每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。
安装consul是用于服务注册,也就是容器本身的一些信息注册到consul里面,其他程序可以通过consul获取注册的相关服务信息,这就是服务注册与发现。

2、Consul两种模式

client模式下,所有注册到当前节点的服务会被转发到server节点,本身是不持久化这些信息。
server模式下,功能和client模式相似,唯一不同的是,它会把所有的信息持久化到本地,这样遇到故障,信息是可以被保留的。
server-leader是所有server节点的老大,它和其它server节点不同的是,它需要负责同步注册的信息给其它的server节点,同时也要负责各个节点的健康监测。

二、Consul特性

1、特性

  • 支持健康检查、允许存储键值对

  • 基于Golong语言,可移植性强

  • 支持ACL访问控制

2、应用场景

Consul的应用场景包括服务发现、服务隔离、服务配置:

服务发现场景中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。
服务隔离场景中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。
服务配置场景中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。
Consul可以帮助系统管理者更清晰的了解复杂系统内部的系统架构,运维人员可以将Consul看成一种监控软件,也可以看成一种资产(资源)管理系统。

三、部署Consul集群(server端)

1、建立Consul服务

[root@localhost ~]#cd /opt/
[root@localhost opt]#mkdir consul
[root@localhost opt]#cd /opt/consul/
[root@localhost consul]#rz -E
rz waiting to receive.
[root@localhost consul]#ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]#unzip consul_0.9.2_linux_amd64.zip 
Archive:  consul_0.9.2_linux_amd64.zip
  inflating: consul                  
[root@localhost consul]#mv  consul /usr/local/bin/

[root@localhost consul]#consul --version
Consul v0.9.2
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

2、设置代理,在后台启动consul服务端

[root@localhost consul]#consul agent \
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.10.100 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
[1] 17895
[root@localhost consul]#netstat  -natp | grep consul
tcp        0      0 192.168.10.100:8300     0.0.0.0:*               LISTEN      17895/consul        
tcp        0      0 192.168.10.100:8301     0.0.0.0:*               LISTEN      17895/consul        
tcp        0      0 192.168.10.100:8302     0.0.0.0:*               LISTEN      17895/consul        
tcp6       0      0 :::8500                 :::*                    LISTEN      17895/consul        
tcp6       0      0 :::8600                 :::*                    LISTEN      17895/consul    

3、查看集群信息

[root@localhost consul]#consul members  #查看members状态
Node             Address              Status  Type    Build  Protocol  DC
consul-server01  192.168.10.100:8301  alive   server  0.9.2  2         dc1
[root@localhost consul]#consul operator raft list-peers  #查看集群状态
Node             ID                   Address              State   Voter  RaftProtocol
consul-server01  192.168.10.100:8300  192.168.10.100:8300  leader  true   2
[root@localhost consul]#consul info | grep leader   #查看详细信息
	leader = true
	leader_addr = 192.168.10.100:8300

四、Consul部署(Client端)

1、安装Gliderlabs/Registrator Gliderlabs/Registrator

容器服务自动加入nginx集群

[root@localhost ~]#docker run -d \
> --name=registrator \
> --net=host \
> -v /var/run/docker.sock:/tmp/docker.sock \
> --restart=always \
> gliderlabs/registrator:latest \
> --ip=192.168.10.101 \
> consul://192.168.10.100:8500


[root@localhost ~]#docker images


[root@localhost ~]#docker ps -a

2、测试服务发现功能是否正常

[root@localhost ~]#systemctl restart docker
[root@localhost ~]#docker run -itd -p:83:80 --name test-01 -h test01 nginx


[root@localhost ~]#docker run -itd -p:84:80 --name test-02 -h test02 nginx


[root@localhost ~]#docker run -itd -p:88:80 --name test-03 -h test03 httpd


[root@localhost ~]#docker run -itd -p:89:80 --name test-04 -h test04 httpd

[root@localhost ~]#docker ps -a

3、验证 http 和 nginx 服务是否注册到 consul

浏览器中,输入 http://192.168.10.100:8500,在 Web 页面中“单击 NODES”,然后单击“consurl-server01”,会出现 5 个服务。


网站公告

今日签到

点亮在社区的每一天
去签到