优秀网站建设空间,网站建设本科毕业设计论文,wordpress 当前主题路径,怎么做镜像网站Consule集群
1 #xff09;概述
Consul是HashiCorp 公司推出的开源工具#xff0c;用于实现分布式系统的服务发现与配置Consul是分布式的、高可用的、可横向扩展的, 完成consul的安装后#xff0c;必须运行agentagent可以运行为 server模式、client模式, 每个数据中心至少…Consule集群
1 概述
Consul是HashiCorp 公司推出的开源工具用于实现分布式系统的服务发现与配置Consul是分布式的、高可用的、可横向扩展的, 完成consul的安装后必须运行agentagent可以运行为 server模式、client模式, 每个数据中心至少必须拥有一台server, 建议在一个集群中有3或者5个server部署单一server在出现失败时会不可避免的出现数据丢失Consul 集群主要实现server端的集群client端压力比较小 首先我们要运行consul运行有两种模式分别是 client 和 serverclient 主要用于请求的转发和检查健康状态server 主要用于保存配置信息用于微服务的查询(ip port), 实现高可用集群等通过下面的命令开启 $ consul agent -server$ consul agent 一个client是一个非常轻量级的进程用于注册服务, 运行健康检查和转发对server的查询每个数据中心至少必须拥有一个serveragent必须在集群中的每个主机上运行注意server也可以用于注册服务比如我们前面运行的 consul agent -dev但是正式上线后我们一般通过client注册服务使用保存配置信息、实现高可用集群、通过广域网与其他数据中心通讯等
2 集群配置
2.1 ) 示例图 如下图所示当上面三台consul server服务器中有一台挂掉了微服务访问是不受影响的而client只用于请求的转发不容易挂掉, 如果一台client挂掉而这个client被一个或多个微服务连接那它只影响连接的微服务不影响其他的微服务如果三台server挂掉了那client也没法转发了这样也都没法访问了如果三台server正常但是某一台client挂掉了比如clientA没法实现集群但是我们有多台client的话我们可以通过的其他client挂载clientA的备份微服务来实现连通也就是微服务的集群 2.2 ) 启动服务端 需要先在/etc/下面创建consul.d目录启动如下3台服务端$ consul agent -server -bootstrap-expect 3 -nodeserver_01 -bind192.168.1.129 -ui -data-dir/root/usr/local/consul/data -client 0.0.0.0$ consul agent -server -bootstrap-expect 3 -nodeserver_02 -bind192.168.1.130 -ui -data-dir/root/usr/local/consul/data -client 0.0.0.0$ consul agent -server -bootstrap-expect 3 -nodeserver_03 -bind192.168.1.131 -ui -data-dir/root/usr/local/consul/data -client 0.0.0.0参数意义 -server定义agent运行在server模式-bootstrap-expect在一个datacenter中期望提供的server节点数目当该值提供的时候consul一直等到达到指定sever数目的时候才会引导整个集群该标记不能和bootstrap 共用注意bootstrap-expect值必须是server的数量-bind该地址用来在集群内部的通讯集群内的所有节点到地址都必须是可达的默认是 0.0.0.0-node节点在集群中的名称在一个集群中必须是唯一的默认是该节点的主机名-ui启动web界面:8500-rejoin使consul启动的时候加入集群中-config-dir配置文件目录里面所有以.json结尾的文件都会被加载-clientconsul服务侦听地址这个地址提供HTTP、DNS、RPC等服务默认是127.0.0.1所以不对外提供服务如果你要对外提供服务改成0.0.0.0data-dir提供一个目录用来存放agent的状态所有的agent允许都需要该目录该目录必须是稳定的系统重启后都继续存在 2.3 ) 启动客户端 运行cosnul agent 以client模式启动$ consul agent -data-dir/root/usr/local/consul/data -nodeclient_01 -bind192.168.1.132 -ui -client 0.0.0.0$ consul agent -data-dir/root/usr/local/consul/data -nodeclient_02 -bind192.168.1.133 -ui -client 0.0.0.0
3 关联集群
分别在server_02、server_03、client_01节点上面运行下面命令建立集群关系 $ systemctl stop firewalld 注意分别关闭对应服务器的防火墙或者允许对应端口(8500)$ consul join 192.168.1.129 这台129的主机是 server_01就是我们选中的leader服务器 这时候192.168.1.129 这台consul_server被选为leader访问http://192.168.1.129:8500 会重定向到 http://192.168.1.129:8500/ui/dc1/nodes在这个web管理界面可以看到 点击左侧Services 有一个consul里面有3个实例里面已经实现了负载均衡点击左侧Nodes 有4个Node client_01, server_01, server_02, server_03, 其中 server_01被标识为 Leader
4 注意相关调用地址
客户端也就是API调用服务器上部署的客户端代码其中连接consul的地址为consul客户端的地址也就是 192.168.1.132 或 192.168.1.133 即new Consul 时填写的配置中的host的ip如上二选一 微服务端也就是右侧的微服务的服务器中其中连接consul的地址也为consul客户端的地址也就是 192.168.1.132 或 192.168.1.133 即new Consul 时填写的配置中的host的ip如上二选一但是consul.agent.service.register时填写的 address 以及 check.tcp 中的地址不要写 127.0.0.1要写成对应当前提供微服务的服务器对外ip地址比如: 192.168.1.11, 注意check.tcp 中需要填写 ip port, 如192.168.1.11:8080
5 查看consul成员和集群状态
$ consul members
# 节点 网络地址 状态 类型 版本 协议 数据中心 分管 部分
Node Address Status Type Build Protocol DC Partition Segment
server_01 192.168.1.129:8301 alive server 1.11.4 2 dc1 default all
server_02 192.168.1.130:8301 alive server 1.11.4 2 dc1 default all
server_03 192.168.1.131:8301 alive server 1.11.4 2 dc1 default all
client-01 192.168.1.132:8301 alive client 1.11.4 2 dc1 default default
client-02 192.168.1.133:8301 alive client 1.11.4 2 dc1 default default停止server_01 测试程序是否正常 $ consul leave 这里在当前server服务器上执行
6 停止agent
使用ctrl c优雅的关闭agent中断agent之后可以看到它离开了集群并关闭在退出中,Consul提醒其他集群成员,这个节点离开了如果你强行杀掉进程, 集群的其他成员应该能检测到这个节点失效了当一个成员离开, 它的服务和检测也会从目录中移除当一个成员失效了, 它的健康状况被简单的标记为危险, 但是不会从目录中移除Consul会自动尝试对失效的节点进行重连允许他从某些网络条件下恢复过来离开的节点则不会再继续联系.此外, 如果一个agent作为一个服务器, 一个优雅的离开是很重要的, 可以避免引起潜在的可用性故障影响达成一致性协议Consul优雅的退出$ consul leave