docker consul容器自动与注册

微服务(容器)注册与发现:是一种分布式的管理系统,定位服务的方法。
        在传统架构当中,应用程序之间直连到已知服务,设备提供的网络:IP地址,基于tcp/ip,端口;在现代的服务部署,服务的动态性,数量增加,传统的基于IP+端口的形式已经不太适用。
        服务注册以及发现:微服务的位置信息(ip+端口+健康状态)统一注册到一个中心化的服务注册表中,可以允许其他服务动态的查询和发现这些服务。

数据流程图

服务注册:当一个服务启动时,会把自己的元数据(ip 端口 服务名称 健康状态)注册到服务注册表中。这个注册表的服务(consul zookeeper),也可以在平台部署。
服务发现:其他服务需要和这个服务通信时,只需要向注册表查询服务位置信息(ip+端口),这样的话可以直接在服务注册表中服务注册表中,直接获取我要的信息,不需要到静态配置查看了。

服务注册与发现和其他工具配合使用,负载均衡,健康检测,配置管理(一键同步)。微服务架构中非常重要的组件。

服务注册于发现的优点:

动态性可以在运行时动态添加和移除服务,不需要额外的人工操作和配置。
弹性一旦某个服务不可用,注册表可以及时更新,通知通知其他服务避免请求的失败。
可扩展适应不断变化的服务数量。
服务方调用时,透明性前端和后端实现解耦。

consul

consul:服务自动注册和发现的。
consul时HashiCrop公司开发的一套工具,主要用于服务发现与注册,配置管理,分布式的协调协调。


consul的主要特点:

1、服务自动注册和发现,位置信息(ip和端口+服务名称+健康状态)
2、健康检测,服务注册到consul,一旦加入系统的还有他的健康状态,定期发送一个心跳检查,如果服务挂了,consul会自动移除。
3、分布式锁: consul提供了一个分布式锁的功能,协调多个节点之间的操作,放在竞争条件和数据冲突。

每一个服务的发现和注册都是一个会话(session)
 微服务在注册到consul的时候,consul会和这个服务的会话创建一个锁,用锁来标识具体的服务器,会话和锁之间关联。
 获取锁: 微服务2,建立会话,获取锁,如果申请的锁没有被使用,客户端成功获取,如果已经存在,表示已经有其他服务占用,会给分配一个新的锁(kv存储)
释放锁:任务完成或者服务断开了连接,会把锁释放,删除会话和锁之间的关系。删除与锁关联的键,实现资源的释放。

4、KV存储:key-value分布式键值对存储系统,存储配置信息、锁、服务的特性。应用程序可以使用consul的键值对信息来动态地获取配置信息。
5、多数据中心注册:可以部署在多个低于部署,可以数据中心的发现和注册功能。
6、DNS和HTTP API:通过域名解析定位服务位置。http api:通过api用于接口,可以调用consul的信息。服务信息,健康检查等等。
7、时间通知,如有关键信息可以随时通知。

查看集群server成员

curl 127.0.0.1:8500/v1/status/peers

集群 server-leader

curl 127.0.0.1:8500/v1/status/leader

注册的所有服务

curl 127.0.0.1:8500/v1/catalog/services

查看 nginx 服务信息

curl 127.0.0.1:8500/v1/catalog/nginx

集群节点详细信息

curl 127.0.0.1:8500/v1/catalog/nodes

consul的部署和发现

consul服务器docker1 192.168.10.201consul docker-ce nginx 进制 consul-template (自动发现和自动配置)
registrator服务器docker2 192.168.10.202运行注册机制和微服务(容器)
consul服务器···多节点 docker3 192.168.10.204(加入到consul的集群中)

192.168.10.201

mkdir /opt/consul
cp consul_0.9.2_linux_amd64.zip /opt/consul
cd consul/
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/
consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.10.201 -client=0.0.0.0 -node=consul-server01 &> /var/log/consul.log &
ss -antp | grep consul

consul agent: 启动 Consul Agent。-server: 指定该节点是 Consul 集群中的服务器节点。Consul 使用 Raft 算法来实现分布式一致性,服务器节点是集群的成员。-bootstrap: 表示该服务器节点是引导节点(bootstrap)。在集群的启动阶段,需要有一个引导节点,
它将启动 Raft 领导者选举过程。在生产环境中,通常只有一个服务器节点配置为引导节点。在引导完成后,其他服务器节点会加入集群。-ui: 启动 Consul 的用户界面(UI),使你可以通过浏览器访问 http://192.168.233.40:8500 来查看和管理 Consul 的状态和配置。-data-dir=/var/lib/consul-data: 指定 Consul 存储数据的目录路径。-bind=192.168.233.40: 指定 Consul 绑定的 IP 地址。该地址用于节点间的通信。-client=0.0.0.0: 允许所有 IP 地址的客户端连接到 Consul。这是一个开发或测试环境中的设置。
在生产环境中,通常会限制只允许特定 IP 地址的客户端连接。-node=consul-server01: 指定 Consul 节点的名称。每个节点在集群中都有唯一的名称。&> /var/log/consul.log: 将 Consul 的日志输出到 /var/log/consul.log 文件中。&: 在后台运行 Consul Agent。
启动consul后默认会监听5个端口:
8300: 用于Raft协议的端口。Consul使用Raft算法进行分布式一致性,这个端口用于处理复制、领导者选举等。8301: 用于LAN Gossip的端口。LAN Gossip是Consul中用于在局域网内进行节点间通信和信息传播的协议。8302: 用于WAN Gossip的端口。WAN Gossip用于在广域网(WAN)中进行节点间的通信和信息传播。8500: 用于Web UI的端口。Consul提供一个用户界面,可以通过这个端口访问,用于可视化地查看和管理Consul的集群状态。8600: 用于DNS查询的端口。Consul提供DNS接口,可以通过这个端口进行DNS查询,以获取节点和服务的信息。

192.168.10.202

docker run -d \
--name=registrator \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
--ip=192.168.10.202 \
consul://192.168.10.201:8500docker run -itd -p 81:80 --name test-1 -h test1 nginx
docker run -itd -p 82:80 --name test-2 -h test2 httpd

consul-template

192.168.10.201

consul operator raft list-peers
curl 127.0.0.1:8500/v1/catalog/services

配置template nginx模板文件

upstream http_backend {{{range service "nginx"}}server {{.Address}}:{{.Port}};{{end}}
}
server {listen 8000;server_name localhost 192.168.10.201;access_log /var/log/nginx/kgc.com-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 pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.22.0.tar.gz -C /opt/
cd /opt/nginx-1.22.0/./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make -j 4 && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

//创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost//创建日志文件目录
mkdir /var/log/nginx//启动nginx
nginx4. 配置并启动 template
unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin/consul-template --consul-addr 192.168.10.201:8500 \
--template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

创建容器

docker run -itd -p 84:80 --name test-4 -h test4 nginx

查看轮询

cat /usr/local/nginx/conf/vhost/test.conf

consul多节点

192.168.10.204

mkdir /opt/consul
cp consul_0.9.2_linux_amd64.zip /opt/consul
cd consul/
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/consul agent \
-server \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.10.204 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.10.201 &> /var/log/consul.log &

加入集群

docker run -d \
--name=registrator \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
--ip=192.168.10.202 \
consul://192.168.10.201:8500

实现与01同步

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

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

相关文章

flume:Ncat: Connection refused.

一:nc -lk 44444 和 nc localhost 44444区别 nc -lk 44444 和 nc localhost 44444 是使用 nc 命令进行网络通信时的两种不同方式。 1. nc -lk 44444: - 这个命令表示在本地监听指定端口(44444)并接受传入的连接。 - -l 选项…

Google 论坛和 QA 结构化数据更新重点关注 Authorship

谷歌更新了论坛结构化数据和问答结构化数据的文档,明确了这两种结构化数据与作者身份相关的新要求。 就论坛结构化数据而言,对 InteractionCounter schema.org 数据类型进行了说明,还为作者类型增加了一个新的推荐属性,这两个属性…

AutoSAR(基础入门篇)1.3-AutoSAR的概述

目录 一、到底什么是AutoSAR 1、大白话来讲 2、架构上来讲 应用软件层(APPL) 实时运行环境(RTE) 基础软件层(BSW) 3、工具链上来讲 二、AutoSAR的目标 一、到底什么是AutoSAR 1、大白话来讲 AUTOSAR 就是AUTomotive Open System ARchitecture的…

nginx 1.24.0 安装nginx最新稳定版

1.官网: nginx: download 2. 选择稳定版: 3. 可以下载,然后上传服务器,也可以wget获取: cd /home wget https://nginx.p2hp.com/download/nginx-1.24.0.tar.gz 4. 放入/home 下。并解压缩,重命名nginx;…

【教学类-06-18】20231216 (按“列”正序题)X-Y之间“加法题+题”(1页最多0-13。不考虑空格补全)

作品展示:按列排序,从小到大正序(有空格) 背景需求: 55格模板,很多幼儿都是按照“列”的方式,从上到下,从左向右完成题目的。 视觉上,两列之间间距大(给孩子…

美团赚钱更难了,Q3核心业务利润率下降2%,市值一年缩水近6000亿

从“买菜”卷向“超市”,成立5年的美团买菜更名为“小象超市”。 就在更名公告发布的前一天,美团公布了2023年三季报,尽管三季度营收净利双增长,但其股价却呈相反趋势。 三季报发布次日(11月29日),美团港股股价单日跌…

MIT6.5840-2023-Lab2C: Raft-Persistence

前置知识 见上一篇 Lab2A。 实验内容 实现 RAFT,分为四个 part:leader election、log、persistence、log compaction。 实验环境 OS:WSL-Ubuntu-18.04 golang:go1.17.6 linux/amd64 Part 2C: persistence 大部分的bug都与这…

八、Seata的XA模式

目录 八、Seata的XA模式8.3 XA模式多数据源场景1 环境搭建2、使⽤XA模式解决事务 八、Seata的XA模式 8.3 XA模式多数据源场景 1 环境搭建 建库建表 代码的db.sql中 创建工程 添加依赖 <dependency><groupId>org.springframework.boot</groupId><ar…

VBA技术资料MF96:单字段多条件高级筛选

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

Ribbon使用

Ribbon &#xff1a;处理客户端负载均衡和容错的解决方案 配置Ribbon的负载均衡 Rule接口&#xff1a; 定义客户端负载均衡的规则 RandomRule :随机选择RoundRobinRuleZoneAvoidanceRule 配置ribbon的负载均衡策略 在配置文件中配置 user-center:ribbon:NFLoadBalancerRul…

三阶魔方七步解法-最后还原顶层顶角(不是顶棱)

主要区别&#xff0c;最后一步是 顶层十字棱角已经还原&#xff0c;四个顶角的位置正确&#xff0c;但四个顶角的颜色没有对应。 因为现在基本都是6步还原法&#xff08;找什么小鱼&#xff0c;眼睛&#xff09;&#xff0c;是先还原顶层使颜色一致&#xff0c;最后还原顶棱。但…

云原生之深入解析使用Telepresence轻松在本地调试和开发Kubernetes应用程序

一、 准备 telepresence 下载&#xff1a;https://www.telepresence.io/docs/latest/install/kubectl 下载&#xff1a;https://kubernetes.io/docs/tasks/tools/ 二、版本检测 $telepresence version Client: v2.5.3 (api v3) Root Daemon: not running User Daemon: not r…

leetcode面试经典二分系列刷题心得

闲来无事巩固算法基础&#xff0c;发现自己的二分几乎从来没系统刷过题&#xff0c;基础很是薄弱。 二分法不愧称为新人杀手&#xff0c;刷起来很是吃力&#xff0c;感觉明明学了几套二分模板&#xff0c;但是却不知道如何去运用&#xff0c;很多读者在初次尝试刷二分题时候&a…

24款奔驰C260L升级C63包围 典型的花小钱办大事

今天店里来了一台24款奔驰C260L 一提车就过来升级 我们公司还有包上牌服务 车主说 升级完包围 帮忙安排一下 原车的包围 没有那么霸气 特别是后杠 光溜溜的 升级后 四出尾喉 尾翼 直接牌面就起来了 星骏汇小许Xjh15863

Android12-RK3588_s-开机动画

目录 一、实现自定义开机动画 步骤一&#xff1a;准备 bootanimation.zip 步骤二&#xff1a;将 bootanimation.zip 放到 /system/media/bootanimation.zip下 步骤三&#xff1a;重启即可 二、注意事项 2.1 bootanimation.zip 压缩 2.2 bootanimation.zip 存放 2.3 boo…

打印机设置发票收据打印

由于各种打印机型号不一样&#xff0c;设置方式打印效果出入也很大&#xff0c;存在打印不全问题&#xff0c;发票右侧小数点后面的数字打印不出来、位置靠上下左右登问题&#xff0c;比较通用的设置方式如下&#xff1a; 首先找到控制面板&#xff0c;找到设备和打印机 进入到…

【C语言】printf()函数详解,手把手教你,保姆级!!!

目录 基本用法 printf()函数--占位符 占位符大全 printf()函数--限定宽度 printf()函数--正负--限定小数 printf()函数--输出部分字符串 总结 【C语言】printf()函数详解&#xff0c;手把手教你&#xff0c;保姆级&#xff01;&#xff01;&#xff01; 基本用法 printf()…

openoffice安装

安装openoffice 下载安装包 建议去官网下载&#xff0c;这里给出官网地址&#xff1a;https://www.openoffice.org/download/ 这里以linux为例&#xff0c;所以我下载的是unbantu的版本(deb) 解压安装包 tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-deb_zh-…

【Hive】【Hadoop】工作中常操作的笔记-随时添加

文章目录 1、Hive 复制一个表:2、字段级操作3、hdfs 文件统计 1、Hive 复制一个表: 直接Copy文件 create table new_table like table_name;hdfs dfs -get /apps/hive/warehouse/ods.db/table_nameload data local inpath /路径 into table new_table;修复表&#xff1a; m…

25.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现

1. 引言 1.1 背景 介绍校园求职系统的背景&#xff0c;说明为什么设计这个系统以及系统的重要性。 1.2 研究目的 阐述设计基于SSM框架的微信小程序校园求职系统的目标和意义。 2. 需求分析 2.1 行业背景 分析校园求职行业的特点和需求&#xff0c;以及目前市场上同类系统…