Docker之Consul部署

这篇具有很好参考价值的文章主要介绍了Docker之Consul部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

引言

一、Consul的简单介绍

二、Consul的优点

三、Consul的下载、安装和启动

四、搭建Consul集群

1、Server端部署(192.168.100.3)

2、Client端部署(192.168.100.20)

3、配置template末班自动更新

4、测试访问代理服务器


引言

Docker之Consul部署

一、Consul的简单介绍

Consul是一套开源的分布式服务发现和配置管理系统,由HasiCorp公司用go语言开发的。提供了微服务系统中服务助力、配置中心、控制总线等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构造全方位的服务网络,总之,Consul提供了完整的服务网格解决方案。

二、Consul的优点

它具有很多优点,包括:基于raft协议(是一种分布式强一致的协议),比较简洁;支持健康检查,同时支持http和DNS协议,支持跨数据中心wan集群,提供图形界面,跨平台;支持linux、mac、Windows。

三、Consul的下载、安装和启动

(1)打开consul官网
Install | Consul | HashiCorp Developer
(2)点击Download

Docker之Consul部署

(3)解压得到 consul.exe 文件,在 consul.exe 文件cmd 命令窗口执行:consul agent -dev进行启动
consul 自带 UI 界面,打开网址:http://localhost:8500 ,可以看到当前注册的服务界面。

四、搭建Consul集群

Docker之Consul部署

建立Consul服务

每个提供的节点上都要部署和运行Consul的agent

Consul agent有两种运行模式

Server和Clint

Server和Client 只是Consul集群层面的区分,与搭建在Consul之上的应用服务无关

1、Server端部署(192.168.100.3)

mkdir /root/consul
cd consul
rz consul_0.9.2_linux_amd64.zip

unzip consul_0.9.2_linux_amd64.zip

mv consul /usr/bin

Docker之Consul部署

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.100.3 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

consul members
consul info | grep leader

Docker之Consul部署

查看集群server成员 curl 127.0.0.1:8500/v1/status/peers
集群Raf 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

2、Client端部署(192.168.100.20)

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

在192.168.100.20节点上,执行以下操作

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.100.3 \
consul://192.168.100.20:8500

Docker之Consul部署

 systemctl restart docker
docker run -itd -p:81:80 --name test-01 -h test01 nginx
docker run -itd -p:82:80 --name test-02 -h test02 nginx
docker run -itd -p:83:80 --name test-03 -h test03 httpd
docker run -itd -p:84:80 --name test-04 -h test04 httpd

Docker之Consul部署Docker之Consul部署

真机访问http://192.168.100.3:8500此时应该可以存在5个服务

Docker之Consul部署

Docker之Consul部署

Docker之Consul部署

3、配置template末班自动更新

server端

Consul-Template是一个守护进程,用于实时查询Consul集群信息,并更新文件系统上任意数量的指定模板,生成配置文件,更新完成以后,可以查询Consul中的服务目录,Key、Key-values等。

cd consul/
vim nginx.ctmpl

upstream http_backend {
 {{range service "nginx"}}
  server {{.Address}}:{{.Port}};
  {{end}}
}

server {
 listen 100;
 server_name localhost 192.168.100.3;
 access_log /var/log/nginx/lic.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;
  }     
}

Docker之Consul部署

yum -y install gcc pcre-devel zlib-devel
rz nginx-1.12.0.tar.gz
tar zxvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.10

./configure --prefix=/usr/local/nginx

make && make install

Docker之Consul部署Docker之Consul部署

vim /usr/local/nginx/conf/nginx.conf
//19行添加  include vhost/*.conf;

Docker之Consul部署

cd /usr/local/nginx/conf/
mkdir vhost
mkdir /var/log/nginx

/usr/local/nginx/sbin/nginx

cd /opt
rz consul-template_0.19.3_linux_amd64.zip

unzip consul-template_0.19.3_linux_amd64.zip

Docker之Consul部署Docker之Consul部署

mv consul-template /usr/bin
consul-template -consul-addr 192.168.100.3:8500 -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/lic.conf:/usr/local/nginx/sbin/nginx -s reload" --log-level=info

Docker之Consul部署

 再打开另一个终端Docker之Consul部署

Client端

docker run -itd -p:85:80 --name test-05 -h test05 nginx   #在运行一个nginx容器,以查看server nginx配置文件是否自动更新

Docker之Consul部署

server端新开的终端查看

Docker之Consul部署

主页面查看是否有更新

Docker之Consul部署

4、测试访问代理服务器

是否可以完成代理访问轮询(192.168.100.3)

http://192.168.100.3:100/

docker logs -f test-01
docker logs -f test-02
docker logs -f test-05

Docker之Consul部署

Docker之Consul部署文章来源地址https://www.toymoban.com/news/detail-414819.html

到了这里,关于Docker之Consul部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Nuxt3】modules目录和nuxt3模块的简单介绍

    记录下nuxt3项目中module的用法 使用 modules/ 目录在应用程序中自动注册本地模块。 这是一个很好的地方,可以放置您在构建应用程序时开发的任何本地nuxt模块。 nuxt模块相当于npm包,可以发布到npm社区中 在modules/ 目录下的本地模块,会自动注册模块,无需在 nuxt.config.ts文件中

    2024年04月27日
    浏览(38)
  • docker搭建部署mysql并挂载指定目录

    首先,确保你的系统上已经安装了Docker。你可以根据官方文档安装适用于你系统的Docker版本 命令解释 挂载外部目录的理由: 数据持久性和灵活性。 容器中MySQL数据的易备份和恢复。 如当容器宕机或者不小心移除,可重新起一个容器并挂载之前的文件,之前的数据依然存在。

    2024年01月17日
    浏览(40)
  • Docker进阶数据卷&目录挂载及在线部署

    为了很好的实现数据保存和数据共享, Docker 提出了 Volume 这个概念,简单的说就是绕过默认的联合 文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作 数据卷 Docker 中的数据卷(Volume)是用于持久化存储容器数据的一种机制。它可以将主机上的目录或文件

    2024年01月23日
    浏览(39)
  • docker以外挂目录的方式部署springboot项目

    前置准备: 清单: 安装有docker的Linux springboot打包的jar文件(该项目只有一个返回\\\"hello world\\\"接口) Linux的IP地址: 192.168.221.129 springboot项目的接口: 我上传的位置为:/root/dockerJar,如下: 使用 docker  images 查看镜像:   原理: 我们运行jdk镜像时,把Linux中的jar文件挂载到该

    2023年04月25日
    浏览(34)
  • Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是

    2023年04月12日
    浏览(55)
  • docker部署项目,/var/lib/docker/overlay2目录满了如何清理?

    今天突然发现跑服务器上的项目挂了,上去看了一下原来是磁盘满了。 看来是目录 /var/lib/docker/overlay2 下占满了磁盘,看看里面是什么。 这一块只是查找哪些文件占满了磁盘,不感兴趣的朋友可以不看。 /var/lib/docker 目录是 docker 的默认目录,进去看看 检索文件的最大深度

    2024年01月21日
    浏览(39)
  • 使用Docker将Vite Vue项目部署到Nginx二级目录

    使用Vite创建一个Vue项目,点我查看如何创建 配置打包路径 在Nginx中如果是二级目录,例如 /web 时,需要设置线上的打包路径 在项目跟路径下创建两个文件: .env.production 、 .env.development ,写入一下内容: 在 vite.config.js 中配置 base 属性,打开配置文件: 修改 package.json ,添加

    2024年02月03日
    浏览(43)
  • Docker容器:docker consul的注册与发现及consul-template

    (1)服务注册与发现是微服务架构中不可或缺的重要组件。 (2)为解决服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问的问题 (1)consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的

    2024年02月11日
    浏览(35)
  • Docker容器:docker consul的注册与发现及consul-template守护进程

    (1)服务注册与发现是微服务架构中不可或缺的重要组件。 (2)为解决服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问的问题 (1)consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的

    2024年02月11日
    浏览(51)
  • [golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群

    上一节讲解了使用 gRPC创建微服务,客户端的一个接口可能需要调用 N个服务 ,而不同服务可能存在 不同的服务器 ,这时,客户端就必须知道所有服务的 网络位置(ip+port) ,来进行连接服务器操作,如下图所示: 以往的做法是把 服务的地址 放在 配置文件 或者 数据库 中,这样就

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包