当前位置: 首页 > 后端技术 > PHP

Swoft的服务注册发现Consul服务器配置

时间:2023-03-29 16:39:07 PHP

Consul服务器配置微服务带来的最大好处就是把整个大项目拆分成不同的服务,运行在不同的服务器上,实现解耦和分布式处理。虽然微服务有很多优点,但也有缺点。任何事物都有两个方面。在微服务中运维会是个大问题。如果有一天我们有非常多的服务,那么我们不知道哪个服务在哪台机器上。可能有人会说,这部分应该直接写在程序的配置中。当我们的服务很少的时候可以这样做,并且允许这样做,但是在实践中我们应该尽量避免这样做。比如我们的一个服务的地址如果改变了,那么我们设计的相关代码就得修改重新部署;或者哪天我们上线了一个新的服务或者下线了一个服务,那么我们又得重新修改程序代码,这是很不合理的。那么有没有什么可以解决这样的问题呢?这里需要用到我们的服务注册和发现。没有服务注册和发现的结构对比

没有服务发现的架构
从上图可以看出,在没有服务注册和发现的情况下,一个调用者需要维护多个服务的ip和端口,即非常错误的一个好的做法,当我们的服务调整的时候,可能会导致服务调用失败,更换服务器,新的服务就会受到影响。以后如果某个服务节点出现问题,排查对于程序和运维人员来说是一个很大的灾难,因为不知道是哪个节点出现了问题,需要检查每台服务器。当我们使用服务注册和发现时,结构是什么样的?有一个服务注册发现的结构
有一个服务注册发现的结构
从上图我们可以看出,当我们有注册中心的时候,调用者不需要自己维护所有的服务信息,只需要向注册中心提交服务请求,就可以得到你想要的服务信息。这样当我们的服务调整,或者服务上线下线的时候,都可以很方便的操作,并且可以在注册的时候检查服务的健康度,帮助运维人员快速的定位到故障的服务器。ConsulSwoft推荐使用Consul,它是一个用Go编写的服务注册、发现和配置管理系统。Agent:Agent是Consul集群中常驻的后台程序。Agent有两种模式,一种是server,一种是client。所有Agent都可以运行DNS或者HTTP接口,负责检查服务是否存活,保持服务同步。安装步骤1、登录官网下载。下载地址是wgethttps://releases.hashicorp.com/consul/1.2.1/consul_1.2.1_linux_amd64.zipunzipconsul_1.2.1_linux_amd64.zip2.设置环境变量,如果没有设置,可以直接Moveconsul执行文件到/usr/bin目录下mvconsul/usr/binok,安装成功后我们进行一些配置启用consulServer配置单机配置服务器1,IP192.168.1.100这种方式适合搭建服务Debug使用consulagent-bootstrap-expect1-server-data-dir/data/consul-node=swoft01-bind=0.0.0.0-config-dir/etc/consul.d-enable-script-checks=true-datacenter=sunny-client=0.0.0.0-ui可以通过http://192.168.1.100:8500查看服务信息集群配置此方法适用于生产环境server1,IP192.168.1.100consulagent-bootstrap-expect2-server-data-dir/data/consul-node=swoft01-bind=0.0.0.0-client=0.0.0.0-config-dir/etc/consul.d-enable-script-checks=true-datacenter=sunny-client=0.0.0.0上述命令以服务器端模式启动代理。组内有两台扩展机,集群的持久化数据存放在/data/consul0下。节点名为swoft01,绑定地址为0.0.0.0,服务配置文件存放在/etc/consul.d,打开查看heartbeat,数据中心名称为dc1,可访问客户端地址为0.0。0.0服务器2,IP192.168.1.110consulagent-server-data-dir/data/consul-node=swoft02-bind=0.0.0.0-client=0.0.0.0-config-dir/etc/consul.d-enable-script-checks=true-datacenter=sunny-join192.168.1.100server3,IP192.168.1.120consulagent-server-data-dir/data/consul-node=swoft03-bind=0.0.0.0-client=0.0.0.0-config-dir/etc/consul.d-enable-script-checks=true-datacenter=sunny-join192.168.1.100以上服务器2和服务3使用-join加入集群,使用同数据名sunnyClient配置服务器4,IP192.168.1.130consulagent-ui-data-dir/data/consul-node=swoft04-bind=0.0.0.0-config-dir/etc/consul.d-enable-script-checks=true-datacenter=sunny-ui-client=0.0.0.0-join192.168.1.100如果client不使用-server,则为client模式运行。其他参数同上,server和client一切启动后,可以在浏览器输入http://192.168.1.130:8500查看信息查看集群成员:consulmembers查看集群信息:consulinfo命令分析更多命令analysis-bootstrap-expect期望的数据中心服务器数量这个值不应该提供,或者必须和集群中的其他服务器保持一致。提供后,Consul将在引导集群之前等待指定数量的服务器可用。这允许自动选择初始领导者。这不能与旧版-bootstrap标志一起使用。在服务器端模式下运行需要此标志。-server以服务器模式启动-data-dir数据存储位置,这个用来持久化集群状态-node这个节点在集群中的名称。这在集群中必须是唯一的。默认情况下,这是计算机的主机名。-bind绑定服务器ip地址-config-dir指定配置文件服务,当该目录下有以.json结尾的文件时,将加载该文件。更多配置参考配置模板-enable-script-checks检查服务是否处于active状态,类似openheartbeat-datacenter数据中心名称-client客户端可以访问ip,包括HTTP和DNS服务器。默认情况下,这是“127.0.0.1”,它只允许环回连接。-ui打开web的ui界面-join加入现有集群。更多consul资讯,请移步Consul官网关注微信公众号:IT不踢