为了更稳健高效的微服务——注册中心(consul)学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35559756/article/details/81676252

首先需要下载consul,
一种是源码安装,另一种是docker方式安装运行,这里我推荐使用docker方式
打开docker公开仓库,https://hub.docker.com/
搜索consul
官方镜像为 /consul/”>https://hub.docker.com//consul/
下载镜像: sudo docker pull consul
consul的架构是一主多从、服务端与客户端分离的架构风格,分成master和slover,server和client,内部通信使用的是gossip作为rpc通讯
这里写图片描述
尝试阶段可以如下:
node1:

docker run -d --name=node1 --restart=always \
             -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \
             -p 8300:8300 \
             -p 8301:8301 \
             -p 8301:8301/udp \
             -p 8302:8302/udp \
             -p 8302:8302 \
             -p 8400:8400 \
             -p 8500:8500 \
             -p 8600:8600 \
             -h node1 \
             consul agent -server -bind=172.17.0.2 -bootstrap-expect=3 -node=node1 \
             -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

注意: 启动node1之后看一下输出的Cluster Addr地址,作为下面的-join参数的值,如果没有这一步,下面的slover将无法加入到注册中心集群中
node2:

docker run -d --name=node2 --restart=always \
             -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \
             -p 9300:8300  \
             -p 9301:8301 \
             -p 9301:8301/udp \
             -p 9302:8302/udp \
             -p 9302:8302 \
             -p 9400:8400 \
             -p 9500:8500 \
             -p 9600:8600 \
             -h node2 \
             consul agent -server -bind=172.17.0.3 \
             -join=172.17.0.2 -node-id=$(uuidgen | awk '{print tolower($0)}') \
             -node=node2 \
             -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

node3:

docker run -d --name=node3 --restart=always \
             -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \
             -p 10300:8300  \
             -p 10301:8301 \
             -p 10301:8301/udp \
             -p 10302:8302/udp \
             -p 10302:8302 \
             -p 10400:8400 \
             -p 10500:8500 \
             -p 10600:8600 \
             -h node2 \
             consul agent -server -bind=172.17.0.4 \
             -join=172.17.0.2 -node-id=$(uuidgen | awk '{print tolower($0)}') \
             -node=node3 \
             -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

node4:

docker run -d --name=node4  --restart=always \
            -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' \
            -p 11300:8300 \
            -p 11301:8301 \
            -p 11301:8301/udp \
            -p 11302:8302/udp \
            -p 11302:8302 \
            -p 11400:8400 \
            -p 11500:8500 \
            -p 11600:8600 \
            -h node4 \
            consul agent -bind=172.17.0.5 -retry-join=172.17.0.2  \
            -node-id=$(uuidgen | awk '{print tolower($0)}') \
            -node=node4 -client 0.0.0.0 -ui

使用docker logs -f 查看运行时容器内部日志
如: docker logs -f node1
docker logs -f node2
docker logs -f node3
使用docker ps -a 实时查看容器运行情况

进入master中查看consul集群运行情况:

docker exec -t node1 consul members

也可以进入容器中再查看:

docker exec -it 容器id /bin/bash
consul members

如果不出意外的话会现实如下内容:

root@tristan-desktop:/home/tristan# docker exec -t node1 consul members
Node   Address          Status  Type    Build  Protocol  DC   Segment
node1  172.17.0.2:8301  alive   server  1.2.2  2         dc1  <all>
node2  172.17.0.3:8301  alive   server  1.2.2  2         dc1  <all>
node3  172.17.0.4:8301  alive   server  1.2.2  2         dc1  <all>
node4  172.17.0.5:8301  alive   client  1.2.2  2         dc1  <default>

为了方便客户端使用,以及简化服务注册流程,使得注册中心透明化,需要安装Registrator

Registrator能够在线自动检测docker容器,支持热插拔的注册与撤销服务
监听容器并确定其提供了什么服务,在发现容器内的服务后,将其添加到服务注册中心如consul、etcd、skydns2等

安装Registrator

docker pull gliderlabs/registrator

运行Registrator:

docker run -d --name=registrator \
             -v /var/run/docker.sock:/tmp/docker.sock \
             --net=host \
             gliderlabs/registrator -ip="192.168.127.128" consul://172.17.0.2:8500

在浏览器上访问consul的web界面 : http://localhost:8500/ui/dc1/services
在这里可以看到服务注册列表、通信节点、数据中心和键/值存储

猜你喜欢

转载自blog.csdn.net/qq_35559756/article/details/81676252
今日推荐