docker上搭建consul集群全流程

1. 在docker上安装consul(默认安装最新版本)

docker pull consul

2. 启动第一个consul服务:consul1

docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul:1.2.2 agent -server -bootstrap-expect 2 -ui -bind=0.0.0.0 -client=0.0.0.0

8500 http 端口,用于 http 接口和 web ui
8300 server rpc 端口,同一数据中心 consul server 之间通过该端口通信
8301 serf lan 端口,同一数据中心 consul client 通过该端口通信
8302 serf wan 端口,不同数据中心 consul server 通过该端口通信
8600 dns 端口,用于服务发现
-bbostrap-expect 2: 集群至少两台服务器,才能选举集群leader
-ui:运行 web 控制台
-bind: 监听网口,0.0.0.0 表示所有网口,如果不指定默认未127.0.0.1,则无法和容器通信
-client : 限制某些网口可以访问

3. 获取 consul server1 的 ip 地址

docker inspect --format ‘{{ .NetworkSettings.IPAddress }}‘ consul1

输出是:172.17.0.2

4. 启动第二个consul服务:consul2, 并加入consul1(使用join命令)

docker run --name consul3 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.2

5. 启动第三个consul服务:consul3,并加入consul1

docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.2

6. 目前我启动了5个consul服务,然后stop掉了两个,详情如下图所示:

7. 宿主机浏览器访问:http://localhost:8500 或者 http://localhost:8501 或者 http://localhost:8502

(由于我一开始启动了5个consul服务,然后stop掉了两个,所以我的控制台如下所示)

8. 任意stop掉其中一个consul,只要剩余consul数目大于等于两个,宿主机就能正常访问对应的链接;

9. 创建test.json文件,以脚本形式注册服务到consul:

test.json文件内容如下:

{
    "ID": "test-service1",
    "Name": "test-service1",
    "Tags": [
        "test",
        "v1"
    ],
    "Address": "127.0.0.1",
    "Port": 8000,
    "Meta": {
        "X-TAG": "testtag"
    },
    "EnableTagOverride": false,
    "Check": {
        "DeregisterCriticalServiceAfter": "90m",
        "HTTP": "http://zhihu.com",
        "Interval": "10s"
    }
}

通过 http 接口注册服务(端口可以是8500. 8501, 8502等能够正常访问consul的就行):

curl -X PUT --data @test.json http://localhost:8500/v1/agent/service/register

控制台如下所示:

10. 宿主机浏览器访问以下链接可以看到所有通过健康检查的可用test-server1服务列表

(任意正常启动consul的端口皆可):

http://localhost:8501/v1/health/service/test-server1?passing

输出json格式的内容,如下所示:

其它应用程序可以通过这种方式轮询获取服务列表,这就是微服务能够动态知道其依赖微服务可用列表的原理。

11. 解绑定:

curl -i -X PUT http://127.0.0.1:8501/v1/agent/service/deregister/test-server1

12. 集群方式需要至少启动两个consul server,本机调试web应用时,为了方便可以用 -dev 参数方式仅启动一个consul server

docker run --name consul0 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul:1.2.2 agent -dev -bind=0.0.0.0 -client=0.0.0.0

原文地址:https://www.cnblogs.com/miaoying/p/10303067.html

时间: 2024-08-29 17:00:18

docker上搭建consul集群全流程的相关文章

Docker 容器部署 Consul 集群

一.docker安装与启动1.1安装docker[[email protected] /]# yum -y install docker-io 1.2更改配置文件[[email protected] /]# vi /etc/sysconfig/dockerother-args列更改为:other_args="--exec-driver=lxc --selinux-enabled" 1.3启动docker服务[[email protected] /]# service docker st

在windows上搭建redis集群

一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端口号为 6379,那么其它5份的

基于docker环境搭建kafka集群(三台真机之间)

环境基于docker,三台物理主机192.168.0.27.192.168.0.28.192.168.0.29,每台主机部署一个zookeeper节点,一个kafka节点,共三个zookeeper节点,三个kafka节点,容器之间的网络采用host模式 1.拉取镜像 2.启动容器 step1. 创建配置文件zoo.cfg并替换容器内的该文件,不同的镜像有可能zoo.cfg位置不同 # The number of milliseconds of each tick tickTime=2000 #

Docker实战之Consul集群

前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结. 该篇是 Docker 实战系列的第三篇.传送门: Docker 实战之 MySQL 主从复制 Docker 实战之 Redis-Cluster 集群 为什么选 Consul? 首先 Consul 有以下几个关键特性: 服务发现:支持服务发现.你可以通过 DNS 或 HTTP 的方式获取服务信息. 健康检查:支持健康检查.可以提供与给定服务相关

docker容器搭建kafka集群

Docker搭建kafka集群 ?  需求说明: 公司目前有三个环境,生产环境,测试和演示环境,再包括开发人员还有开发的环境,服务器上造成了一定的资源浪费,因为环境需要依赖zookeeper和kafka,redis这些服务,只要搭一个环境,所有东西都要重新搭一遍,所以搭建kafka集群,让大部分环境都连接一个集群,把单个的服务变成公共的,稳定并易于管理 ?  Kafka集群管理和状态保存是通过zookeeper来实现的,要先部署zk集群 ?  环境说明: centos系统安装docker,通过d

基于docker环境搭建redis-cluster集群(多台机器)

步骤与单机搭建redis集群相同 1.分别在两台机器创建 redis-cluster.tmpl creatRedisCluster.sh  creatDocker.sh(每天机器创建三个redis实例) 创建集群 ##进入某一个redis实例执行如下代码 /usr/local/bin/redis-cli --cluster create 宿主机1IP:7001 宿主机1IP:7002 宿主机1IP:7003 宿主机2IP:7001 宿主机2IP:7002 宿主机2IP:7003 --cluste

docker下搭建fastfds集群版

搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成了镜像. 如对fastfds搭建流程不熟悉者,需先参阅之前的文章.点击进入文章 首先借鉴一个公众号的两张图来说明一下 fastfds 上传下载的流程,公众号为 "Java架构师之路" 我搭建的思路是,两个tracker.四个storage,然后通过nginx进行反向代理访问图片. 下面演示

在windows上搭建redis集群(redis-cluster)

一 所需软件:Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis-x64-3.2.100.zip. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端

在单台服务器上搭建elasticsearch集群

很遗憾,这样的集群基本上没啥用处,没有容错能力.因此本文仅可作为学习ES集群部署的参考文档. 系统配置: 修改/etc/hosts增加 127.0.0.1 node01 127.0.0.1 node02 127.0.0.1 node03 修改/etc/sysctl.conf增加配置,然后执行sysctl -p立即生效 vm.max_map_count=655360 用到的软件包: elasticsearch-6.8.6.tar.gz kibana-6.8.6-linux-x86_64.tar.g