最新要闻
- 每日快报!首款车明年量产!小米汽车最新专利公布:手表控制车有戏
- 天天热文:A卡游戏画面鲜艳 N卡灰蒙蒙?可能是这里设置错了
- 焦点播报:北美杀入前十后《流浪地球2》官宣:2月9日在中国香港及澳门上映
- 焦点简讯:三体人为什么那么害怕地球人的加速器?中科院科普
- 中国航天科技喊话《流浪地球2》:太空天梯、地球车站、空间驿站有望实现
- 每日看点!男子打赏女主播1.8万后起诉欲要回!最终被驳回诉求
- 焦点速递!男子寄5万元笔记本被摔坏索赔遭拒:屏幕、键盘都烂了 维修要2万
- 动视暴雪点赞《最后生还者》:索尼令人敬畏 我们被收购是应该的
- 天天热头条丨官网12.4万元帕纳梅拉遭抢购 保时捷:情况属实 已与首单用户达成协议
- 当前观察:索尼PS5现货全开放!黄牛惨了:带大量机器退货遭拒
- 刘慈欣:30年前拍不成《流浪地球2》 投资人不会信的
- 观热点:SSD性能领先35倍 机械硬盘命悬一线:没啥理由买
- 【全球速看料】流浪小狐狸投奔看守所1年胖成球:今年要帮它减肥
- 不止砍掉UFS 4.0:三星Galaxy S23标准版遭全方位缩水
- 800W功耗!RTX 4090 Ti四插槽"核弹"真的有 但不一定能生出来
- 全球微速讯:《最后生还者》剧集第3集与游戏对比 还原度高
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
资讯推荐:Docker-consul的容器服务更新与发现
一、Consul概述
1.1什么是服务注册与发现
服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的解决手段是在服务前端负载均衡,这样前端必须要知道所有后端服务的网络位置,并配置在配置文件中。这里就会有几个问题:
- 如果需要调用后端服务A-N,就需要配置N个服务的网络位置,配置很麻烦
- 后端服务的网络位置变化,都需要改变每个调用者的配置
既然有这些问题,那么服务注册与发现就是解决这些问题的。后端服务A-N可以把当前自己的网络位置注册到服务发现模块,服务发现就以K-V的方式记录下来,K一般是服务名,V就是IP:PORT。服务发现模块定时的进行健康检查,轮询查看这些后端服务能不能访问的了。前端在调用后端服务A-N的时候,就跑去服务发现模块问下它们的网络位置,然后再调用它们的服务。这样的方式就可以解决上面的问题了,前端完全不需要记录这些后端服务的网络位置,前端和后端完全解耦!
(资料图)
1.2什么是consul
consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server 和 client。 每个数据中心官方建议需要3或5个server节点(大于或等于3的奇数台)以保证数据安全,同时保证server-leader的选举能够正确的进行。在client模式下,所有注册到当前节点的服务会被转发到server节点,本身是不持久化这些信息。在server模式下,功能和client模式相似,唯一不同的是,它会把所有的信息持久化到本地,这样遇到故障,信息是可以被保留的。server-leader是所有server节点的老大,它和其它server节点不同的是,它需要负责同步注册的信息给其它的server节点,同时也要负责各个节点的健康监测。consul提供的一些关键特性:服务注册与发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。健康检查:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。Key/Value存储:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。多数据中心:无需复杂的配置,即可支持任意数量的区域。安装consul是用于服务注册,也就是容器本身的一些信息注册到consul里面,其他程序可以通过consul获取注册的相关服务信息,这就是服务注册与发现。
二、consul 部署
环境准备consul服务器:192.168.10.10 运行consul服务、nginx服务、consul-template守护进程registrator服务器:192.168.10.20 运行registrator容器、运行nginx容器
systemctl stop firewalld.servicesetenforce 0consul服务器端部署
2.1建立 Consul 服务
mkdir /opt/consulcp consul_0.9.2_linux_amd64.zip /opt/consulcd /opt/consulunzip consul_0.9.2_linux_amd64.zipmv consul /usr/local/bin/
//设置代理,在后台启动 consul 服务端
consul agent \-server \-bootstrap \-ui \-data-dir=/var/lib/consul-data \-bind=192.168.10.10 \-client=0.0.0.0 \-node=consul-server01 &> /var/log/consul.log &
-server: 以server身份启动。默认是client。-bootstrap :用来控制一个server是否在bootstrap模式,在一个数据中心中只能有一个server处于bootstrap模式,当一个server处于 bootstrap模式时,可以自己选举为 server-leader。-bootstrap-expect=2 :集群要求的最少server数量,当低于这个数量,集群即失效。-ui :指定开启 UI 界面,这样可以通过 http://localhost:8500/ui 这样的地址访问 consul 自带的 web UI 界面。-data-dir :指定数据存储目录。-bind :指定用来在集群内部的通讯地址,集群内的所有节点到此地址都必须是可达的,默认是0.0.0.0。-client :指定 consul 绑定在哪个 client 地址上,这个地址提供 HTTP、DNS、RPC 等服务,默认是 127.0.0.1。-node :节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名。-datacenter :指定数据中心名称,默认是dc1。
netstat -natp | grep consul启动consul后默认会监听5个端口:8300:replication、leader farwarding的端口8301:lan cossip的端口8302:wan gossip的端口8500:web ui界面的端口8600:使用dns协议查看节点信息的端口
2.2查看集群信息
#查看members状态
consul members
#查看集群状态
consul operator raft list-peersconsul info | grep leader
2.3通过 http api 获取集群信息
curl 127.0.0.1:8500/v1/status/peers #查看集群server成员curl 127.0.0.1:8500/v1/status/leader #集群 server-leadercurl 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服务器
//容器服务自动加入 Nginx 集群
3.1安装 Gliderlabs/Registrator
Gliderlabs/Registrator 可检查容器运行状态自动注册,还可注销 docker 容器的服务到服务配置中心。目前支持 Consul、Etcd 和 SkyDNS2。 docker run -d \--name=registrator \--net=host \-v /var/run/docker.sock:/tmp/docker.sock \--restart=always \gliderlabs/registrator:latest \--ip=192.168.10.20 \consul://192.168.10.10:8500
--net=host :把运行的docker容器设定为host网络模式。-v /var/run/docker.sock:/tmp/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中。--restart=always :设置在容器退出时总是重启容器。--ip :刚才把network指定了host模式,所以我们指定ip为宿主机的ip。consul :指定consul服务器的IP和端口。
3.2测试服务发现功能是否正常
被监控的节点服务器上,nginx容器的服务启动后,并做了端口映射后,会将映射的信息写入到宿主机的docker.sock文件registrator自动发现模块会监控宿主机的docker.sock ,就会发现nginx服务。registrator 会将信息写入到consul的自动注册模块,通过8500 web ui 展示
docker run -itd -p:83:80 --name test-01 -h test01 nginxdocker run -itd -p:84:80 --name test-02 -h test02 nginxdocker run -itd -p:88:80 --name test-03 -h test03 httpddocker run -itd -p:89:80 --name test-04 -h test04 httpd #-h:设置容器主机名
3.3验证 http 和 nginx 服务是否注册到 consul
浏览器中,输入 http://192.168.10.10:8500,在 Web 页面中“单击 NODES”,然后单击“consurl-server01”,会出现6 个服务。//在consul服务器使用curl测试连接服务器
curl 127.0.0.1:8500/v1/catalog/services{"consul":[],"httpd":[],"nginx":[]}
四、consul-template
Consul-Template是基于Consul的自动替换配置文件的应用。Consul-Template是一个守护进程,用于实时查询Consul集群信息,并更新文件系统上任意数量的指定模板,生成配置文件。更新完成以后,可以选择运行 shell 命令执行更新操作,重新加载 Nginx。Consul-Template可以查询Consul中的服务目录、Key、Key-values 等。这种强大的抽象功能和查询语言模板可以使 Consul-Template 特别适合动态的创建配置文件。例如:创建Apache/Nginx Proxy Balancers 、 Haproxy Backends等。
4.1准备 template nginx 模板文件
//在consul服务器上操作
vim /opt/consul/nginx.ctmpl #定义nginx upstream一个简单模板 upstream http_backend {{{range service "nginx"}}server {{.Address}}:{{.Port}};{{end}}} #定义一个server,监听8000端口,反向代理到upstreamserver {listen 8000;server_name localhost 192.168.10.10;access_log /var/log/nginx/ly-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;}}
4.2编译安装nginx
yum -y install pcre-devel zlib-devel gcc gcc-c++ makeuseradd -M -s /sbin/nologin nginxtar zxvf nginx-1.12.0.tar.gz -C /opt/cd /opt/nginx-1.12.0/./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/启动nginx:
[root@docker01 /usr/local/bin]#cd /usr/local/sbin/[root@docker01 /usr/local/sbin]#nginx[root@docker01 /usr/local/sbin]#netstat -natp |grep nginx
4.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.4配置并启动 template
cd /optunzip consul-template_0.19.3_linux_amd64.zip -d /opt/mv consul-template /usr/local/bin/
//在前台启动 template 服务,启动后不要按 ctrl+c 中止 consul-template 进程。
consul-template --consul-addr 192.168.10.10:8500 \--template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/fzr.conf:/usr/local/nginx/sbin/nginx -s reload" \--log-level=info
//另外打开一个终端查看生成配置文件
[root@localhost ~]#cd /usr/local/nginx/conf/vhost/[root@localhost vhost]#lsfzr.conf[root@localhost vhost]#cat fzr.conf
4.5访问 template-nginx
在registrator服务器上面操作,添加网页测试文件
docker ps -adocker exec -it 4f74d2c38844 bashecho "this is test1 web" > /usr/share/nginx/html/index.html docker exec -it b73106db285b bashecho "this is test2 web" > /usr/share/nginx/html/index.html
浏览器访问:http://192.168.10.10:8000/ ,并不断刷新。(8000端口为之前创建的Nginx模板中设置的监听端口)
4.6增加一个 nginx 容器节点
(1)增加一个 nginx 容器节点,测试服务发现及配置更新功能。
docker run -itd -p:85:80 --name test-05 -h test05 nginx
//观察 template 服务,会从模板更新/usr/local/nginx/conf/vhost/ly.conf 文件内容,并且重载 nginx 服务。
(2)查看/usr/local/nginx/conf/vhost/ly.conf 文件内容
cat /usr/local/nginx/conf/vhost/fzr.conf
(3)查看三台 nginx 容器日志,请求正常轮询到各个容器节点上(刷新日志方法:第一种刷新192.168.10.10:8000,第二种是curl 172.17.0.7【后面地址是容器ID】)
docker logs -f test-01docker logs -f test-02docker logs -f test-05
五、consul 多节点
//添加一台已有docker环境的服务器192.168.10.30/24加入已有的群集中
consul agent \-server \-ui \-data-dir=/var/lib/consul-data \-bind=192.168.10.30 \-client=0.0.0.0 \-node=consul-server02 \-enable-script-checks=true \-datacenter=dc1 \-join 192.168.10.10 &> /var/log/consul.log &
-enable-script-checks=true :设置检查服务为可用-datacenter : 数据中心名称-join :加入到已有的集群中
查看集群成员以及状态
资讯推荐:Docker-consul的容器服务更新与发现
【天天时快讯】记录--手把手教学,实现一个优雅的图片预览
每日快报!首款车明年量产!小米汽车最新专利公布:手表控制车有戏
天天热文:A卡游戏画面鲜艳 N卡灰蒙蒙?可能是这里设置错了
焦点播报:北美杀入前十后《流浪地球2》官宣:2月9日在中国香港及澳门上映
焦点简讯:三体人为什么那么害怕地球人的加速器?中科院科普
中国航天科技喊话《流浪地球2》:太空天梯、地球车站、空间驿站有望实现
全球报道:网易二面:CPU狂飙900%,该怎么处理?
每日看点!男子打赏女主播1.8万后起诉欲要回!最终被驳回诉求
焦点速递!男子寄5万元笔记本被摔坏索赔遭拒:屏幕、键盘都烂了 维修要2万
动视暴雪点赞《最后生还者》:索尼令人敬畏 我们被收购是应该的
天天热头条丨官网12.4万元帕纳梅拉遭抢购 保时捷:情况属实 已与首单用户达成协议
当前观察:索尼PS5现货全开放!黄牛惨了:带大量机器退货遭拒
环球资讯:Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?
全球聚焦:【促进开发】上海道宁与DHTMLX为您提供易于使用且功能丰富的JavaScript组件
APITable:免费开源的多维表格与可视化数据库,上线1天斩获GitHub星标1000+
今日精选:HTTP笔记1--网络模型
环球速讯:selenium + python自动化测试环境搭建
刘慈欣:30年前拍不成《流浪地球2》 投资人不会信的
观热点:SSD性能领先35倍 机械硬盘命悬一线:没啥理由买
【全球速看料】流浪小狐狸投奔看守所1年胖成球:今年要帮它减肥
不止砍掉UFS 4.0:三星Galaxy S23标准版遭全方位缩水
c++代码实现中时间复杂度的不断优化
聚焦:一步一步实现若依框架--2.4数据权限 data_scope
800W功耗!RTX 4090 Ti四插槽"核弹"真的有 但不一定能生出来
全球微速讯:《最后生还者》剧集第3集与游戏对比 还原度高
实时焦点:摩托骑手广东高速上恶意损坏其他车辆 官方回应:一刀切禁摩很好?
天天观察:云萌 V2.6.3.0 win10,win11 Windows永久激活工具
热推荐:基于Spring Cache实现Caffeine、jimDB多级缓存实战
portswigger 靶场之 XSS 篇 (下)
全球最新:【算法训练营day32】LeetCode122. 买卖股票的最佳时机II LeetCode55. 跳跃游戏 LeetCode45. 跳跃游戏II
部署Kubernetes Cluster
每日短讯:12.4万买新帕纳梅拉!近600名国内网友保时捷官网疯抢:成功下单后被取消
【全球时快讯】奔驰获全球首家L3级自动驾驶认证:开车不用看路 出事故奔驰负责
【快播报】优酷回应1元会员被扣24元争议:活动规则已告知 扣钱没毛病
当前热文:水墨风场景惊艳!《仙剑奇侠传7》DLC《人间如梦》官宣2月发售
彻底扑灭一台特斯拉Model S有多难 消防员实测:用了22.7吨水
天天快消息!Android 软键盘丝滑切换(一)
天天看点:视频发布失败原因不好找?火山引擎数智平台这款产品能帮忙
速看:OpenYurt v1.2 新版本深度解读(一): 聚焦边云网络优化
【环球播资讯】小鹏股价暴跌、交付量惨淡 何小鹏专访回应:未来会这么做
全球动态:全球首个!婴幼儿视功能损伤手机智能筛查系统面世
撸猫手感 绿联iPhone 12-14系列液态硅胶保护壳9.9元起
天天快看点丨海淘不香了!日版Xbox主机涨价将近260元
天天速递!全国首烧?疑似红旗E-HS9充电时起火 现场黑烟弥漫
瑾娘为什么要杀华裳?瑾娘为什么假扮巽芳?
爱在旅途大结局是什么?爱在旅途剧情介绍
法国属于西欧还是北欧?南欧包括哪些国家?
荷兰为什么被称为水之国?荷兰水之国的资料简介
长宽高的英文缩写分别是什么?长宽高怎么算平方?
oppor7手机版本低怎么升级?oppo r7手机参数
复工第一天:请马上卸载这个恶心的软件!!!
全球看热讯:python-paramiko操作的封装
无法定位序数是什么意思?无法定位序数怎么解决?
打印机驱动在电脑哪里找?如何卸载打印机驱动?
无线适配器或访问点有问题是什么意思?无线适配器或访问点有问题怎么处理?
魅族手机怎么样?魅族手机锁屏密码忘了怎么解开?
环球速讯:工信部明天起优化调整微波频率 为5G/6G预留频谱资源
【独家】美国下手真狠!沃尔沃在美被罚8.7亿元 史上最大
快消息!APP竟比线下贵一倍还多 有电影院劝说观众退订淘票票
【世界快播报】提车1周 一特斯拉高速上行驶时方向盘脱落:维修还被收费
每日速读!全球最大游戏展E3辉煌不在:微软索尼任天堂“御三家”将集体缺席
波司登云原生微服务治理探索
今日热门!元宵节将至!元宵夜将出现年度最小满月
世界实时:侄子出演叔叔 MJ传记片年内开拍
【速看料】女子抱娃人肉占车位 还移走路障为自家车开路 结局引人舒适
世界讯息:西安阿房宫站将更名西安西站:原西站不够西
天天观热点:猪肉含量≥85% 一口全是肉:亚明猪肉烤肠2斤29.9元大促
焦点要闻:读Java8函数式编程笔记06_Lambda表达式编写并发程序
【全球新要闻】全网影视免费看,最新电影、电视剧免广告免VIP观看,只要你能搜到的,统统都能看,《狂飙》、《三体》追剧神器,时刻掌握最新剧集,无需安装,使用简单,
被苹果踢出供应链两年了 欧菲光仍未缓过劲:2022巨亏40多亿
精选!疯狂玩梗!强盛集团孙红雷直播被买鱼刷屏
焦点短讯!A卡很难追 游戏开发者越来越喜欢DLSS:理由离谱 弥补D加密损失
环球即时看!2023春节档爆发:复苏满座与极端的粉黑大战
每日消息!关于桌面上一万多个图标
刘慈欣:30年前拍不成《流浪地球2》 投资人不信中国有太空电梯
世界快看:老外幸福感暴降:英国近半年轻人担心收入永远不够养家
别贪速度快!SSD选什么接口更适合你?
《敢死队2》观后感
环球快报:VUEX 使用学习六 : modules
国产奋起!26557款软件力挺飞腾CPU
最新资讯:三大航空公司2022年合计预亏逾1000亿元!三大因素、东航最惨
环球观察:三亚凤凰机场出现滚滚浓烟?机场回应:暂无影响
快消息!这次过年 网吧终于活过来了!和以前完全不一样
河南矿山回应3名员工各领500万奖金:有人销售额超3亿
【环球报资讯】每个前端程序员都应该知道的10个Chrome扩展
刘慈欣:电影《流浪地球2》是原创而非小说改编 全方位超越第一部
今日聚焦!广东一男子打球6天后发现头顶卡对手2颗牙:网友神评论
焦点热议:索尼真有你的:背后给微软捅刀子
Acw 170.加成序列
精彩看点:React组件的使用
【全球独家】理想L5车型首次公布:不是SUV 价格坚守20万以上
每日热讯!最新显卡天梯榜公布:前十NVIDIA占五席!RTX 4090断层第一
全球新动态:杭州岳庙秦桧像被砸烂9次 游客仍不解气:专家称泄愤不应暴力
世界资讯:腾讯游戏春节7天吸金超4.5亿:《王者荣耀》独占一半 稳坐第一
世界信息:一加平板来了:Star Orbit金属打造 CNC一体机身
佳能2022年营收破4万亿日元 相机收入暴增 完全不惧手机蚕食
画面有点上头!男子扛铁板狂砸秦桧雕像:《满江红》带火景区热度
赚了!科学家在南极发现罕见大陨石:7.7公斤
全球消息!【Python】爬虫实战-基于代理池的高并发爬虫