C++ 全栈知识体系C++ 全栈知识体系
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
  • 架构基础

    • 发展历程
    • 服务演化
    • ORM框架
    • RPC框架
  • 分布式系统

    • 分布式系统 - 基础
    • 分布式系统 - 设计
    • 分布式系统 - 缓存
    • 分布式系统 - 通信方式
    • 分布式系统 - 一致性
    • 分布式系统 - 锁
    • 分布式系统 - 解决高并发、高性能、高可用
  • 微服务

    • 微服务 - 简介
    • 微服务 - 学习路线
    • 微服务 - 服务网关
    • 微服务 - 通信方式
    • 微服务 - 消息队列
    • 微服务 - 保护
    • 微服务 - 分布式搜索
    • 微服务 - 分布式事务
    • 微服务 - 多级缓存
    • 微服务 - 幂等性设计
  • 中间件

    • 消息队列 - ZeroMQ

      • ZeroMQ - 经典例子
      • ZeroMQ - 基础
      • ZeroMQ - 进阶
      • ZeroMQ - 高级请求-应答模式
    • RPC调用 - Dubbo

      • Dubbo - 框架学习
    • 配置中心 - Consul

      • Consul - 概述
      • Consul - 学习内容
      • Consul - 安装与使用
      • Consul - 服务健康检查
      • Consul - 常用的API
      • Consul - 存储个K/V
    • 配置中心 - Apollo

      • Apollo - 概述
      • Apollo - 设计
      • Apollo - Docker部署
      • Apollo - 使用配置中心
    • 监控平台 - Cat

      • Cat - 概述
      • Cat - Docker快速部署
      • Cat - C++客户端的docker镜像
    • 数据处理管道 - Logstash

      • Logstash - Elastic 总览
      • Logstash - 工作原理
      • Logstash - docker部署
      • Logstash - 实践
    • 服务网关 - Kong

      • Kong - 概述
      • Kong - Docker快速部署
      • Kong - C++客户端的docker镜像

Consul - 安装与使用

本节主要介绍Consul注册中心学习的内容。

  • 下载consul
  • 解压
  • 设置环境变量
  • 运行参数说明
  • 配置文件
  • 操作过程

下载consul

下载地址:https://www.consul.io/downloads

wget https://releases.hashicorp.com/consul/1.7.0/consul_1.7.0_linux_amd64.zip

解压

unzip consul_1.7.0_linux_amd64.zip -d /usr/local/bin

设置环境变量

$ vi /etc/profile
export CONSUL_HOME=/usr/local/bin/consul
export PATH=$PATH:CONSUL_HOME

使环境变量生效:

source /etc/profile

运行参数说明

consul以agent的方式启动,相关参数说明:

  • -server 以服务端模式运行,相应的还有客户端模式-client
  • -ui 启动内置的Web UI
  • -bootstrap-expect=3 集群最少节点数,类似zookeeper的配置一样,为了防止脑裂,一般为奇数
  • -data-dir=/data/consul 数据存储目录
  • -node=agent-1 集群的节点名称
  • -client=0.0.0.0 指定客户端能访问的ip,类似于ip白名单。0.0.0.0表示不限制
  • -bind=10.25.84.163 绑定了当前主机的IP地址
  • -datacenter=dc1 数据中心名称
  • -join agent启动时加入到代理服务器地址,不指定不会加入任何节点,可以在启动后通过consul join命令加入
consul agent --help

容器下使用

配置文件

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"
    }
}

conf.json

{
 "ports":{
 "server":8300,
 "serf_lan":8301,
 "serf_wan":8302,
 "http":8500,
 "dns":8600
 },
 "data_dir":"/home/tools"
}

说明:

8500 http 端口,用于 http 接口和 web ui
8300 server rpc 端口,同一数据中心 consul server 之间通过该端口通信
8301 serf lan 端口,同一数据中心 consul client 通过该端口通信
8302 serf wan 端口,不同数据中心 consul server 通过该端口通信
8600 dns 端口,用于服务发现

操作过程

服务端:


docker run -it -d -p 8500:8500 --name consul_server docker.io/klc407073648/centos_build_lib:v3.0 /bin/bash
docker cp /home/klc/consul_1.11.4_linux_amd64.zip  consul_server:/home

docker exec -it consul_server bash
cd /home/
unzip consul_1.11.4_linux_amd64.zip -d /usr/local/bin

echo 'export CONSUL_HOME=/usr/local/bin/consul'  >> /etc/profile
echo 'export PATH=$PATH:CONSUL_HOME'  >> /etc/profile
source /etc/profile
vi conf.json
consul agent -server -node=node1 -bootstrap-expect 1 -bind=0.0.0.0 -client=0.0.0.0 -config-dir=./conf.json -ui

客户端:

docker run -it -d -p 8500:8500 --name consul_client docker.io/klc407073648/centos_build_lib:v3.0 /bin/bash
docker cp /home/klc/consul_1.11.4_linux_amd64.zip  consul_test_2:/home

docker exec -it consul_client bash
cd /home/
unzip consul_1.11.4_linux_amd64.zip -d /usr/local/bin

echo 'export CONSUL_HOME=/usr/local/bin/consul'  >> /etc/profile
echo 'export PATH=$PATH:CONSUL_HOME'  >> /etc/profile
source /etc/profile
vi conf.json

consul agent -node=node2  -retry-join=172.17.0.2 -bind=0.0.0.0 -client=0.0.0.0 -config-dir=./conf.json

然后,客户端同步信息到服务端:

docker exec -it consul_client bash

cd /home/
touch test.json
curl -X PUT --data @test.json http://localhost:8500/v1/agent/service/register
Last Updated:
Contributors: klc407073648
Prev
Consul - 学习内容
Next
Consul - 服务健康检查