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

上面图片我们可以看到在没有服务注册发现的时候一个调用者需要维护多个服务的ip和端口,这是非常不好的做法,当我们服务进行调整的时候就有可能导致服务调用失败,还有服务器更换服务器,上下新服务,都会受到影响。将来某一个服务节点出现问题,排查对于程序和运维人员来说都是一场很大的灾难,因为不知道哪一个节点出了问题,需要每一台服务器的去排查。
而当我们有使用服务注册发现之后的结构体是什么样子的呢?

我们从上图可以发现,当我们有注册中心之后调用者不需要自己去维护所有服务的信息了,仅需要向注册中心请求获取服务,就可以拿到想要的服务信息。这样当我们的服务有所调整,或者上线下线服务,都要可以轻松操作,并且可以在注册中间检查到服务的健康情况,帮助运维人员快速定位到故障的服务器。
在Swoft这个框架里面推荐我们使用的就是consul,consult是一个使用go写的服务注册、发现、配置管理系统。
Agent:Agent是Consul集群中一个常驻后台的程序。Agent有两种模式,一种是服务端,一种是客户端。所有Agent都可以运行DNS或者HTTP接口,并且负责检查服务是否存活,和保持服务同步。
Client:Client是一种Agent的运行模式,把所有RPC转发到Agent服务器的代理者,客户端会在后台有一个用最小带宽消耗把请求转发到后端的Agent服务,减轻Agent服务器的压力。
Server:Server是另一种Agent的运行模式,包括使用Raft算法处理数据,维护集群状态,响应RPC的请求,与其他集群的server交换数据或者远程数据中心。
RPC:远程过程调用,这是一种允许客户端发出服务器请求的请求/响应机制。
在consult里面有很多组件,在这里我们暂时使用一个组件就够了就是agent,对于consul的安装也是非常简单的毕竟只有一个二进制文件包,所以直接下载就可以使用了。
安装步骤
1、登录官网进行下载,https://www.consul.io/downloads.html
wget https://releases.hashicorp.com/consul/1.2.1/consul_1.2.1_linux_amd64.zip
unzip consul_1.2.1_linux_amd64.zip
2、设置环境变量,如果不设置可以直接把consul执行文件移动到/usr/bin目录下
mv consul /usr/bin
3、Server配置
单机配置
服务器1,IP 192.168.1.100
这种方式适合用于搭建服务调试使用
consul agent -bootstrap-expect 1 -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 查看服务信息
集群配置
这种方式适用于生产环境
服务器1,IP 192.168.1.100
consul agent -bootstrap-expect 2 -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,开启检查心跳,数据中心的名称是dc1,可访问的客户端地址是0.0.0.0
服务器2,IP 192.168.1.110
consul agent -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 -join 192.168.1.100
服务器3,IP 192.168.1.120
consul agent -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 -join 192.168.1.100
以上服务器2和服务3使用 -join 加入集群,并且使用同一个数据名称sunny
4、Client配置
服务器4,IP 192.168.1.130
consul agent -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 -join 192.168.1.100
客户端如果不使用-server就是客户端模式运行,其他参数同上,服务端和客户端都启动了之后可以在浏览器输入 http://192.168.1.130:8500 来查看信息
查看集群成员
consul members
查看集群信息
consul info
命令解析
更多https://www.consul.io/docs/agent/options.html
-bootstrap-expect 数据中心中预期的服务器数。不应提供此值,或者该值必须与群集中的其他服务器一致。提供后,Consul将等待指定数量的服务器可用,然后引导群集。这允许自动选择初始领导者。这不能与传统-bootstrap标志一起使用。此标志需要在服务端模式下运行。 -server 以服务端模式启动 -data-dir 数据存放位置,这个用于持久化保存集群状态 -node 群集中此节点的名称。这在群集中必须是唯一的。默认情况下,这是计算机的主机名。 -bind 绑定服务器的ip地址 -config-dir 指定配置文件服务,当这个目录下有 .json 结尾的文件就会加载进来,更多配置可以参考https://www.consul.io/docs/agent/options.html#configuration_files -enable-script-checks 检查服务是否处于活动状态,类似开启心跳 -datacenter 数据中心名称 -client 客户端可访问ip,包括HTTP和DNS服务器。默认情况下,这是“127.0.0.1”,仅允许环回连接。 -ui 开启web的ui界面 -join:加入到已有的集群中
关于consul更多的信息请大家移步到https://www.consul.io/
Consul服务器配置的更多相关文章
- consul配置参数大全、详解、总结
命令行选项 以下选项全部在命令行中指定. -advertise - 通告地址用于更改我们通告给集群中其他节点的地址.默认情况下,-bind地址是通告的.但是,在某些情况下,可能存在无法绑定的可路由地址 ...
- consul笔记
1 webui 默认最新的webui只支持127.0.0.1这种的本机网站的 不支持192.168.1.2 启用192.168.1.2的支持 命令加 -client 192.168.2.156 感谢赵 ...
- Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- 【3分钟就会系列】使用Ocelot+Consul搭建微服务吧!
一.什么Ocelot? API网关是一个服务器,是系统的唯一入口.API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端实现和微服务应用程 ...
- Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- 动态负载均衡(Nginx+Consul+UpSync)环境搭建
首先 安装好 Consul upsync 然后: 1.配置安装Nginx 需要做配置,包括分组之类的,创建目录,有些插件是需要存放在这些目录的 groupadd nginx useradd -g ng ...
- Nginx(四) nginx+consul+upasync 在ubnutu18带桌面系统 实现动态负载均衡
1.1 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化 ...
- 【Nginx】基于Consul+Upsync+Nginx实现动态负载均衡
一.Http动态负载均衡 什么是动态负载均衡 动态负载均衡实现方案 常用服务器注册与发现框架 二.Consul快速入门 Consul环境搭建 三.nginx-upsync-module nginx-u ...
- Consul+upsync+Nginx 动态负载均衡
1,动态负载均衡 传统的负载均衡,如果修改了nginx.conf 的配置,必须需要重启nginx 服务,效率不高.动态负载均衡,就是可配置化,动态化的去配置负载均衡. 2,实现方案 1. Consul ...
随机推荐
- Docker镜像原理
⒈是什么? 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量以及配置文件等. 引用 UnionFs( ...
- HTTP协议中PUT和POST使用上的区别
有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源:有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源:还有的观点认为可以用PUT和POST中任何一个来做创建或者更新一 ...
- linux中fork()函数详解【转】
转自:http://blog.csdn.net/jason314/article/details/5640969 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过 ...
- word打不开怎么办?
方法一 故障描述:编辑Word文档的过程中,程序非法关闭,重新打开也是如此.即使重新安装了Office 2003,在启动Word 2003后仍然出现了异常情况.双击Word文档后,程序弹出出错对话框, ...
- Hacker需要掌握的基础
编译语言:1.C语言能力要求:精通选用教材:<C Primer Plus 中文版(第5版)>其他教材:<标准C程序设计(第3版)><C语言入门经典(原书第3版)>补 ...
- ES系列十七、logback+ELK日志搭建
一.ELK应用场景 在复杂的企业应用服务群中,记录日志方式多种多样,并且不易归档以及提供日志监控的机制.无论是开发人员还是运维人员都无法准确的定位服务.服务器上面出现的种种问题,也没有高效搜索日志内容 ...
- [转]VS2015 Git 源码管理工具简单入门
VS2015 Git 源码管理工具简单入门 1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本 ...
- WPF 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
1.检查代码不存在问题,最后找到问题,Nut管理包没有安装CefSharp.wpf. 2.安装对应的版本即可.
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- centos7.2环境中kettle环境搭建及任务推送配置详解
目标:将mysql5.5中testdb1的ehr_user表推送到tdoa的ehr_user表中,为避免不必要的麻烦,两张表结构.编码,包括数据库编码保持一致 操作系统:centos7.2 kettl ...