docker-consul部署

目录

一、环境

二、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 文件内容

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

烟火检测/周界入侵/视频智能识别AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快,易安装、易维护,硬件内置了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,上报识别结果,并能进行语音告警播放。算法可按需组合、按…

uniapp中uview组件库Toast 消息提示 的使用方法

目录 #基本使用 #配置toast主题 #toast结束跳转URL #API #Props #Params #Methods 此组件表现形式类似uni的uni.showToastAPI,但也有不同的地方,具体表现在: uView的toast有5种主题可选可以配置toast结束后,跳转相应URL目…

sphinx,一个神奇的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个神奇的 Python 库 - sphinx。 Github地址:https://github.com/sphinx-doc/sphinx/ 在软件开发和项目管理中,文档是不可或缺的一部分。好的文档可以…

如何在Docker中搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…

阿里云有哪些优势?为什么选择阿里云?

为什么选择阿里云?阿里云服务器有哪些优势?阿里云全球第三,国内第一云,阿里云服务器网aliyunfuwuqi.com分享云服务器ECS在丰富ECS实例架构、弹性灵活、稳定可靠、便捷易用、安全保障和成本优化多方面优势: 阿里云服务…

链动2+1模式:合法合规的商业奇迹,引爆裂变式增长!

在各平台都饱和的情况下,如何快速吸引用户并实现裂变式增长成为了众多企业和平台的共同难题。而链动21模式,作为一种新兴的商业模式,正在成为解决这一难题的有效途径。本文将深入解析链动21模式的奥秘,带你领略这种合法合规的商业…

kubesphere DevOps部署SpringCloud项目

🍎devops部署SpringCloud项目 🍅环境说明🍅部署流程🧁创建DevOps工程🧁填写流水线信息🧁创建流水线 🍅部署应用所需脚本🧁jenkinsfile🧁Dockerfile🧁deploy.y…

如何实现固定公网地址同步Zotero科研文献管理器

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献,不但免费,功能还很强大实用。 ​ Zotero 支…

【稳定检索、投稿优惠】2024年区域经济与社会科学管理国际会议(ICRESSM 2024)

2024年区域经济与社会科学管理国际会议(ICRESSM 2024) 2024 International Conference on Regional Economic and Social Science Management(ICRESSM 2024) 一、【会议简介】 2024年区域经济与社会科学管理国际会议(ICRESSM 2024)将于厦门盛大召开。此次会议将聚焦“区域经济”…

如何才能把图片无损放大?这几个无损放大的方法分享给你们

在互联网的浩瀚海洋里,我们常常迷失在繁星般的图片之中,寻找那一款能映照出我们内心的头像。无论是渴望在社交媒体上熠熠生辉,还是在游戏世界中塑造独一无二的形象,一个与我们心灵相通的头像总能带给我们难以言喻的喜悦与满足。然…

Kubernetes API 和流量控制:管理请求数量和排队进程

本文描述了我们最近遇到的一个真实案例:Kubernetes API 因其中一个集群中的大量请求而瘫痪。今天,我们将讨论我们如何处理这个问题,并提供一些关于如何预防它的提示。 高并发搞崩 Kubernetes API 一个非常普通的早晨,我们开始了…

前端框架前置学习Node.js(2)npm使用,Node.js总结

npm - 软件包管理器 定义 npm是Node.js标准的软件包管理器 npm仓库中包含大量软件包,使其成为世界上最大的单一语言代码仓,并且可以确定几乎可用于一切的软件包 最初是为了下载和管理Node.js包依赖的方式,但其现在已成为前端JavaScript中使用的工具 使用: 1.初始化清单文…

2024大数据“打假”:什么才是真湖仓一体?

编者按:近年来,随着金融、制造、政务、交通、医疗等行业数字化转型深入,大量智慧应用涌现,使得构建强大的数据分析技术栈成为必须,也让“湖仓一体”成为热门词汇。但面对市场中各色各样的湖仓技术,众多行业…

代码随想录算法训练营第21天 | 530.二叉搜索树的最小绝对差 + 501.二叉搜索树中的众数 + 236.二叉树的最近公共祖先

今日任务 530.二叉搜索树的最小绝对差 - Easy 501.二叉搜索树中的众数 - Easy 236.二叉树的最近公共祖先 - Medium 530.二叉搜索树的最小绝对差 - Easy 题目链接:力扣-530. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两…

极简云源码已经开源

源码介绍 极简云已经开源 解绑卡密 查询卡密 总体来说还是很完善的 对接例子网盘里有 用户注册需要配置邮箱 上网页QQ邮箱标准版开启SMTP 然后生成授权码 后台发信邮箱里填就对了 实在不会配置邮箱的 可以下载网盘里的reg.php 把reg.php上传源码里的user目录 之后注册就不需要…

NodeJs 第十五章 session

Session代表服务器和客户端一次会话的过程。 在计算机科学领域来说,尤其是在网络领域,会话(session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制,session在网络协议…

性能篇:List集合遍历元素用哪种方式更快?

嗨大家好,我是小米!今天给大家分享一篇关于Java集合框架性能的文章,话题是:“如果让你使用 for 循环以及迭代循环遍历一个 ArrayList,你会使用哪种方式呢?原因是什么?LinkedList呢?”…

Linux系统——yum仓库及NFS共享

目录 一、yum仓库 1.yum简介 2.yum实现过程 3.如何实现安装服务 4.yum配置文件及命令 4.1yum配置文件 4.1.1主配置文件 4.1.2仓库设置文件 4.1.3日志文件 4.2yum命令详解 4.2.1查询 4.2.2yum安装升级 4.2.3软件卸载 4.2.4操作安装历史记录 5.搭建本地yum仓库 5…

程序员晋升管理者后的自我修养

谈到技术管理,首要的一点就是管理者的角色认知问题,因此本篇文章的主要内容就是如何增强管理者的角色认知,持续提升自我管理能力。 作为管理者,首要任务就是要认清自我并管理好自己,要树立对管理者角色的正确认知&…

导航与定位技术已成为移动机器人的核心技术之一

随着移动机器人技术的不断发展和应用领域的扩大,导航与定位技术已成为移动机器人的核心技术之一。本文将介绍移动机器人导航与定位技术的发展现状、技术前沿和面临的挑战。 ​ 一、导航与定位技术的发展现状 移动机器人的导航与定位技术是实现自主移动的关键。目前…