kubernetes实战之consul篇及consul在windows下搭建consul简单测试环境

时间:2021-10-09 07:09:20

consul是一款服务发现中间件,1.12版本后增加servicemesh功能.consul是分布式的,可扩展的,高可用的根据官方文档介绍,目前已知最大的consul集群有5000个节点,consul被广泛用用于服务发现,服务健康检测以及分布式配置存储,并且不断地改进对servicemesh和kubernetes的支持,很多优秀项目包括ocelot,spring cloud都提供了与consul的便利集成,本系列也会将consul做为一个重点的有状态服务较为细致讲解,让大家对kubernetes在服务管理上的便捷性,自发性有更深的理解(在kubernetes里,有状态服务部署是一件很困难的事,要考虑服务间必须互相排斥,对服务资源的合理限制以及服务发生漂移时数据的处理,部分服务挂掉后如何在没有人工介入的情况下自动加入集群等问题),虽然我们在第一天接触容器的时候都会看到容器与虚拟机的对比,以及容器的优势,但是很多初学者仍然是把容器当作虚拟机来使用,按照在虚拟机中部署应用的思路在容器里部署应用,当然仅仅为了方便测试这样做是无可厚非的,但是生产环境是非常严肃的,一定要对可能产生的问题有充分的预估以便提前安排应对方案,并且充分利用新技术的特点对自己应用的部署灵活性,维护便捷性以及应用本身的伸缩性等方面进行持续优化.

consul是一款服务发现中间件,1.12版本后增加servicemesh功能.consul是分布式的,可扩展的,高可用的.其主要功能如下

  • service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。
  • health checking:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
  • key/value storage:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
  • multi-datacenter:无需复杂的配置,即可支持任意数量的区域

基本概念

CLIENT

CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。

SERVER

SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。

SERVER-LEADER

中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。

其它信息

其它信息包括它们之间的通信方式,还有一些协议信息,算法。它们是用于保证节点之间的数据同步,实时性要求等等一系列集群问题的解决。这些有兴趣的自己看看官方文档。

由于本系列的性质是关于devops的,因此不对consul做详细介绍,需要了解consul的同学可以参考官方文档或者相关博客.这里的关注点主要在于测试环境和生产环境的部署上.

平台支持情况

consul支持linux,macos和windows平台,开发环境可以使用基于windows的consul,仅有一个可执行程序,使用非常方便,生产环境建议使用linux或者docker/kubernetes部署

后面我们将会对consul windows测试环境部署,docker 单节点部署,docker集群部署,kubernetes集群部署一一做介绍.

consul在windows下测试环境简单部署

本篇只介绍在windows下部署单节点测试环境,关于集群的部署可以参照后面docker的部署方式.

本篇非常简单,但是考虑到内容的独立性,因此单独做为一节.

consul windows版下载

可以在百度里搜索consul,进入到官网首页就可以看到醒目的download,选择windows 版的下载即可.

下载完成后可以看到是一个单文件,名叫作consul.exe,这里建议把它单独放到一个文件夹里面,因为后面可能需要添加配置文件,放在一个文件夹下面方便管理.

consul windows版 部署

注意这里不像普通的exe双击安装,而是需要通过命令行启动

consul.exe所在的文件夹打开命令窗口,输入consul --help就会出现以下关于consul的命令帮助

λ consul --help
Usage: consul [--version] [--help] <command> [<args>] Available commands are:
acl Interact with Consul's ACLs
agent Runs a Consul agent
catalog Interact with the catalog
connect Interact with Consul Connect
debug Records a debugging archive for operators
event Fire a new event
exec Executes a command on Consul nodes
force-leave Forces a member of the cluster to enter the "left" state
info Provides debugging information for operators.
intention Interact with Connect service intentions
join Tell Consul agent to join cluster
keygen Generates a new encryption key
keyring Manages gossip layer encryption keys
kv Interact with the key-value store
leave Gracefully leaves the Consul cluster and shuts down
lock Execute a command holding a lock
maint Controls node or service maintenance mode
members Lists the members of a Consul cluster
monitor Stream logs from a Consul agent
operator Provides cluster-level tools for Consul operators
reload Triggers the agent to reload configuration files
rtt Estimates network round trip time between nodes
services Interact with services
snapshot Saves, restores and inspects snapshots of Consul server state
validate Validate config files/directories
version Prints the Consul version
watch Watch for changes in Consu

在命令窗口输入consul agent -dev就可以以dev模式启动consul了,以下是输出内容的头部

==> Starting Consul agent...
==> Consul agent running!
Version: 'v1.4.0'
Node ID: '2be40d2e-a5eb-5dda-271f-70a39141d791'
Node name: 'DESKTOP-OE0CB8G'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: false)
Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false ==> Log data will now stream in as it occurs:

通过以上输入内容可以看到,consul已经运行,版本是1.4.HTTP端口是8500,我们在浏览器输入localhost:8500就可以看到consul的web管理界面了

kubernetes实战之consul篇及consul在windows下搭建consul简单测试环境

至此,windows配置已经完成了.

更改默认端口

可以看到,默认情况下,http端口是8500,测试环境下我们可能没有需求更改端口,可是正式环境部署的时候可能需要更改端口号,更改端口号也非常简单,在启动agent的时候加上-http-port选项即可.

consul agent -dev -http-port=8400
==> Starting Consul agent...
==> Consul agent running!
Version: 'v1.4.0'
Node ID: '7a083b04-cd4a-04af-743b-4fdc8d82c62e'
Node name: 'DESKTOP-OE0CB8G'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: false)
Client Addr: [127.0.0.1] (HTTP: 8400, HTTPS: -1, gRPC: 8502, DNS: 8600)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

从输出信息中可以看到,http端口已经更改成8400了.

kubernetes实战之consul篇及consul在windows下搭建consul简单测试环境的更多相关文章

  1. windows下搭建Consul分布式系统和集群

    随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.我们在一个项目上注册了很多服务,在进行运维时,需要时 ...

  2. windows下搭建permeate漏洞测试系统实战

    最近一直在搭建漏洞测试环境练习. 在此期间遇到很多问题,但是通过学习都一一解决.通过写此文来记录遇到的问题和解决方法. 首先,在github上看到了一个不错的permeate渗透测试系统.于是想搭建拿 ...

  3. consul windows下搭建

    起源 由于项目在linux部署,但是开发和测试是在windows下的,所以,暂时接触到consul,暂时也不会远程连接,只好在windows下安装consul 过程 去官网下载:https://www ...

  4. kubernetes实战之consul简单测试环境搭建及填坑

    这一节内容有点长,我们将介绍如何基于docker搭建一client一server的consul测试环境,以及如何搭建多server consul测试集群.在基于docker搭建多server的cons ...

  5. windows下安装consul

    Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件, 由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行 ...

  6. 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库

    本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...

  7. Windows下搭建Docker与Kubernetes&lpar;DevOps一&rpar;

    Docker与Kubernetes (二)搭建 开通  Hyper-V 安装Docker for Windows 开通Kubernetes 3.关键概念 PodKubernetes 中的最小单元,一个 ...

  8. 实战web前端之:Bootstrap框架windows下安装与使用

    Bootstrap是前端开发中比较受欢迎的框架,简洁且灵活.它基于HTML.CSS和JavaScript,HTML定义页面元素,CSS定义页面布局,而JavaScript负责页面元素的响应.Boots ...

  9. &lbrack;dart学习&rsqb;第一篇:windows下安装配置dart编译环境,写出helloworld

    前言 博主非科班出身,平时多用C语言,最近想了解学习一门第二语言,看上了可用于移动开发的目前还小众一点dart,准备用一段比较长的时间来慢慢学习.理解. 关于dart语言不再详细介绍了,大家可以访问  ...

随机推荐

  1. angular select中ng-options使用

    function selectCtrl($scope) { $scope.selected = ''; $scope.model = [{ id: 10001, mainCategory: '男', ...

  2. Android利用Looper在子线程中改变UI

    MainActivity如下: package cn.testlooper; import android.app.Activity; import android.os.Bundle; import ...

  3. &lbrack;MSDN&rsqb;关键字查询语言 &lpar;KQL&rpar; 语法参考

    MSDN:http://msdn.microsoft.com/library/ee558911(v=office.15) 了解如何构造 SharePoint 2013 中的搜索功能 的 KQL 查询. ...

  4. 15&lowbar;RHEL7挂载NTFS分区

    1.下载ntfs-3g wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2015.3.14.tgz 2.安装 tar -zxvf ntfs-3 ...

  5. android保存文件到SD卡中

    想把文件保存到SD卡中,一定要知道SD卡的路径,有人说可以用File explore来查看,这种方法不太好,因为随着android版本的升级,SD卡的路径可能会发生改变.在1.6的时候SD的路径是/s ...

  6. Java 集合框架之set用法

    Java 集合框架之set 一个简单的例子 创建一个Customer类,类中的属性有姓名(name).年龄(age).性别(gender),每个属性分别有get/set 方法.然后创建两个Custom ...

  7. 使用viewport中的vm来适配移动端页面

    前言 作为一个小前端,经常要和H5打交道,这就面临着不同终端的适配问题. Flexible方案通过Hack手段来根据设备的dpr值相应改变<meta>标签中viewport的值,给我更贴切 ...

  8. Memcached在Windows下的配置和使用

    Memcached学习笔记---- 安装和配置 首先,下载Memcached相关文件. 打开控制台,进入Memcached主程序目录,输入: memcached.exe -d install //安装 ...

  9. webpack4使用mode优化开发环境配置

    @subject: webpack mode @author: leinov @date: 2018-11-29 mode webpack的 mode 配置用于提供模式配置选项告诉webpack相应地 ...

  10. mongoDB的使用(NodeJs)

    MongoDB相信大家都不太陌生了,但是究竟它和我们熟悉的MySQL(MariaSQL).SQLServer有什么区别呢? 我们熟悉的MySQL是关系型数据,每个数据表都有严格的数据结构规定,因而我们 ...