文档章节

1、consul介绍及部署

andersChow
 andersChow
发布于 2017/07/08 18:32
字数 1100
阅读 153
收藏 1

1. 作用

  • CA型的服务发现注册中间件,支持http及dns协议,通过raft(server间)及gossip(client间)协议保证一致性。
  • 支持kv存储,可以作为简易的配置中心。
  • 通过consul-template,支持服务、kv变更触发通知。
  • 支持健康检查,支持将consul的运行监控(telemetry)发送到 statsd或statsite。

2. 基本概念

  • consul中agent有两种角色,server与client。
    • client负责到server的高效通信,相对为无状态的。 唯一在后台运行的时client端执行了LAN gossip pool,只消耗极少的资源和网络带宽。
    • server负责包括选举领导节点,维护cluster的状态,对所有的查询做出响应,跨数据中心的通信等等
  • 数据流一般为:app -> client -> server -> other-client ->app
  • server集群,建议3个及以上节点,建议每个用到client的服务器都部署一个consul-client

3-1. 部署前提

  • 基于consul的0.8.3版的配置
  • 假设有3台server,192.168.1.2/3/4
  • 将telemetry信息发送到statsd,statsd后面我们使用的是graphite。

3. Server端

3.1 目录规划

类型 路径
consul安装目录 /usr/local/consul/{version}/
server-data目录 /data/consul/{version}/server/data
server-conf目录 /data/consul/{version}/server/conf
server-sh目录 /data/consul/{version}/server/sh
server-pid目录 /data/consul/{version}/server/log
consul_version=0.8.3
mkdir -p /usr/local/consul/${consul_version}/
# server端
mkdir -p /data/consul/${consul_version}/server/data
mkdir -p /data/consul/${consul_version}/server/log
# 其余目录后续会添加

3.2 安装脚本

cd /usr/local/consul/${consul_version}/
wget https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zip
unzip consul_0.8.3_linux_amd64.zip
rm -rf consul_0.8.3_linux_amd64.zip

3.3 配置信息

配置信息放在:/data/consul/0.8.3/server/conf/bootstart_server.conf

{
    "server": true,
    "data_dir": "/data/consul/0.8.3/server/data",
    "datacenter": "datacenter-name",
    "node_name": "server-node-name",
    "log_level": "warn",
    "bootstrap_expect": 3,
    "performance": {
        "raft_multiplier": 4
    },
    "telemetry": {
        "statsd_address": "192.168.1.2:8125"
    },
    "retry_join": ["192.168.1.3","192.168.1.4"]
}

说明:1)每个节点需要修改node_name;2)需要根据环境配置raft_multiplier值,该值越大,实时性越高,对网络要求也越高;3)根据实际情况修改数据中心名称,建议不同环境,不同部门,使用不同的数据中心;4)修改statsd_address和retry_join地址

3.4 启动脚本

生成start-server.sh文件,放在【/data/consul/0.8.3/server/sh】,添加可执行文件

/usr/local/consul/0.8.3/consul agent -config-dir=/data/consul/0.8.3/server/conf -pid-file=/data/consul/0.8.3/server/pid >/data/consul/0.8.3/server/log/run_`date '+%Y-%m-%d_%H_%M_%S.log'` 2>&1 &

##3.5 常用脚本

# 前提服务器上只有一个consul实例
# leave
/usr/local/consul/0.8.3/consul leave

# stop
kill -2 `pgrep -f consul`

# force-stop
kill -9 `pgrep -f consul`

# telemetry
kill -USR1 `pgrep -f consul`

# reload
kill -1 `pgrep -f consul`

# info
/usr/local/consul/0.8.3/consul info

# members
/usr/local/consul/0.8.3/consul members

# tail-f-log
tail -f /data/consul/0.8.3/*/log/`ls -t /data/consul/0.8.3/*/log/ | head -n 1`

# join
/usr/local/consul/0.8.3/consul join 加入的IP地址

4. Client端

4.1 目录规划

类型 路径
client-data目录 /data/consul/{version}/client/data
client-conf目录 /data/consul/{version}/client/data
client-pid目录 /data/consul/{version}/client
client-sh目录 /data/consul/{version}/client/sh
client-log目录 /data/consul/{version}/client/log
consul_version=0.8.3
mkdir -p /usr/local/consul/${consul_version}/
# client端
mkdir -p /data/consul/${consul_version}/client/data
mkdir -p /data/consul/${consul_version}/client/log
# 其余目录后续会添加

4.2 安装脚本

cd /usr/local/consul/${consul_version}/
wget https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zip
unzip consul_0.8.3_linux_amd64.zip
rm -rf consul_0.8.3_linux_amd64.zip

4.3 配置信息

配置信息放在:data/consul/{version}/client/conf/bootstrap_client.conf

{
    "server": false,
    "data_dir": "/data/consul/0.8.3/client/data",
    "datacenter": "datacenter-name",
    "node_name": "client-node-name",
    "log_level": "warn",
    "client_addr": "0.0.0.0",
    "ui": true,
    "telemetry": {
        "statsd_address": "192.168.1.2:8125"
    },
    "retry_join": ["192.168.1.2","192.168.1.3","192.168.1.4"]
}

说明:1)每个节点需要修改node_name;2)根据实际情况修改数据中心名称,建议不同环境,不同部门,使用不同的数据中心;3)修改statsd_address和retry_join地址

4.4 启动脚本

生成start-client.sh文件,放在【/data/consul/0.8.3/client/sh】,添加可执行文件

/usr/local/consul/0.8.3/consul agent -config-dir=/data/consul/0.8.3/client/conf -pid-file=/data/consul/0.8.3/client/pid >/data/consul/0.8.3/client/log/run_`date '+%Y-%m-%d_%H_%M_%S.log'` 2>&1 &

4.5 常用脚本

# 前提服务器上只有一个consul实例
# leave
/usr/local/consul/0.8.3/consul leave

# stop
kill -2 `pgrep -f consul`

# force-stop
kill -9 `pgrep -f consul`

# telemetry
kill -USR1 `pgrep -f consul`

# reload
kill -1 `pgrep -f consul`

# info
/usr/local/consul/0.8.3/consul info

# members
/usr/local/consul/0.8.3/consul members

# tail-f-log
tail -f /data/consul/0.8.3/*/log/`ls -t /data/consul/0.8.3/*/log/ | head -n 1`

# join
/usr/local/consul/0.8.3/consul join 加入的IP地址

© 著作权归作者所有

andersChow
粉丝 2
博文 28
码字总数 18057
作品 0
程序员
私信 提问
攻克痛点:DevOps线上部署的最后一公里

本文根据DBAplus社群【运维技术月·第三周】分享整理而成,文末还有好书送哦~ 因为DevOps打通了开发和运维之间以前不可逾越的鸿沟,使得线上部署已经不再仅仅是运维部门的事情了,所以要保障...

杨彪
2017/12/05
0
0
.netcore consul实现服务注册与发现-单节点部署

一、Consul的基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一...

dotNET跨平台
2018/08/29
0
0
实战中的asp.net core结合Consul集群&Docker实现服务治理

一、前言 在写这篇文章之前,我看了很多关于consul的服务治理,但发现基本上都是直接在powershell或者以命令工具的方式在服务器上面直接输入consul agent .... 来搭建启动consul集群,一旦把...

dotNET跨平台
2018/09/12
0
0
Docker - 容器部署 Consul 集群

Docker - 容器部署 Consul 集群 目录 说明 简介 了解 Consul Consul 使用场景 Consul 优势 Consul 中的概念 安装 准备 Consul 镜像 安装单个 Consul 组装集群 Consul 总结 引用和附件 说明 ...

优惠券发放
04/01
0
0
Consul + Nginx实现自动扩容平台

几个月没有更新博客了,已经长草了,特意来除草。之前基于nginx反向代理使用的是:nginx + confd + etcd的存储方式,最近发现部门DBA同事使用consul + redis + 哨兵实现的主从自动选举切换,不...

小罗ge11
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
22分钟前
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
54分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部