一台机器能做java配置consul集群地址的集群吗

当一堆业务系统互相之间使用RPC调鼡时为了提高可用性,每个模块一般会做多台主机然后用haproxy负载均衡,规模小还可以但当规模大了以后,更改haproxy配置文件对于运维人员來说就比较痛苦了

为了解决这样的问题,阿里出了一个dubbo用于服务注册和查找管理,不过只支持java

在研究dubbo和zookeeper的时候,偶然看到了java配置consul集群地址按官方说法,java配置consul集群地址就是为了服务注册和发现而生的非常感兴趣,遂研究了一下现记录一些点。

本文不讲java配置consul集群地址是什么能做什么,也不讲如何配置监控如何注册服务,也不讲如何配置图形监控界面只讲讲如何在生产环境配置java配置consul集群地址集群,我只是综合了参考文档中的内容没有太多原创,而且也不涉及加密RPC通信部分那部分其实就是生成CA和证书放到配置文件中。

下图是官网提供的集群大小和容错间的关系可以参考。本文是以3个节点举例

加载中,请稍候......

将java配置consul集群地址加入到环境变量编辑/etc/profile,在文件末尾添加如下一行

以开发模式启动java配置consul集群地址这种模式能简单快速启动一个单节点的java配置consul集群地址服务,但是开发模式不能持久化数据所以不能用于生产环境。

上面使用 -dev 参数来快速地启动一个java配置consul集群地址服务但是开发模式也不能用于个集群环境。丅面会介绍用于集群的参数配置
以server模式启动第一个节点

以client模式启动另一节点

告知第一个java配置consul集群地址加入第二个java配置consul集群地址,在新终端中运行如下命令:

此时两台java配置consul集群地址已经成为了一个集群在任意一台机器终端运行 java配置consul集群地址 members 可以看到两个java配置consul集群地址都已經感知到了另一个节点的存在

有时发现点明一些理论知识有助于我们理解概念。
java配置consul集群地址和eureka一样是用于分页式系统中服务注册和发现。与其他分布式服务注册与发现的方案java配置consul集群地址的方案更”一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案不再需要依赖其他工具(比洳ZooKeeper等)。与docker容器无疑配合
java配置consul集群地址 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。

-dev开发服务器模式启动-node結点名为cy,-ui可以用界面访问默认能访问。

window下的使用到此即可因为只会存在开发环境,而且能使用不需要server和群集等概念。

节点名称:這是代理的唯一名称默认情况下,这是机器的主机名但您可以使用该-node标志对其进行自定义 。
数据中心:这是配置代理运行的数据中心每个节点都必须设置其它向数据中心报告。-datacenter 标志可用于设置数据中心对于单DC配置,代理将默认为“dc1”
服务器:这表明代理是以服务器还是客户端模式运行。Server: false (bootstrap: false),表示不是以服务器模式运行事实上-dev是开发服务器模式。
客户端地址:这是用于代理的客户端接口的地址这包括HTTP和DNS接口的端口。默认情况下它只绑定到localhost。
群集地址:这是用于集群中的java配置consul集群地址代理之间通信的地址和端口集并非所有集群中嘚java配置consul集群地址代理都必须使用相同的端口,但该地址必须可供所有其他节点访问
-dev:该模式不能用于生产环境,因为该模式下不会持久化任何状态该启动模式仅仅是为了快速便捷的启动单节点java配置consul集群地址

使用-http-port命令行参数,例如修改成8080端口

使用-config-dir命令行参数指定配置文件
就是指定加载置文件的目录,该目录下所有的以.json结尾配置文件加载进去它的加载顺序是根据26个字母的顺序加进行加载配置攵件的。目录必需为java配置consul集群地址.d文件内容都是json格式的数据。默认后面文件定义配置会覆盖前面文件定义的配置

  1. 作用:指定agent储存状态嘚数据目录,这是所有agent都必须的,对server尤其重要因为他们必须持久化集群的状态

  2. 作用:指定service的配置文件和检查定义所在的位置。目录必需为java配置consul集群地址.d文件内容都是json格式的数据。

  3. 作用:指定一个要装载的配置文件

  4. 作用:开发服务器模式,虽然是server模式但不用于生产环境,因為不会有任何持久化操作即不会有任何数据写入到磁盘

  5. 作用: 参数表明该服务运行时最低开始进行选举的节点数,当设置为1时则意味尣许节点为一个时也进行选举;当设置为3时,则等到3台节点同时运行java配置consul集群地址并加入到server才能参与选举选举完集群才能够正常工作。 ┅般建议服务器结点3-5个

  6. 作用:指定节点在集群中的名称,该名称在集群中必须是唯一的(默认这是机器的主机名)直接采用机器的IP

  7. 作鼡:指明节点的IP地址,一般是0.0.0.0或者云服务器内网地址不能写阿里云外网地址。这是java配置consul集群地址侦听的地址它必须可以被集群中的所囿其他节点访问。虽然绑定地址不是绝对必要的但最好提供一个。

  8. 作用:指定节点为client指定客户端接口的绑定地址,包括:HTTP、DNS、RPC
    默认是127.0.0.1只允许回环接口访问

作用:指定机器加入到哪一个数据中心中。老版本叫-dc-dc已经失效

上面的例子都是以-dev开发者服务器模式运行的,生产環境不是我想要的下面以server模式运行java配置consul集群地址.

 

 
 



Agent: java配置consul集群地址集群中长时间运行的守护进程,以java配置consul集群地址 agent 命令开始启动. 在客户端囷服务端模式下都可以运行可以运行DNS或者HTTP接口, 它的主要作用是运行时检查和保持服务同步
Client: 客户端, 无状态, 以一个极小的消耗将接口請求转发给局域网内的服务端集群.
Server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数據中心的 server 数量推荐为 3 个或是 5 个.
Datacenter: 数据中心,多数据中心联合工作保证数据存储安全快捷
Consensus: 一致性协议使用的是Raft Protocol
RPC: 远程程序通信
Gossip: 基于 Serf 实现嘚 gossip 协议负责成员、失败探测、事件广播等。通过 UDP 实现各个节点之间的消息分为 LAN 上的和 WAN 上的两种情形。

我要回帖

更多关于 java配置consul集群地址 的文章

 

随机推荐