如何优化网站内容,网站新闻专题怎么做,手机百度网盘登录入口,小企业网站建设平台目录 一、docker-consul概述
1、服务注册和发现#xff1a;
1.1、服务注册和发现概念
1.2、服务注册和发现工作机制#xff1a;
1.3、服务注册与发现的优点#xff1a;
2、docker-consul概念
2.1、consul的主要特点#xff1a;
二、consul架构部署#xff1a;
1、…目录 一、docker-consul概述
1、服务注册和发现
1.1、服务注册和发现概念
1.2、服务注册和发现工作机制
1.3、服务注册与发现的优点
2、docker-consul概念
2.1、consul的主要特点
二、consul架构部署
1、consul服务器配置
1.1、架构三台服务器
1.2、consul安装
1.3、相关端口
2、检查consul集群相关命令
3、集群自动发现和注册
3.1、启动consul server
3.2、检测自动发现和注册
4、配置consul-template
4.1、 准备 template nginx 模板文件
4.2、docker1安装nginx
4.3、配置nginx
4.4、配置并启动 template
4.5、配置并运行template-nginx
4.6、访问template-nginx
5、实现consul的多节点 一、docker-consul概述
1、服务注册和发现
1.1、服务注册和发现概念
什么叫做微服务容器的注册与发现
是一种分布式管理系统定位服务的方法。
在传统的架构中应用程序之间是直连到已知的服务由设备提供的网络IP地址基于tcp/ip协议的端口
由于现代微服务部署服务的动态性数量增加了传统的基于ip端口的形式已经不太适用。所以有了服务注册和发现。 微服务的位置信息ip端口健康状态统一注册到一个中心化的服务注册表中。可以允许其他服务动态的查询和发现这些服务 服务发现和注册时微服务架构中非常重要的组件 1.2、服务注册和发现工作机制
服务注册当一个服务启动时会把自己的元数据ip、端口、服务名称、健康状态注册到服务注册表中。这个注册表的服务consulzookeeper。也可以在云平台部署服务发现其他服务需要和这个服务通信时只需要向注册表查询服务位置信息ip端口这样的话可以直接在服务注册表中直接获取我要的信息不需要到静态配置查看 1.3、服务注册与发现的优点
动态性可以在运行时动态添加和移除服务不需要额外的人工操作和配置。弹性一旦某个服务不可用服务注册表可以及时更新通知其他服务避免请求的失败。可扩展可以适应不断变化的服务数量透明性服务方调用时透明性前端和后端实现解耦
服务注册和发现机制与其他工具配置使用如负载均衡、健康检查、配置管理一键同步 2、docker-consul概念
docker-consul容器的自动发现与注册
docker-consul的核心就是发现微服务可以动态的管理
docker-consul的作用查、看。元数据ip、端口、健康状态、服务名称
consul服务注册和发现工具
consul是HashiCrop公司开发的一套工具用于实现服务发现与注册配置管理分布式的系统协调
2.1、consul的主要特点
服务发现与自动注册位置信息ip端口服务名称健康检查服务注册到consul中一并加入系统的还有他的健康状态定期发送一个心跳检查如果服务挂了consul会自动移除分布式锁consul提供了一个分布式锁的功能协调多个节点之间的操作防止竞争条件和数据冲突
每一个服务的发现与注册都是一个会话session。
创建锁微服务1在注册到consul的时候consul会和服务的会话创建一个锁锁用来标识具体的服务会话和锁之间相关联
获取锁微服务2建立会话获取锁如果申请的锁没有被使用客户端成功获取如果已经存在表示已有其他服务在占用会给你分配一个新的锁KV存储
释放锁任务完成或者服务断开了连接会把锁释放删除会话和锁之间的关系。删除与锁关联的键。实现资源的释放 KV存储key-value分布式键值对存储系统存储配置信息、锁、特性等。应用程序可以使用consul的键值对信息来动态的获取配置信息多数据中心支持consul可以在多个地域部署可以实现数据中心之间的发现和注册功能。DNS和http的APIconsul支持DNS接口通过域名解析定位服务的位置。http api通过api应用接口可以调用consul的信息服务信息健康检查等事件通知如果关键信息可以随时获取通知。 二、consul架构部署
1、consul服务器配置
1.1、架构三台服务器
consul服务器Docker120.0.0.51 consul Docker-ce nginx二进制部署 consul-template自动发现和部署
registrator服务器Docker2:20.0.0.52 运行注册机制和微服务容器服务
consul服务器多节点服务器 Docker3 20.0.0.28加入到consul集群中 1.2、consul安装 consul agent \
-server \
-bootstrap \
-ui \
-data-dir/var/lib/consul-data \
-bind20.0.0.51 \
-client0.0.0.0 \
-nodeconsul-server01 /var/log/consul.log
consul agent开启监听服务
-server指定集群中的服务器节点consul的RAFT算法实现分布式结构中节点的一致性。集群的成员直接成为集群的leader后续加入的服务器都是follower
-bootstrap表示该节点是引导节点引导选举过程以及为后续加入的server做引导加入集群
-ui启动图形化界面
-data-dir/var/lib/consul-dataconsul存储数据的路径
-bind20.0.0.51服务器绑定的IP地址节点中通信
-client0.0.0.0客户端的地址所有主机都可以server建立通信生产中是指定的服务器
-nodeconsul-server01指定consul节点的名称在集群中consul节点的名称都是唯一的不可重复/var/log/consul.log混合重定向输出到consul.log
后台运行 1.3、相关端口
8300RAFT协议端口保持分布式集群的一致性端口处理复制和领导者选举
8301LAN Gossip的端口局域网内部进行节点通信和信息传播的协议
8302WAN Gossip的端口广域网内部节点的通信和信息传播协议
8500web ui的端口用来访问consul的图形化界面
8600DNS解析端口 2、检查consul集群相关命令
consul members
集群信息
consul operator raft list-peers
查看集群状态
curl 127.0.0.1:8500/v1/status/peers
查看集群的server成员
curl 127.0.0.1:8500/v1/status/leader
查看集群的领导者
curl 127.0.0.1:8500/v1/catalog/services
查看已经被集群发现和注册的服务
curl 127.0.0.1:8500/v1/catalog/nodes
查看集群节点的详细信息 3、集群自动发现和注册
3.1、启动consul server
docker run -d \
--nameregistrator \
-v /var/run/docker.sock:/tmp/docker.sock \
--restartalways \
gliderlabs/registrator:latest \
--ip20.0.0.52 \
consul://20.0.0.51:8500 -v /var/run/docker.sock:/tmp/docker.sock 指定挂载卷
docker.sock是docker守护进程的Unix的套接字文件把他映射到容器当中registrator容器可以监听docker的所有事件并且完成自动注册服务
--ip20.0.0.52注册在consul的IP地址
consul://20.0.0.51:8500 所有发现的服务都会注册到指定的server节点 3.2、检测自动发现和注册
docker run -itd -p 81:80 --name test-1 -h test1 nginx
docker run -itd -p 82:80 --name test-2 -h test2 httpd
docker run -itd -p 83:80 --name test-3 -h test3 nginx
-h指定容器里的主机名 去浏览器访问consul
20.0.0.51:8500 查看被监测的节点 consul-template实现配置管理自动化
用于consul集成自动更新配置文件实现噢诶之管理的自动化
作用
1、动态的配置更新。consul-template监听consul中key-value的存储键值对键值对发生变化会自动的更新配置文件无需重启服务
2、支持多种后端的模版nginx配置、ETCD等等 4、配置consul-template
consul-template
自动化管理配置文件的工具获取consul中注册的服务信息可以自动的添加到配置文件中即使生效无需重启服务
做到自动化更新配置文件
4.1、 准备 template nginx 模板文件
vim /opt/consul/nginx.ctmpl upstream test1 {{{range service nginx}}server {{.Address}}:{{.Port}};{{end}}
}server {listen 8000;server_name localhost 20.0.0.51;access_log /var/log/nginx/test1-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;
}
} 在这个配置当中test1的反向代理的方法会遍历由consul注册的所有服务名称为nginx的服务
server {{.Address}}:{{.Port}}; 将发现和注册的nginx服务的IP地址和端口添加到test1的upstream方法当中 4.2、docker1安装nginx
1、安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c make2、创建运行用户
useradd -M -s /sbin/nologin nginx3、编译安装
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/cd nginx-1.22.0/
./configure \
--prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--with-http_stub_status_modulemake make install4、优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/5、添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Descriptionnginx
Afternetwork.target
[Service]
Typeforking
PIDFile/usr/local/nginx/logs/nginx.pid
ExecStart/usr/local/nginx/sbin/nginx
ExecReload/bin/kill -s HUP $MAINPID
ExecStop/bin/kill -s QUIT $MAINPID
PrivateTmptrue
[Install]
WantedBymulti-user.targetchmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
启动nginx 查看端口 4.3、配置nginx
改nginx的配置文件
18行 创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost
创建日志文件目录
mkdir /var/log/nginx
停止nginx
nginx -s stop
启动nginx
nginx 4.4、配置并启动 template
unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin/ 4.5、配置并运行template-nginx
docker1运行template
consul-template --consul-addr 20.0.0.51:8500 \
--template /opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload \
--log-levelinfoconsul-template --consul-addr 20.0.0.51:8500 指定consul的地址告诉 consul-template从server节点获取数据
template /opt/consul/nginxctmpl:/usr/local/nginx/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload
/opt/consul/nginx.ctmpl配置文件的模版位置
/usr/local/nginx/vhost/test.conf基于模版生成配置文件的位置
/usr/local/nginx/sbin/nginx -s reload 只要集群中服务发生变化可以随时更新到配置文件中
--log-levelinfo 设置consul-template的日志级别为info 开个docker1终端看日志
var/log/consul.log consul是一个中间件nginx服务通过consul-template获取模版反向代理consul-template——consul来获取注册服务的ip和端口然后nginx调用nginx调用发现的服务来实现负载均衡
template——本机nginx——调用容器nginx实现负载均衡 4.6、访问template-nginx
docker exec -it test-1 bash
echo this is test1 web /usr/share/nginx/html/index.htmldocker exec -it test-3 bash
echo this is test2 web /usr/share/nginx/html/index.html 浏览器访问http://20.0.0.51:8000/ 并不断刷新。实现轮询 自动生成的配置文件在
/usr/local/nginx/conf/vhost/test.conf 5、实现consul的多节点
consul的多节点一旦选举出了leader后续的服务器都是follower。server的名称不能重复唯一但是在一个数据中心上
docker3安装consul docker3添加到consul集群中去
consul agent \
-server \
-ui \
-data-dir/var/lib/consul-data \
-bind20.0.0.28 \
-client0.0.0.0 \
-nodeconsul-server02 \
-enable-script-checkstrue \
-datacenterdc1 \
-join 20.0.0.51 /var/log/consul.log -enable-script-checkstrue \
设置检查服务为可用他也可以发现原集群当中的服务
-datacenterdc1 \
加入到docker1的数据中心
-join 20.0.0.51加入到已有的集群中 consul members
consul operator raft list-peers 在docker2上执行
让docker3也监控docker2上的容器
docker run -d \--nameregistrator2 \-v /var/run/docker.sock:/tmp/docker.sock \--restartalways \gliderlabs/registrator:latest \--ip20.0.0.52 \consul://20.0.0.28:8500浏览器consul查看
http://20.0.0.51:8500/ 脱离集群
consul leave