docker-consul部署

news2025/2/23 6:33:02

目录

一、环境

二、consul服务器

三、registrator服务器

四、consul-template


一、环境

consul服务器            192.168.246.10        运行consul服务、nginx服务、consul-template守护进程
registrator服务器      192.168.246.11        运行registrator容器、运行nginx容器

二、consul服务器

1、建立consul服务

mkdir /opt/consul
cp /opt/consul_0.9.2_linux_amd64.zip /opt/consul
cd /opt/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/

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

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.246.10 \
-client=0.0.0.0 \
-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协议查看节点信息的端口

3、查看集群信息

3.1、查看members状态

consul members

3.2、查看集群状态

consul operator raft list-peers

4、通过 http api 获取集群信息

curl 127.0.0.1:8500/v1/status/peers 			#查看集群server成员
curl 127.0.0.1:8500/v1/status/leader			#集群 server-leader
curl 127.0.0.1:8500/v1/catalog/services			#注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx			#查看 nginx 服务信息
curl 127.0.0.1:8500/v1/catalog/nodes			#集群节点详细信息

三、registrator服务器

1、安装 Gliderlabs/Registrator

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

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

docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd

这边 test04最后没有那个httpd,多打了

3、验证 http 和 nginx 服务是否注册到 consul
浏览器中,输入 http://192.168.246.10:8500,在 Web 页面中“单击 NODES”,然后单击“consurl-server01”,会出现 5 个服务。

 

3.1、在consul服务器使用curl测试连接服务器

curl 127.0.0.1:8500/v1/catalog/services 

四、consul-template

1、准备 template nginx 模板文件,在consul服务器上操作

vim /opt/consul/nginx.ctmpl
#定义nginx upstream一个简单模板
upstream http_backend {
  {{range service "nginx"}}
   server {{.Address}}:{{.Port}};
   {{end}}
}
#定义一个server,监听8000端口,反向代理到upstream
server {
    listen 8000;
    server_name localhost 192.168.246.10;
    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;
    }
}

2、编译安装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 && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

3、配置 nginx

vim /usr/local/nginx/conf/nginx.conf
......
http {
     include       mime.types;
     include  vhost/*.conf;       				#添加虚拟主机目录
     default_type  application/octet-stream;
......

创建虚拟主机目录

mkdir /usr/local/nginx/conf/vhost

创建日志文件目录

mkdir /var/log/nginx

启动nginx

nginx

4、配置并启动 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.246.10: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/kgc.conf

 5、访问 template-nginx

docker ps -a
docker exec -it 8018c1586b68 bash
echo "this is test1 web" > /usr/share/nginx/html/index.html
docker exec -it 26c48d24b8cd bash
echo "this is test2 web" > /usr/share/nginx/html/index.html

浏览器访问:http://192.168.246.10:8000/,并不断刷新。

6. 增加一个 nginx 容器节点

6.1、增加一个 nginx 容器节点,测试服务发现及配置更新功能。

docker run -itd -p:85:80 --name test-06 -h test06 nginx

 观察 template 服务,会从模板更新/usr/local/nginx/conf/vhost/kgc.conf 文件内容,并且重载 nginx 服务。

6.2、查看/usr/local/nginx/conf/vhost/kgc.conf 文件内容

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

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

相关文章

Docker RTMP服务器搭建与视频流推送示例(流媒体服务器tiangolo/nginx-rtmp,推流客户端ffmpeg)

文章目录 RTMP服务器搭建与视频流推送第一部分:搭建RTMP服务器(流媒体服务器)1.1 安装Docker1.2 搭建RTMP服务器 第二部分:使用ffmpeg进行视频推流(推流客户端)2.1 安装ffmpeg2.2 使用ffmpeg推流 第三部分&…

matlab 直道转向时方向盘最小转角算法

1、内容简介 略 33-可以交流、咨询、答疑 2、内容说明 汽车主动转向,直道转向时方向盘最小转角算法,一个m脚本和simulink的计算结果 略 3、仿真分析 略 4、参考论文 汽车主动转向关键技术研究

ElasticSearch概述+SpringBoot 集成ES

ES概述 开源的、高扩展的、分布式全文检索引擎【站内搜索】 解决问题 1.搜索词是一个整体时,不能拆分(mysql整体连续) 2.效率会低,不会用到索引(mysql索引失效) 解决方式 进行数据的存储(只存储…

自动驾驶轨迹规划之碰撞检测(二)

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.基于凸优化 2.具身足迹 3. ESDF 自动驾驶轨迹规划之碰撞检测(一)-CSDN博客 大家可以先阅读之前的博客 1.基于…

FFMPEG解码实时流,支持cpu、gpu解码

官网下载的ffmpeg目前只能下载到X64版本的库,具体编译请参考windows编译ffmpeg源码(32位库)_windows 32位ffmpeg动态库-CSDN博客 直接上代码 int VideoDecodeModule::Open(std::string strUrl) {AVFormatContext *pFormatCtx nullptr;AVCo…

nestjs之JWT认证实现流程

nestjs的jwt认证利用了 Passport.js 的认证机制。要根据这个源码实现您自己的 AuthGuard,需要理解几个关键部分:如何集成 Passport.js、如何处理认证结果,以及如何使用 NestJS 的依赖注入系统。 先自定义一个策略函数类 // wsy.strategy.ts …

idea 安装免费Ai工具 codeium

目录 概述 ide安装 使用 chat问答 自动写代码 除此外小功能 概述 这已经是我目前用的最好免费的Ai工具了,当然你要是有钱最好还是用点花钱的,比如copilot,他可以在idea全家桶包括vs,还有c/c的vs上运行,还贼强&am…

宝塔发布网站问题汇总和记录

1、添加网站站点后打不开 解决办法,关闭防跨站攻击2 2、laravel项目部署到linux的时候出现The stream or file "/home/www/storage/logs/laravel.log" could not be opened in append mode 给目录加权限 chmod -R 777 storage 3、Class "Redis"…

5G阅信在汽车销售行业的应用与优势

5G阅信在汽车销售行业的应用与优势包括:提升客户体验,提供更快速、稳定的网络服务;实时数据传输,更好地了解客户需求;增强现实应用,提供更真实、直观的购车体验;创新营销方式,如短视…

介绍一个强大的免费开源.net反编译工具

dnSpy dnSpy 是一个用C#开发,开源的调试器和.NET 汇编编辑器。 即使您没有任何可用的源代码,也可以使用它来编辑和调试程序,并可以把代码导出成.net工程。

esp32-idf Eclipse Log日志打印demo

Log日志打印demo 1、代码例程 esp32-S2 芯片 / Eclipse软件 开发环境 #include <stdio.h> #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_…

web自动化实现登录的几种方式

目录 前言 一、pythonunittest框架实现登录功能 二、pythonselenium实现登录功能 三、pythonrequests库实现登录功能 前言 今天主要想介绍python语言不同的自动化测试框架的结合方式来模拟登录功能。想了解自动化测试框架的同学不要错过哦&#xff01; 一、pythonunittest框…

MT6761芯片参数规格_MTK联发科4G智能模块

联发科MT6761平台采用12nm制程内建主频达 2.0 GHz 的 4 核 ARM Cortex–A53 处理器&#xff0c;IMG PowerVR GE 等级图形处理器&#xff0c;以及高速的 LPDDR4x 低功耗存储或是成本效益较高的 LPDDR3 内存。 内置微型化超低功耗的传感器中枢组件&#xff0c;适用于支持如计步器…

Python进程池multiprocessing.Pool

环境&#xff1a; 鲲鹏920:192核心 内存&#xff1a;756G python&#xff1a;3.9 python单进程的耗时 在做单纯的cpu计算的场景&#xff0c;使用单进程核多进程的耗时做如下测试&#xff1a; 单进程情况下cpu的占用了如下&#xff0c;占用一半的核心数&#xff1a; 每一步…

微服务实战项目_天机学堂01_初识项目

文章目录 一.项目简述二.Jenkins三.模拟真实业务:紧急bug修复和代码阅读四.测试和部署五.代码阅读-获取登录用户 一.项目简述 Q:天机学堂是什么? A:天机学堂是一个基于微服务架构的生产级在线教育项目 主要有两个端(项目已上线,可以点击查看): 管理后台: https://tjxt-admi…

【控制篇 / 分流】(7.4) ❀ 02. 对不同运营商IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带用来上网&#xff0c;一条电信&#xff0c;一条联通&#xff0c;访问常用的某些网站速度时快时慢。领导要求&#xff0c;根据上网流量的目标运营商IP归属&#xff0c;将流量送到相应的运营商出口去&#xff0c;避免跨运营商上网。那么应该怎么做&#xf…

分销商城多端uniapp 可编译5端 - 等级提现额度

等级提现额度 等级提现额度是一种常见的财务管理策略&#xff0c;通常用于在线平台、金融服务或游戏中&#xff0c;用于控制不同等级用户的提现限额。这样的机制有助于平台管理资金流动性&#xff0c;防范欺诈&#xff0c;并鼓励用户提升他们的活跃度或忠诚度。以下是一个简单的…

HTML--JavaScript--语法基础

变量与常量 这个基本上没啥问题 变量命名规则&#xff1a; 变量由字母、数字、下划线、$组成&#xff0c;且变量第一个字符不能为数字 变量不能是系统关键字和保留字 语法&#xff1a; var 变量名 值&#xff1b;所有Javacript变量都由var声明 定义赋值字符串&#xff1a; …

大数据与人工智能赋能精益生产:掀起工业革命的浪潮!

随着科技的飞速发展&#xff0c;大数据和人工智能已经成为当今社会的热门话题。在这场科技革命中&#xff0c;大数据和人工智能如何赋能精益生产&#xff0c;引领工业革命的浪潮呢&#xff1f; 一、大数据&#xff1a;精益生产的智慧源泉 在精益生产中&#xff0c;大数据的应用…

力扣刷MySQL-第一弹(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…