服务注册与发现:一起学Consul——之安装与启动
Posted 帅军的公众号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务注册与发现:一起学Consul——之安装与启动相关的知识,希望对你有一定的参考价值。
今天开始,本人打算梳理一下微服务的内容,写在这里做个归档,便于日后翻阅,同时也希望能给感兴趣的同学一点点参考(欢迎留言),让我们来一起学吧~~
服务注册与发现是微服务中不可或缺的组件,如果没有的话,需要人工维护各个服务的注册,也无法自动发现服务的上线下线,如果服务多起来的话,会让你疯掉的。服务注册和发现有多种方案:consul 、zookeeper、eureka 、etcd 等,我们先从consul开始吧~~
Consul的主要吸引人的特性是:
服务发现:服务启动后可以自动发现
健康监测:能够实时监测各个服务的状态
健值对存储:用来存储动态配置,提供HTTP接口,可以在任何地方操作。
多数据中心:支持任意数量的数据中心
一、官网方式
1. 安装:从官网下载二进制安装包,解压后是一个可执行文件,直接将这个文件加到系统path中即可
1.1)解压:tar -zxvf consul_1.4.4_linux_amd64.zip
1.2)移动到/usr/bin中,这样就不用添加到path了,/usr/bin默认在path中:mv consul /usr/bin。当然也可以放在其他地方,然后添加到path中即可(export PATH=$PATH:<your path>)
2. 启动:consul agent -dev
3. 验证:输入consul,显示如下如说明已经安装完毕
4. 关闭:
4.1) 可以使用Ctrl+C优雅地关闭
4.2) 如果是关闭server模式的consul,可以使用consul leave命令,也会优雅地关闭
4.3) 何为不优雅地关闭?直接杀进程就是不优雅的。这样集群会将这个节点标记为critical,会尝试重连此节点来进行恢复。
二、使用docker部署consul集群
如果是本机测试,没有那么多机器,可以用docker来演示
1. docker的安装与启动
1.1) yum -y install docker
1.2) service docker start
2. 拉取consul
2.1) 查找可用的镜像:docker search consul
2.2) 拉取官网镜像:docker pull consul
2.3) 经测试,不能启动后不能通过nsenter进入容器,也可能是我没找到方法
2.4) 拉取排第二的镜像:docker pull docker.io/progrium/consul。
这个镜像启动consul后,是可以进入容器的,亲测可以。此版本比较旧
3. 启动consul
3.1) consul 可以有两种模式启动:server模式和client模式
3.2) 启动节点1(server模式)
docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
--name:容器的名字
-h:容器的主机名称
-server:这个就是表示这个节点是SERVER模式
-bootstrap-expect:这个就是表示期望提供的SERVER节点数目,数目一达到,它就会被激活,这个节点就会被选为leader
3.3) 查看容器ip
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
3.4) 启动节点2和3(server模式)
docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
-join:这个表示启动的时候,要加入到哪个集群内,这里就是说要加入到节点1的集群。
3.5) 启动节点4(client模式)
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 progrium/consul -join $JOIN_IP
不带-server参数,默认就是client模式。
4. 查看下集群的状态
4.1) 查看所有容器:docker ps -a
4.2) 某些时候需要进入容器进行操作,有很多种方法:使用ssh,docker attach命令或 nsenter工具。docker attach 多个窗口相互阻塞,不适合生产环境。
4.3) 使用nsenter进入docker容器,安装nsenter
curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz
tar zxf util-linux-2.24.tar.gz
cd util-linux-2.24
--without-ncurses
make nsenter
cp nsenter /usr/local/bin
4.4) 使用nsenter进入容器node1
nsenter --target `docker inspect --format "{{ .State.Pid }}" node1` --mount --uts --ipc --net --pid
4.5) 进入容器后,可以尝试执行以下命令:
node1:/# consul members
node1:/# consul info
curl localhost:8500/v1/catalog/nodes
4.6) 管理页面:http://ip:8500/ui
效果如下图:
这只是开始,对服务发现组件Consul感兴趣的同学,欢迎关注交流~
喜欢请关注,更多分享
以上是关于服务注册与发现:一起学Consul——之安装与启动的主要内容,如果未能解决你的问题,请参考以下文章