Docker容器---docker-Consul部署

一、Docker-consul简介

1、概述

consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。
服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server 和 client。 每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。
安装consul是用于服务注册,也就是容器本身的一些信息注册到consul里面,其他程序可以通过consul获取注册的相关服务信息,这就是服务注册与发现。

2、Consul两种模式

client模式下,所有注册到当前节点的服务会被转发到server节点,本身是不持久化这些信息。
server模式下,功能和client模式相似,唯一不同的是,它会把所有的信息持久化到本地,这样遇到故障,信息是可以被保留的。
server-leader是所有server节点的老大,它和其它server节点不同的是,它需要负责同步注册的信息给其它的server节点,同时也要负责各个节点的健康监测。

二、Consul特性

1、特性

  • 支持健康检查、允许存储键值对

  • 基于Golong语言,可移植性强

  • 支持ACL访问控制

2、应用场景

Consul的应用场景包括服务发现、服务隔离、服务配置:

服务发现场景中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。
服务隔离场景中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。
服务配置场景中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。
Consul可以帮助系统管理者更清晰的了解复杂系统内部的系统架构,运维人员可以将Consul看成一种监控软件,也可以看成一种资产(资源)管理系统。

三、部署Consul集群(server端)

1、建立Consul服务

[root@localhost ~]#cd /opt/
[root@localhost opt]#mkdir consul
[root@localhost opt]#cd /opt/consul/
[root@localhost consul]#rz -E
rz waiting to receive.
[root@localhost consul]#ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]#unzip consul_0.9.2_linux_amd64.zip 
Archive:  consul_0.9.2_linux_amd64.zipinflating: consul                  
[root@localhost consul]#mv  consul /usr/local/bin/

[root@localhost consul]#consul --version
Consul v0.9.2
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

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

[root@localhost consul]#consul agent \
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.10.100 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
[1] 17895
[root@localhost consul]#netstat  -natp | grep consul
tcp        0      0 192.168.10.100:8300     0.0.0.0:*               LISTEN      17895/consul        
tcp        0      0 192.168.10.100:8301     0.0.0.0:*               LISTEN      17895/consul        
tcp        0      0 192.168.10.100:8302     0.0.0.0:*               LISTEN      17895/consul        
tcp6       0      0 :::8500                 :::*                    LISTEN      17895/consul        
tcp6       0      0 :::8600                 :::*                    LISTEN      17895/consul    

3、查看集群信息

[root@localhost consul]#consul members  #查看members状态
Node             Address              Status  Type    Build  Protocol  DC
consul-server01  192.168.10.100:8301  alive   server  0.9.2  2         dc1
[root@localhost consul]#consul operator raft list-peers  #查看集群状态
Node             ID                   Address              State   Voter  RaftProtocol
consul-server01  192.168.10.100:8300  192.168.10.100:8300  leader  true   2
[root@localhost consul]#consul info | grep leader   #查看详细信息leader = trueleader_addr = 192.168.10.100:8300

四、Consul部署(Client端)

1、安装Gliderlabs/Registrator Gliderlabs/Registrator

容器服务自动加入nginx集群

[root@localhost ~]#docker run -d \
> --name=registrator \
> --net=host \
> -v /var/run/docker.sock:/tmp/docker.sock \
> --restart=always \
> gliderlabs/registrator:latest \
> --ip=192.168.10.101 \
> consul://192.168.10.100:8500[root@localhost ~]#docker images[root@localhost ~]#docker ps -a

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

[root@localhost ~]#systemctl restart docker
[root@localhost ~]#docker run -itd -p:83:80 --name test-01 -h test01 nginx[root@localhost ~]#docker run -itd -p:84:80 --name test-02 -h test02 nginx[root@localhost ~]#docker run -itd -p:88:80 --name test-03 -h test03 httpd[root@localhost ~]#docker run -itd -p:89:80 --name test-04 -h test04 httpd[root@localhost ~]#docker ps -a

3、验证 http 和 nginx 服务是否注册到 consul

浏览器中,输入 http://192.168.10.100:8500,在 Web 页面中“单击 NODES”,然后单击“consurl-server01”,会出现 5 个服务。

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

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

相关文章

刚刚!MySQL8.4.0 LTS发布,接着再探

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

spark实验求TOP值

实验1:求TOP值 已知存在两个文本文件,file1.txt和file2.txt,内容分别如下: file1.txt 1,1768,50,155 2,1218, 600,211 3,2239,788,242 4,3101,28,599 5,4899,290,129 6,3110,54,1201 7,4436,259,877 8,2369,7890,27 fil…

深度学习突破:LLaMA-MoE模型的高效训练策略

在人工智能领域,大模型(LLM)的崛起带来了前所未有的进步,但随之而来的是巨大的计算资源需求。为了解决这一问题,Mixture-of-Expert(MoE)模型架构应运而生,而LLaMA-MoE正是这一架构下…

JAVA面试题分享---多线程与线程池

多线程 什么是线程?线程和进程的区别?(了解) 线程:是进程的一个实体,是 cpu 调度和分派的基本单位,是比进程更小的 可以独立运行的基本单位。 进程:具有一定独立功能的程序关于某个数据集合上的一次运…

【深度学习基础(1)】什么是深度学习,深度学习与机器学习的区别、深度学习基本原理,深度学习的进展和未来

文章目录 一. 深度学习概念二. 深度学习与机器学习的区别三. 理解深度学习的工作原理1. 每层的转换进行权重参数化2. 怎么衡量神经网络的质量3. 怎么减小损失值 四. 深度学习已取得的进展五. 人工智能的未来 - 不要太过焦虑跟不上 一. 深度学习概念 先放一张图来理解下人工智能…

C语言实验-数组、字符串以及指针

一&#xff1a; 求一个NN矩阵主、次对角线上所有元素之和。矩阵输入、矩阵输出、矩阵对角线求和分别用三个子函数实现。&#xff08;N的值由用户从键盘输入&#xff09; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h>void print(int(*arr…

visionPro链接相机

搜索Cognex GigE Vision Configura… 修改子网掩码为255.255.255.0 配置驱动程序 更新驱动&#xff08;如果能够选择9014Bytes&#xff0c;跳过此步骤&#xff09; 更新更改 相机ip配置 打开visionPro 选择照相机 查看实时画面 运行保存图像

TiDB 利用binlog 恢复-反解析binlog

我们知道TiDB的binlog记录了所有已经执行成功的dml语句&#xff0c;类似mysql binlog row模式 &#xff0c;TiDB官方也提供了reparo可以进行解析binlog&#xff0c;如下所示: [2024/04/26 20:58:02.136 08:00] [INFO] [config.go:153] ["Parsed start TSO"] [ts449…

邦注科技 激光切水口设备 车灯水口切割

激光切水口是一种利用激光技术进行切割的设备&#xff0c;通常用于汽车灯具制造中的水口切割工艺。水口是指汽车灯具表面上的透气孔或者排水孔&#xff0c;用于排除灯具内部的水汽&#xff0c;防止灯具起雾或者受潮。激光切水口设备通过激光束对汽车灯具进行精确切割&#xff0…

【论文阅读】IPT:Pre-TrainedImageProcessingTransformer

Pre-TrainedImageProcessingTransformer 论文地址摘要1. 简介2.相关作品2.1。图像处理2.2。 Transformer 3. 图像处理3.1. IPT 架构3.2 在 ImageNet 上进行预训练 4. 实验4.1. 超分辨率4.2. Denoising 5. 结论与讨论 论文地址 1、论文地址 2、源码 摘要 随着现代硬件的计算能…

手持LED弹幕,超炫特效,让你的每一次出场都耀眼夺目!

在这个快节奏的数字时代&#xff0c;沟通不再局限于言语和文字&#xff0c;就连表白、追星、晚会互动&#xff0c;甚至日常的提词都需要一点科技的火花来点燃气氛。于是&#xff0c;手持LED弹幕滚动屏&#xff0c;这个集实用与趣味于一身的神器&#xff0c;悄然成为了社交场上的…

【linuxC语言】fcntl和ioctl函数

文章目录 前言一、功能介绍二、具体使用2.1 fcntl函数2.2 ioctl函数 三、拓展&#xff1a;填写arg总结 前言 在Linux系统编程中&#xff0c;经常会涉及到对文件描述符、套接字以及设备的控制操作。fcntl和ioctl函数就是用来进行这些控制操作的两个重要的系统调用。它们提供了对…