Docker容器——consul群集服务搭建与consul-template

一、consul简介

1.1.1、consul 关键特性

  • 服务发现:支持服务发现。你可以通过 DNS 或 HTTP 的方式获取服务信息。
  • 健康检查:支持健康检查。可以提供与给定服务相关联的任何数量的健康检查(如 web 状态码或 cpu 使用率)。
  • K/V 存储:键/值对存储。你可用通过 consul 存储如动态配置之类的相关信息。
  • 多数据中心:支持多数据中心,开箱即用。WEB UI:支持
  • WEB UI。快速了解你的服务现在的运行情况,一目了然。

1.1.2、consul 术语

  • node:节点,需要 consul 注册发现或配置管理的服务器。
  • agent:consul 中的核心程序,它将以守护进程的方式在各个节点运行,有 client 和 server 启动模式。每个 agent
    维护一套服务和注册发现以及健康信息。 client:agent 以 client 模式启动的节点。在该模式下,该节点会采集相关信息,通过
    RPC 的方式向 server 发送。
  • server:agent 以 server 模式启动的节点。一个数据中心中至少包含 1 个 server 节点。不过官方建议使用 3 或
    5 个 server 节点组建成集群,以保证高可用且不失效率。server 节点参与 Raft、维护会员信息、注册服务、健康检查等功能。
  • datacenter:数据中心,私有的,低延迟的和高带宽的网络环境。一般的多个数据中心之间的数据是不会被复制的,但可用过 ACL
    replication 或使用外部工具 onsul-replicate。Consensus,共识协议,使用它来协商选出 leader。
  • Gossip:consul 是建立在 Serf,它提供完整的 gossip protocol,维基百科。LAN Gossip,Lan
    gossip 池,包含位于同一局域网或数据中心上的节点。WAN Gossip,只包含 server 的 WAN Gossip
    池,这些服务器主要位于不同的数据中心,通常通过互联网或广域网进行通信。
  • members:成员,对 consul 成员的称呼。提供会员资格,故障检测和事件广播。有兴趣的朋友可以深入研究下。

二、consul 端口说明

  • TCP/8300 端口用于服务器节点。客户端通过该端口 RPC 协议调用服务端节点。
  • TCP/UDP/8301 端口用于单个数据中心所有节点之间的互相通信,即对 LAN
    池信息的同步。它使得整个数据中心能够自动发现服务器地址,分布式检测节点故障,事件广播(如领导选举事件)。
  • TCP/UDP/8302 端口用于单个或多个数据中心之间的服务器节点的信息同步,即对 WAN
    池信息的同步。它针对互联网的高延迟进行了优化,能够实现跨数据中心请求。
  • 8500 端口基于 HTTP 协议,用于 API 接口或 WEB UI 访问。
  • 8600 端口作为 DNS 服务器,它使得我们可以通过节点名查询节点信息。

三、consul服务架构和核心概念

在这里插入图片描述

  • 图中的SERVER是consul服务端高可用集群,CLIENT是consul客户端。
  • 这里存在两个数据中心:DATACENTER1、DATACENTER2。每个数据中心有着 3 到 5 台
    server(该数量使得在故障转移和性能之间达到平衡)。
  • Consul利用两个不同的gossip pool。我们分别把他们称为局域网池(LAN Gossip Pool)或广域网池(WAN
    Gossip Pool)。每个Consul数据中心(Datacenter)都有一个包含所有成员(Server和Client)的LAN
    gossip pool。
四、案例

Consul服务器
Mkdir /root/consul
在这里插入图片描述
传入安装包
在这里插入图片描述
解包
在这里插入图片描述
Mv consul /usr/local/bin
在这里插入图片描述

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.100.131 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

在这里插入图片描述
通过httpd api 获取群集信息
在这里插入图片描述
在这里插入图片描述
容器服务自动加入Nginx群集
安装gliderlabs/Registrator Gliderlabs/Registrator可检查容器运行状态自动注册,还可以注销docker容器的服务到服务配置中心目前支持Consul、Etcd和Skydns2在192.168.100.130节点执行以下操作

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://192.168.100.131:8500

在这里插入图片描述
测试:
在这里插入图片描述
测试服务发现功能是否正常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试自动移除功能
在这里插入图片描述
在这里插入图片描述
实现反向代理

Vim  nginx.ctmplupstream 
http_backend {  
    {{range service "nginx"}}   
     server {{.Address}}:{{.Port}};   
     {{end}}
} 

server {  
	listen 83;  
	server_name localhost 192.168.100.131;
	access_log /var/log/nginx/kgc.cn-access.log;
	index index.html index.php;  
location / {     
	proxy_set_header HOST $host;
	proxy_set_header X-Real-IP $remote_addr;     
	proxy_set_header Client-IP $remote_addr;     
	proxy_set_header X-Forwarded-For 
	$proxy_add_x_forwarded_for;     
	proxy_pass http://http_backend;  
    }
}

在这里插入图片描述
安装nginx准备环境

yum -y install gcc gcc-c++ pcre-devel zlib-devel

在这里插入图片描述
解包到/opt下

tar zxvf nginx-1.12.0.tar.gz -C /opt

在这里插入图片描述
编译安装Nginx
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改配置文件

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
创建vhost文件夹
在这里插入图片描述
在这里插入图片描述
路径优化在这里插入图片描述
传入consul-template
在这里插入图片描述
解包
在这里插入图片描述
配置并启动template

consul-template -consul-addr 192.168.100.131:8500 \
> -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
> --log-level=info

在这里插入图片描述
在vhost底下会生成一个kgc.conf文件
在这里插入图片描述
在这里插入图片描述

启动Nginx
在这里插入图片描述
在这里插入图片描述

测试访问192.168.100.131:83
在这里插入图片描述
看日志:
在这里插入图片描述
在这里插入图片描述
增加一个新的nginx容器节点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值