Docker consul

news2024/11/18 21:29:28

目录

一、Docker consul简介

二、Consul优势

三、Consul中的概念

四、部署

1、consul服务器配置

2、查看集群信息

3、在浏览器上进到consul的界面进行管理

4、容器服务自动注册到consul集群

5、consul节点配置nginx

6、配置模板信息

7、配置并启动consul-template

8、测试


一、Docker consul简介

       Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由HashiCorp公司用Go语言开发, 基于Mozilla Public License 2.0的协议进行开源。Consul支持健康检查,并允许HTTP、GRPC和DNS协议调用 API 存储键值对。

二、Consul优势

Consul相比zookeeper、Etcd、doozerd、eureka有什么优势

  • 使用Raft算法来保证一致性, 比复杂的Paxos算法更直接. 相比较而言, zookeeper采用的是 Paxos, 而etcd使用的则是Raft.

  • 支持多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟,分片等情况等. zookeeper 和 etcd 均不提供多数据中心功能的支持。

  • 支持健康检查。 etcd 不提供此功能。

  • 支持 HTTPDNS 和 GPRS 协议接口。 zookeeper 的集成较为复杂,etcd 只支持 http 协议。

  • 官方提供WEB管理界面,etcd无此功能。

三、Consul中的概念

  • Client:表示 Consul 客户端模式,是 Consul 节点的一种模式,所有注册到 Client 节点的服务会被转发到 Server 。本身无状态不持久化如何数据。Client 通过 HTTP、DNS、GRPC 接口请求转发给局域网内的服务端集群。

  • Server:表示 Consul 的服务端模式, Server 功能和 Client 都一样,不同的是 Server 持久化数据到本地。在局域网内与本地 Client 通讯,通过广域网与其他数据中心通讯。每个数据中心的 Server 数量推荐为 3 个或是 5 个。

  • Server-Leader :表示这个 Server 是它们的老大,它和其它 Server 不一样的一点是,它需要负责同步注册的信息给其它的 Server 节点,同时也要负责各个节点的健康监测。如果 Leader 宕机了,通数据中心的所有 Server 内部会使用Raft算法来在其中选取一个 Leader 出来。

  • Agent :Agent 是 Consul 的核心进程,Agent 的工作是维护成员关系信息、注册服务、健康检查、响应查询等等。Consul 集群的每一个节点都必须运行 agent 进程。

四、部署

服务器Consul:

​IP:192.168.80.8

服务器docker:

​IP:192.168.80.9

1、consul服务器配置

mkdir /opt/consul
cd /opt/consul
上传安装包
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/

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

consul agent \      #使用的是agent模式
-server \           #使用的是server模式
-bootstrap \        #前端框架
-ui \               #可被访问的界面
-data-dir=/var/lib/consul-data \        #可被访问的界面
-bind=192.168.80.8 \                   #consul服务器地址
-client=0.0.0.0 \                       #监听地址,监听所有含有registration服务的服务器地址
-node=consul-server01 &> /var/log/consul.log &         #节点名称写入日志,并且后台运行
netstat -natp | grep consul

启动consul后默认会监听5个端口:
8300:replication、leader farwarding的端口
8301:lan cossip的端口
8302:wan gossip的端口
8500:web ui界面的端口
8600:使用dns协议查看节点信息的端口

2、查看集群信息

查看members状态查看集群状态

3、在浏览器上进到consul的界面进行管理

http://consul的IP地址:8500
#8500默认是登录consul的端口号

在服务节点上也可以直接以命令的方式,查看一部分节点信息

curl 127.0.0.1:8500/v1/status/peers		#查看集群server成员
["192.168.80.8:8300"]
curl 127.0.0.1:8500/v1/status/leader	#集群Raf leader
"192.168.80.0:8300"
curl 127.0.0.1:8500/v1/catalog/services	#注册的所有服务
{"consul":[]}		  #没有注册过服务
curl 127.0.0.1:8500/v1/catalog/服务名字  #查看被监控服务的服务信息
curl 127.0.0.1:8500/v1/catalog/nodes    #查看node节点详细信息

4、容器服务自动注册到consul集群

在docker服务器上进行操作

安装 Gliderlabs/Registrator
Gliderlabs/Registrator 可检查容器运行状态自动注册,还可注销 docker 容器的服务到服务配置中心。目前支持 Consul、Etcd 和 SkyDNS2

docker run -d \
--name=registrator \            #容器名字
--net=host \                    #网络使用host
-v /var/run/docker.sock:/tmp/docker.sock \    #网络使用host
--restart=always \              #重启策略,总是重启
gliderlabs/registrator:latest \  #使用的镜像名字以及标签
--ip=192.168.80.100 \            #容器ID地址
consul://192.168.80.8:8500       #配置中心的位置

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

docker run -itd -p:81:80 --name test1 -h test01 nginx
docker run -itd -p:82:80 --name test2 -h test02 nginx
docker run -itd -p 83:80 --name test3 -h test03 httpd
docker run -itd -p 84:80 --name test4 -h test04 httpd

添加完成后到consul的主界面查看 

5、consul节点配置nginx

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

useradd -M -s /sbin/nologin nginx

tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd /opt/nginx-1.12.0/
./configure 
--prefix=/usr/local/nginx 
--user=nginx 
--group=nginx && make -j && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

安装完成之后,找到配置文件,找到http模块

cd /usr/local/nginx/conf

vim nginx.conf
17 http {
18     include       mime.types;
19     include       vhost/*.conf;
20     default_type  application/octet-stream;

启动nginx

6、配置模板信息

vim /opt/consul/nginx.ctmpl

upstream http_backend {			        #协议的后端
  {{range service "nginx"}}             #服务的范围只收集nginx信息
   server {{.Address}}:{{.Port}};		#此处引用的变量会指向后端的地址和端口(动态变化)
   {{end}}
}
#收集信息,并将收集到的信息展现为IP和端口信息

server {
  listen 84;
  server_name localhost 192.168.80.8;		#反向代理的服务器地址,前端服务器地址
  access_log /var/log/nginx/lhk.com-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;		#后端真实IP
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;		#转发地址
    proxy_pass http://http_backend;
  }
}

7、配置并启动consul-template

unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin/

在前台启动 template 服务,启动后不要按 ctrl+c 中止 consul-template 进程。
consul-template --consul-addr 192.168.80.8:8500 \
--template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

另外打开一个终端查看生成配置文件
cat /usr/local/nginx/conf/vhost/lhk.conf

8、测试

在docker服务器上再继续创建一个nginx容器

先在管理页面处查看:

 再到consul服务节点去查看:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java创建pdf的代码

一、概述 以下代码可以在指定文件夹内创建一个简历pdf。 以下代码生成pdf,主要是设置cell所占的行、列、内容。 二、代码 1.需要的jar包 itext-asian-5.2.0.jar itextpdf-5.5.5.jar2.个人信息类MsgUtil.java 这个类里面放了个人信息;也可以放多个人…

Python量化投资——股票择时到底能否赚钱?TA-Lib中33种技术指标有效性回测研究

TA-Lib中33种技术指标回测研究Python量化投资——TA-Lib中33种股票择时技术指标的有效性研究为什么要做这个评测技术指标清单评测方法评测工具期待你的意见Python量化投资——TA-Lib中33种股票择时技术指标的有效性研究 为什么要做这个评测 技术指标是股票交易中最常用的技术…

CSS 常见布局

文章目录CSS 常见布局单列布局单列布局&#xff08;不通栏&#xff09;单列布局&#xff08;通栏&#xff09;双列布局floatoverflow:hiddenflexgridCSS 常见布局 单列布局 单列布局&#xff08;不通栏&#xff09; <!DOCTYPE html> <html><head><meta …

推荐系统之推荐中心逻辑

5.5 推荐中心逻辑 学习目标 目标 无应用 无 5.5.1 推荐中心作用 推荐中一般作为整体召回结果读取与排序模型进行排序过程的作用&#xff0c;主要是产生推荐结果的部分。 5.5.2 推荐目录 server目录为整个推荐中心建立的目录 recall_service.:召回数据读取目录reco_centor:推…

如何利用 Selenium 对已打开的浏览器进行爬虫!

大家好&#xff0c;我是安果&#xff01;在对某些网站进行爬虫时&#xff0c;如果该网站做了限制&#xff0c;必须完成登录才能展示数据&#xff0c;而且只能通过短信验证码才能登录这时候&#xff0c;我们可以通过一个已经开启的浏览器完成登录&#xff0c;然后利用程序继续操…

STM32—超声波测距

超声波简介 超声波测距模块是用来测量距离的一种产品&#xff0c;通过发送和收超声波&#xff0c;利用时间差和声音传播速度&#xff0c; 计算出模块到前方障碍物的距离。 型号&#xff1a;HC-SR04 时序图 怎么让它发送波 Trig触发信号&#xff0c;给Trig端口至少10us的高电平…

“华为杯”研究生数学建模竞赛2005年-【华为杯】A题:城市交通管理中的出租车规划(附获奖论文)

赛题描述 A: Highway Traveling time Estimate and Optimal Routing Ⅰ Highway traveling time estimate is crucial to travelers. Hence, detectors are mounted on some of the US highways. For instance, detectors are mounted on every two-way six-lane highways o…

Postman使用详解

一、常见类型的接口请求查询参数接口接口地址中&#xff0c;&#xff1f;问号后面的部分&#xff0c;即查询参数&#xff1b;该部分内容由键值对组成&#xff0c;有多个时&#xff0c;用&符号分隔。请求方法&#xff1a;GET表单类型接口1&#xff09;HTTP请求&#xff0c;一…

电脑如何重装系统?Win10系统安装只需这两招!

电脑在日常生活和工作中是使用的比较多的。随着时间的推移&#xff0c;电脑越来越卡&#xff0c;系统越来越慢&#xff0c;或者是由于其他情况&#xff0c;有些人会选择对电脑进行重新安装。 但是很多人不知道系统安装前要注意什么&#xff0c;以及安装有哪些方法&#xff0c;…

论文笔记:Modeling Kinect Sensor Noise for Improved 3D Reconstruction and Tracking

文章目录概述效果如何&#xff1f;take home messagelateral noise 模型axial noise 模型实验实验设定lateral noise与axial noise的定义axial noise与lateral noise的提取噪声分布的结果和建模最终拟合得到的lateral noise模型最终拟合得到的axial noise模型应用噪声模型至Kin…

【Spring源码】插播一个创建代理对象的wrapIfNecessary()方法

在文章【分析向】没有三级缓存会导致什么&#xff1f; 中&#xff0c;提到过一个方法——wrapIfNecessary()&#xff0c;就是在这个方法中为Bean创建的代理对象&#xff0c;介于篇幅原因&#xff0c;当时并咩有详细&#x1f50e;分析这个方法&#xff0c;这篇文章我们进去wrapI…

第三章 ArcGIS坐标系与投影变换

文章目录第一节 坐标系的概念1.1 坐标1.2 坐标系2 基准面介绍2.1 基准面概念2.2几种基准面的说明2.3 椭球体参数的区别3 坐标系的分类3.1 两种坐标系3.2 区别3.3 度&#xff08;分、秒&#xff09;和米的转换&#xff08;高级&#xff09;4 投影坐标系4.1 两种投影方法介绍4.2 …

5、判定法

定义 判定表法&#xff1a; 分析和表述若干输入条件下&#xff0c;被测对象针对这些输入做出响应的一种工具在遇到逻辑复杂的业务时&#xff0c;可以利用判定表理清期间的逻辑关系。 重要概念 条件&#xff1a; 条件桩&#xff1a;需求规格说明书定义的被测对象的所有输入条…

图解Attention

深度学习知识点总结 专栏链接: https://blog.csdn.net/qq_39707285/article/details/124005405 此专栏主要总结深度学习中的知识点&#xff0c;从各大数据集比赛开始&#xff0c;介绍历年冠军算法&#xff1b;同时总结深度学习中重要的知识点&#xff0c;包括损失函数、优化器…

面试官:JVM是如何判定对象已死的?

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 知道的越多&#xff0c;才知知道的越少。——苏格拉底 文章目录引用计数算法可达性分析算法引用类型Dead Or Alive永久代真的"永久"吗&#xff1f;垃圾收集算法标记-清除算法标记-复制算法标记-整理…

网络编程基础

1 网络协议栈分层协议栈是指网络中各层协议的总和&#xff0c;反映了一个网络中数据传输的过程&#xff0c;由上层协议到底层协议&#xff0c;使用分层实现提高灵活性以及简化实现。OSI七层模型 和TCP/IP五层模型&#xff1a;物理层&#xff1a;考虑的是怎样才能在连接各种计算…

学长教你学C-day14-C语言文件操作

“我们的C语言学习也马上接近尾声了&#xff0c;今天我们来讲最后一个内容&#xff1a;C语言的文件夹操作。” “那么什么是文件呢&#xff1f;其实C语言里的文件是数据源的一种&#xff0c;最主要的作用是保存数据。例如txt、word、pdf等等都是不同的存储数据的形式。通过C语…

WebView与 JS 交互方式

一 前言 现在很多App里都内置了Web网页&#xff08;Hybrid App&#xff09;&#xff0c;比如说很多电商平台&#xff0c;淘宝、京东、聚划算等等&#xff0c;如下图 上述功能是由Android的WebView实现的&#xff0c;其中涉及到Android客户端与Web网页交互的实现&#xff0c;今…

Vue路由使用的几个注意点

前言 在使用vue的路由的时候&#xff0c;是有几个需要注意的点&#xff0c;下面一一说明 组件的分类 组件分为两种&#xff1a;路由组件和一般组件 路由组件是注册到路由器中&#xff0c;并且是由路由相关标签代码进行展示 一般组件是注册到组件中&#xff0c;通过组件标签…

Linux常用命令——route命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) route 显示并设置Linux中静态路由表 补充说明 route命令用来显示并设置Linux内核中的网络路由表&#xff0c;route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信&#xff0c;需要一台连接两个…