consul集群搭建教程

news2024/11/18 17:24:56

简言

1. 使用consul单节点有宕机,数据丢失的风险,为了安全,使用consul集群更靠谱

2. consul的各个版本下载地址在 Consul Versions | HashiCorp Releases

3. 本文使用consul的版本是consul1.15.1,所以请下载名字为 consul_1.15.1_linux_amd64.zip 的文件即可

4. 本次教程用到了三台机器,分别是 192.168.5.101,192.168.5.46,192.168.5.47

准备操作(注意:三台机器上都需要执行)

1. 打开网址 Consul Versions | HashiCorp Releases 下载consul的安装包,下载到 /usr/local/bin 目录,如下图

 2. 运行命令 unzip consul_1.15.1_linux_amd64.zip 解压到当前目录,consul就是我们要使用的bin文件了。运行命令 consul --version 查看版本确实是v1.15.1, 如下图

 3. 运行命令  mkdir consul_1.15.1 创建目录 consul_1.15.1,我们的目的是把本次实验的东西都放在这个目录下

    进入到刚才创建的目录 consul_1.15.1

    执行命令 mkdir data  创建data目录,用以存放consul的数据

    执行命令 mkdir config 创建config目录,用以存放consul使用的配置文件

最终如下图

开始搭建集群

步骤1. 在机器 192.168.5.101 上的目录 /usr/local/bin/consul_1.15.1,新建文件 cluster.sh    内容如下

nohup ../consul agent -server -data-dir=./data -node=server1 -bind=192.168.5.101 -client=192.168.5.101 -advertise=192.168.5.101 -bootstrap-expect=3 -datacenter=datacenter1 -ui -enable-script-checks=true -config-dir=./config -server-port=8300 -serf-lan-port=8301 -serf-wan-port=8302 -http-port=8500 -dns-port=8600 > consul.log 2>&1 &

这里逐个属性解释下

nohup    linux常用命令,表连接服务器的终端退出后,本次启动的进程不中断

agent     以代理模式启动

-server   以server模式启动,不设置时默认以client模式启动

-data-dir=./data 表consul的数据存放在当前目录下的data文件夹

-node=server1  本consul节点的名字,该名字在集群内不重复即可。这里暂用server1表第一个consul节点服务

-bind=192.168.5.101 内部集群通信,本consul节点绑定的地址

-client=192.168.5.101 绑定的客户端接口地址,客户端可以通过该地址连接到本consul

-advertise=192.168.5.101 内部集群通信时广播出去的IP地址,不设置时默认使用bind属性的IP作为集群内广播

-bootstrap-expect=3 表consul集群期望的consul节点数量,consul会等待这么多个consul节点可用时才会开始搭建集群,选举leader节点

datacenter=datacenter1 指定数据中心的名字,不同的cosul节点可以共用同一个数据中心

-enable-script-checks=true

-config-dir=./config 指定本consul进程使用的配置文件的路径

-server-port=8300  选取Leader节点(raft协议通信)和提供RPC调用时,consul节点之间的通信端口

-serf-lan-port=8301 集群通信端口,用在LAN网

-serf-wan-port=8302 数据中心通信端口,用在WAN网

-http-port=8500 提供http服务的端口

-dns-port=8600 提供dns服务的端口

> consul.log 意思是把进程的标准输出重定向到consul.log文件,没有该文件时会自动新建

2>&1 意思是进程的标准错误和进程的标准输出一样,也就是同样重定向到consul.log文件

&     linux常用命令,表后台执行,这样进程的输出不要输出到当前终端上

步骤2. 执行命令 bash ./cluster.sh 启动本机consul节点,然后 ps aux |grep consul 查看consul进程,可以看到consul进程已经启动成功,如下图,73627即consul节点进程

 步骤3.在浏览器上输入地址 http://192.168.5.101:8500,consul会自动转到 192.168.5.101:8500/ui/datacenter1/services 可以看到此时consul返回了错误,“No cluster leader”,意为consul进程启动成功了,但是没有leader节点,不能提供任何服务

步骤4. 在机器 192.168.5.46 上同样执行步骤1 ,步骤2,只是要先对cluster.sh修改

    4.1 把cluster.sh中的 -node 的值改为serve2 

    4.2 把所有的ip(-bind,-client,-advertise)都修改成192.168.5.46

    4.3 增加 -join=192.168.5.101:8301 意思是加入到机器192.168.5.101的consul集群中

    其他内容可不变,如下

nohup ../consul agent -server -data-dir=./data -node=server2 -bind=192.168.5.46 -client=192.168.5.46 -advertise=192.168.5.46 -join=192.168.5.101:8301 -bootstrap-expect=3 -datacenter=datacenter1 -ui -enable-script-checks=true -config-dir=./config -server-port=8300 -serf-lan-port=8301 -serf-wan-port=8302 -http-port=8500 -dns-port=8600 > consul.log 2>&1 &

然后执行 bash ./cluster 启动consul,再ps查看下,以确保consul进程真的启动成功了

特别注意:此时在浏览器中输入地址 192.168.5.101:8500 或者 192.168.5.46:8500 查看,一样失败,因为consul节点数只有2个,不足我们指定的 -bootstrap-expect=3 ,所以consul尚未进行集群选举,没有leader节点

步骤5.  在机器 192.168.5.47 上同样执行步骤1 , 步骤2,只是要先对cluster.sh修改

    5.1 把cluster.sh中的 -node 的值改为serve3 

    5.2 把所有的ip(-bind,-client,-advertise)都修改成192.168.5.47

    5.3 增加 -join=192.168.5.101:8301 意思是加入到机器192.168.5.101的consul集群中

    其他内容可不变,如下

nohup ../consul agent -server -data-dir=./data -node=server3 -bind=192.168.5.47 -client=192.168.5.47 -advertise=192.168.5.47 -join=192.168.5.101:8301 -bootstrap-expect=3 -datacenter=datacenter1 -ui -enable-script-checks=true -config-dir=./config -server-port=8300 -serf-lan-port=8301 -serf-wan-port=8302 -http-port=8500 -dns-port=8600 > consul.log 2>&1 &

然后执行 bash ./cluster 启动consul,再ps查看下,以确保consul进程真的启动成功了

 步骤6: 再次在浏览器上输入地址 http://192.168.5.101:8500,consul会自动转到 192.168.5.101:8500/ui/datacenter1/services 可以看到此时consul集群已经组建成功,如下图

点击左侧列表的Nodes,可以查看所有的consul节点,如下图,其中sever1为leader节点

步骤7.  测试集群,我们把机器192.168.5.101的consul进程关掉, 在浏览器上输入地址 http://192.168.5.101:8500 会看到已经无法连接通了,如下图

 我们再在浏览器上输入地址 http://192.168.5.46:8500 即另一个机器的consul地址,可以看到consul集群仍在,新的leader节点已经选举成功,这次是切换成了 192.168.5.47,如下图

 说明3个consul节点的集群,当consul主节点出问题时,剩下的2个consul节点会自动选举出新的leader节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据密集型应用存储与检索设计

本文内容翻译自《数据密集型应用系统设计》,豆瓣评分高达 9.7 分。 什么是「数据密集型应用系统」? 当数据(数据量、数据复杂度、数据变化速度)是一个应用的主要挑战,那么可以把这个应用称为数据密集型的。与之相对的是…

免费文本转语音(在线文本转语音)

个人开发的网站,已经维护快一年了,接口稳定,基于微软官方接口,可在线生成,手机电脑平板通用。每天提供一定额度(时而5000时而2000时而500,根据服务器压力调整)的免费字数供大家使用。…

数画-AI绘画-免费的人工智能AI绘画网站

文章目录 AIGC什么是AI作画?Prompt数画AIGC的未来发展结语 AIGC AIGC(AI Generated Content)是指利用人工智能生成内容。是利用人工智能来生成你所需要的内容,GC的意思是创作内容。与之相对应的概念中,比较熟知的还有P…

瑞芯微RK3568对比RK3399性能解析

RK3568核心板简介 ​ RK3568核心板是武汉万象奥科基于瑞芯微Rockchip的RK3568设计的一款高性能核心板。它采用四核Cortex-A55架构,最高主频可达2.0GHz,同时集成Mali-G52 2EE GPU,支持4K60fps H.265/H.264/VP9解码和4K60fps H.265/H.264编码…

北大POJ 1000 ~ 1007

1. AB 🍑 POJ1000 ab 🍔 签到题 import java.io.*; import java.util.*; public class Main {public static void main(String args[]) throws Exception{Scanner cinnew Scanner(System.in);int acin.nextInt(),bcin.nextInt();System.out.println(…

【Vue3】Vue项目各个配置文件的相关用途

通过Vue Cli创建好初始代码后,对于各个文件以及配置文件的用途,比较模糊。弄清楚配置文件的大致作用,十分有利于项目整体性的把控,在实际项目中例如修改配色、样式、统一页面结构等,都可以事半功倍。 1、package.json …

分享下这些软件外包公司(2023最新版),程序员有福了

金三银四已经过去一半,再过几个月又将迎来毕业季,大家有没有找到心仪的工作机会呀? 今年找工作的行情确实不行,在网上也能听见很多人在讨论说今年工作实在是太难找了。 如果实在找不到合适的工作,那外包也可以考虑下了…

【LeetCode】102.二叉树的层序遍历

1.问题 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2&#xff1a…

Centos7配置静态ip地址

目录 查找配置网络的文件 配置静态ip VMware查找网关ip Windows Mac 查找配置网络的文件 先输入以下命令查看下ip是通过哪个文件来配置的 ip addr 修改网络配置文件(注意看我上面查到的是ens32, 所以在ifcfg-后面拼的是这个) vi /etc/sysco…

VM——下载 centos

进入centos官网 这里显示了我所在地区可用的ISO镜像,这里我选阿里的镜像库 然后选择centos的版本, 【DVD】标准版本 【Everything】集成所有软件版本 【LiveGNOME】GNOME桌面版本 【LiveKDE】KDE桌面版本 【Minimal】最小安装版本 【NetInstall】网…

Qt Quick - TabBar

Qt Quick - TabBar使用总结 一、概述二、调整选项卡三、Flickable标签三、定制化 一、概述 TabBar其实就是选项卡,TabBar是由TabButton控件填充,TabBar可以与任何提供currentIndex属性的布局或容器控件一起使用,如StackLayout或SwipeView。T…

扬帆优配|鼎智科技大涨22%登上龙虎榜 新股“赚钱效应”再现

上市第三天,鼎智科技(873593)因大涨22%登上“龙虎榜”,北交所发表的数据显示,组织现身买入榜,同时卖出榜也呈现了组织座位。 鼎智科技上市后接连上涨,使得北交所新股呈现久违的“赚钱效应”。从近期北交所新股的发行结…

从高考开始跌跌撞撞到目前的研究生拟录取

文章目录 前言一、高考的失利二、本科生活三、研究生初试的力不从心四、研究生复试的措手不及后话 前言 其实我一直都很想写写关于我的学习生涯之类的记录,但是不知道该以何种心态来书写… 看到学信网的拟录取通知当时其实是有点麻木的,感觉有很多话想说…

Pytorch深度强化学习:Gym安装与环境搭建教程(附基本指令表)

目录 1 Gym介绍2 Gym安装3 基本指令3.1 make()3.2 reset()3.3 step()3.4 close() 4 常见问题参考资料 1 Gym介绍 强化学习是在潜在的不确定复杂环境中,训练一个最优决策指导一系列行动实现目标最优化的机器学习方法。自从AlphaGo的横空出世之后,确定了强…

从promise到await

在之前的这篇文章中,已经讲完了从异步操作到promise的诞生,但是promise也仅仅是做到了异步操作和结果的分离,当我们有多个异步操作,且结果前后有依赖的时候,不可避免的,就会出现一系列的.then方法。还是不大…

【JS每N日一练】 将CSDN文章自动生成Markdown列表

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ 分析及编码页面分析枚举列表处理li,获取Markdown完成功能拼装 2️⃣ 完整代码及运行结果完整代码运行结果 🛬 总结 🛫 问题 描述 作为程序员必备素质-懒,今天又给自己了一个造了个需…

QGIS--开发OpenSCENARIO动态场景(一)--Ubuntu20.04 安装QGIS

qgis的git: GitHub - qgis/QGIS: QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS) qgis的官网:Welcome to the QGIS project! qgis插件包下载地址:https://plugins.qgis.org/plugins/ 1.Prerequisi…

java IO流_2

目录 字节缓冲流 序列化 使用对象流实现序列化 标准输入输出流 转换流 打印流 PrintStream PrintWriter properties读写文件 字节缓冲流 字节流 import java.io.FileInputStream; import java.io.FileOutputStream;public class FileCopy {public static void main(Str…

年薪30W+,待遇翻倍,我的经历值得每个测试人借鉴

从自考大专到出走公司,从半年无业露宿深圳北站,从8k…到11.5k…再到20k,我的经历值得每个测试人借鉴 或许学历并没有那么重要 12年高考之后,在朋友的介绍下(骗了过去),没有好好的读大学&#x…

java mysql高校后勤管理系统的设计与开发 宿舍公寓管理

1.用户管理子系统:采用通过用户密码的登录机制,管理员登录后可以修改个人信息(用户名、密码、姓名、联系方式),具有楼的属性,只能对所管辖宿舍楼进行查询、修改等操作。 2.宿舍信息管理子系统&a…