【Linux】【Services】【SaaS】Docker+kubernetes(9. 安装consul实现服务注册发现)
1. 简介
1.1. 官方网站:
https://www.consul.io
1.2. Consul的功能:
服务发现:通过DNS或HTTP接口使得消费者发现服务,应用程序可以轻松找到所依赖的服务。
健康检查:防止将请发转发不健康的主机。
键值存储:可以使用分层键/值存储,比如功能标记、动态配置等。
多数据中心:开箱即用,不需要复杂的配置。这就意味着不用建立抽象的逻辑来扩展多个地区。
1.3. Consul集群介绍:
-- Consul agent是Consul核心工作,分为client和server两种工作模式。默认以client模式运行,提供服务注册、健康检查、转发查询给server leader。server模式启动时使用-server选项指定,用于维护Consul集群状态、Raft协议进行选举。
-- agent必须在每个Consul节点运行,所有运行Consul agent节点构成Consul集群。
-- 官方建议Consul集群至少3或5个节点运行Consul agent server模式,client节点不限。
-- 通过join或rejoin加入集群。一旦加入,集群信息使用gossip算法同步到整个集群节点。
2. 环境
2.1. 机器列表
2.2. 版本:
3. 安装与配置
3.1. Nginx
yum安装
yum -y install nginx
下载upsync模块
git clone https://github.com/weibocom/nginx-upsync-module.git
3.2. Consul
下载
https://releases.hashicorp.com/consul/1.0.6/consul_1.0.6_linux_amd64.zip?_ga=2.258678857.2141400986.1520232419-1122875496.1520232419
安装
在server端,10.30.2.45/46/47
创建一个独立分区给consul用
~]# df -h /data/consul
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_system-lv_consul 10G 33M 10G 1% /data/consul
修改/usr/lib/systemd/system/consul.service
[Unit]
Description=Consul service discovery agent
Requires=network-online.target
After=network-online.target
[Service]
#User=consul
#Group=consul
EnvironmentFile=-/etc/consul.conf
#Environment=GOMAXPROCS=2
Restart=on-failure
ExecStartPre=[ -f "/var/run/consul/consul.pid" ] && /usr/bin/rm -f /var/run/consul/consul.pid
ExecStart=/usr/bin/consul $CONSUL_FLAGS $CONSUL_CLIENT $CONSUL_BIND
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGTERM
TimeoutStopSec=5
[Install]
WantedBy=multi-user.target
修改/etc/consul.conf,把172.16.0.45/46/47
CONSUL_FLAGS="agent -server -bootstrap-expect=2 -syslog -ui -data-dir=/data/consul -config-dir=/etc/consul.conf.d/ -pid-file=/var/run/consul/consul.pid -node=hctjoscache01 -datacenter=hccos -retry-join consul.hccos.cn:8301 -advertise=172.16.0.45 -enable-script-checks"
CONSUL_CLIENT="-client=0.0.0.0"
CONSUL_BIND="-bind=172.16.0.45"
CONSUL_FLAGS="agent -server -bootstrap-expect=2 -syslog -ui -data-dir=/data/consul -config-dir=/etc/consul.conf.d/ -pid-file=/var/run/consul/consul.pid -node=hctjoscache02 -datacenter=hccos -retry-join consul.hccos.cn:8301 -advertise=172.16.0.46 -enable-script-checks"
CONSUL_CLIENT="-client=0.0.0.0"
CONSUL_BIND="-bind=172.16.0.46"
CONSUL_FLAGS="agent -server -bootstrap-expect=2 -syslog -ui -data-dir=/data/consul -config-dir=/etc/consul.conf.d/ -pid-file=/var/run/consul/consul.pid -node=hctjoscache03 -datacenter=hccos -retry-join consul.hccos.cn:8301 -advertise=172.16.0.47 -enable-script-checks"
CONSUL_CLIENT="-client=0.0.0.0"
CONSUL_BIND="-bind=172.16.0.47"
修改DNS记录,添加两条A记录,这两条记录都指向Nginx机器
consul IN A 172.16.0.148
consul IN A 172.16.0.149
在Nginx机器上添加TCP转发
server {
listen 8301;
proxy_connect_timeout 5s;
proxy_timeout 30s;
proxy_pass consul-server;
}
upstream consul-server {
server 172.16.0.45:8301 max_fails=3 fail_timeout=10s;
server 172.16.0.46:8301 max_fails=3 fail_timeout=10s;
server 172.16.0.47:8301 max_fails=3 fail_timeout=10s;
}
启动服务
systemctl start consul
查看consul的节点
[root@hctjoscache03 ~]# consul members
Node Address Status Type Build Protocol DC Segment
hctjoscache01 172.16.0.45:8301 alive server 1.0.6 2 hccos <all>
hctjoscache02 172.16.0.46:8301 alive server 1.0.6 2 hccos <all>
hctjoscache03 172.16.0.47:8301 alive server 1.0.6 2 hccos <all>
在10.30.2.95/96/97/98上分别默认安装和启动httpd,用来测试(过程略)
在/etc/consul.conf.d/下面建立httpd.json和web_check.sh
[root@hctjoscache01 consul.conf.d]# cat httpd.json
{
"service": {
"name": "httpd",
"tags": ["primary"],
"address": "172.16.0.95",
"port": 80,
"enableTagOverride": false,
"checks": [
{
"script": "/etc/consul.conf.d/web_check.sh",
"interval": "30s"
}
]
}
}
[root@hctjoscache01 consul.conf.d]# cat web_check.sh
curl -i "172.16.0.95:80" >> /dev/null 2>&1
记得给web_check.sh一个执行权限,如果脚本没执行成功也会认为服务不可用
使用这个接口来查询服务状态
curl 'http://localhost:8500/v1/health/service/httpd?passing'
3.3. Consul-template
4. 命令详解
4.1. consul
| 选项 | 描述 |
| -advertise | 通告地址 |
| -bind | 集群节点之间通讯地址 |
| -bootstrap | 设置服务器为bootstrap模式,在一个DC中只有一个server处于bootstrap模式。一般初始化第一台Consul时指定,自选举为leader |
| -bootstrap-expect | 在一个DC钟期望提供server节点数目,consul会一直等到指定的server数目才会引导整个集群,选举leader,不能与bootstrap同时使用 |
| -client | 设置客户端访问地址,包括RPC、DNS,默认为127.0.0.1 |
| -config-file | 从JSON配置文件中读取 |
| -data-dir | 指定存放agent server集群状态目录,以免系统重启丢失 |
| -dc | 数据中心名称,默认dc1 |
| -http-port | HTTP API监听端口 |
| -join | 加入一个已经启动的agent,可以指定多个agent地址 |
| -node | 节点名称,必须在集群中唯一的,默认是主机名 |
| -rejoin | 忽略先前的离开,再次启动后尝试加入集群 |
| -server | 切换agent模式到server模式,每个集群至少有一个server |
| -ui | 启用内置的Web UI |
| -ui-dir | Web UI的资源目录 |
【Linux】【Services】【SaaS】Docker+kubernetes(9. 安装consul实现服务注册发现)的更多相关文章
- Consul 多数据中心下的服务注册发现与配置共享
1. Consul简介 Consul是HashiCorp公司推出的开源软件,它提供了一套分布式高可用可横向扩展的解决方案,能为微服务提供服务治理.健康检查.配置共享等能力. Eurake2.x ...
- docker及k8s安装consul
一.docker部署consul集群 参考文献:https://www.cnblogs.com/lonelyxmas/p/10880717.html https://blog.csdn.net/qq_ ...
- rancher说明为什么需要按照指定版本安装以及rancher和节点linux环境配置-docker指定版本安装
rancher说明为什么需要按照指定版本安装以及rancher和节点linux环境配置-docker指定版本安装 待办 https://blog.csdn.net/CSDN_duomaomao/art ...
- 服务注册发现consul之一:consul介绍、安装、及功能介绍
Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发.它具有很多优点.包括:基于 raft 协议,比较简洁: 支持健康检查, 同时支持 HTTP 和 ...
- Centos安装Consul微服务
一.简介 Consul([ˈkɒnsl],康搜)是注册中心,服务提供者.服务消费者等都要注册到Consul中,这样就可以实现服务提供者.服务消费者的隔离.除了Consul之外,还有Eureka.Zoo ...
- 基于docker,consul,consul-template, registrator, nginx服务注册发现集群
介绍 该工程主要实现服务的自动注册发现,从而达到提高运维效率,做到服务的自动发现和动态扩展. 服务注册发现 服务启动后自动被发现 动态变更负载均衡 自动伸缩 工具 1.Registrator 这是 ...
- .netcore consul实现服务注册与发现-单节点部署
原文:.netcore consul实现服务注册与发现-单节点部署 一.Consul的基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分 ...
- .netcore consul实现服务注册与发现-集群部署
一.Consul的集群介绍 Consul Agent有两种运行模式:Server和Client.这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关 ...
- 一个故事,一段代码告诉你如何使用不同语言(Golang&C#)提供相同的能力基于Consul做服务注册与发现
目录 引言 什么是微服务 传统服务 微服务 什么是服务注册与服务发现 为什么要使用不同的语言提供相同的服务能力 服务协调器 服务注册 Golang C#(.NetCore3.1) 服务发现 通过Htt ...
随机推荐
- SpringBoot中使用@ConfigurationProperties提示:Configuration Annotation Processor not found in classpath
问题 Springboot1.5以上版本,在使用 @ConfigurationProperties注解的时候会提示Spring Boot Configuration Annotation Proces ...
- R语言中文分词包jiebaR
R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...
- Java中禁止浏览器开启缓存的方法命令
响应头里添加禁止浏览器缓存的内容 Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache Expires: 0 其中,C ...
- 来了!公开揭密团队成员开发鸿蒙 OpenHarmony 的完整过程(收获官方7000奖金和开发板等,1w字用心总结)
背景 随着 OpenHarmony 组件开发大赛结果公布,我们的团队成员被告知获得了二等奖,在开心之余也想将我们这段时间宝贵的开发经验写下来与大家分享,当我们看到参赛通知的时候已经是 9 月中旬的时候 ...
- 菜鸡的Java笔记 第十一 - java 封装性
1.1封装的基础实现. 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保 ...
- redis集群安装搭建
vi redis-6379.conf #包含通用配置 include "/usr/local/redis/conf/redis-common.conf" pidfile &qu ...
- 低代码开发Paas平台时代来了
概述 **本人博客网站 **IT小神 www.itxiaoshen.com 低代码理论 概念 低代码开发基于可视化和模型驱动的概念,结合了云原生和多终端体验技术,它可以在大多数业务场景中,帮助企业显著 ...
- [Bzoj 1192][HNOI2006]鬼谷子的钱袋(二进制优化多重背包)
(人生第一篇bzoj题解有点激动 首先介绍一下题目: 看它题目那么长,其实意思就是给定一个数a,求将其拆分成n个数,通过这n个数可以表示出1~a中所有数的方案中,求最小的n. 您看懂了嘛?不懂咱来举个 ...
- Codeforces 453E - Little Pony and Lord Tirek(二维线段树+ODT)
Codeforces 题目传送门 & 洛谷题目传送门 一道难度 *3100 的 DS,而且被我自己搞出来了! 不过我终究还是技不如人,因为这是一个 \(n\log^2n\) + 大常数的辣鸡做 ...
- ping 的原理
ping 的原理ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接.ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机.ICMP ...