Consul 是一个复杂的系统,它是HashiCorp公司的一个用于实现分布式系统的服务发现于配置工具,Consul内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,同时,Consul具有功能完善,部署简单,使用方便等特点
Consul的应用场景包括服务发现、服务隔离、服务配置
比如:docker实例的注册与配置共享、coreos实例的注册与配置共享、vitess集群、SaaS应用的配置共享、Consul与confd服务集成,动态生成nginx和haproxy配置文件或者Consul结合nginx构建高可用可扩展的Web服务。
[root@localhost ~] # mkdir consul
[root@localhost ~] # cd consul/
[root@localhost ~/consul] # rz -E
rz waiting to receive. ## 这里将安装包拖入consul目录下
[root@localhost ~/consul] # ls
consul_0.9.2_linux_amd64.zip
[root@localhost ~/consul] # unzip consul_0.9.2_linux_amd64.zip
Archive: consul_0.9.2_linux_amd64.zip
inflating: consul
[root@localhost ~/consul] # ls
consul consul_0.9.2_linux_amd64.zip
[root@localhost ~/consul] # mv consul /usr/bin
[root@localhost ~/consul] # consul agent \
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.220.110 \
> -client=0.0.0.0 \
> -nade=consul-server01 &> /var/log/consul.log &
[1] 75549
[root@localhost ~/consul] # consul members
Node Address Status Type Build Protocol DC
consul-server01 192.168.220.110:8301 alive server 0.9.2 2 dc1
[root@localhost ~/consul] # consul info | grep leader
leader = true
leader_addr = 192.168.220.110:8300
curl 127.0.0.1:8500/v1/status/peers //查看集群server成员
curl 127.0.0.1:8500/v1/status/leader //集群Raf leader
curl 127.0.0.1:8500/v1/catalog/services //注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx //查看nginx服务信息
curl 127.0.0.1:8500/v1/catalog/nodes //集群节点详细信息
netstat -natp |grep consul
这5个端口的作用:
8300:集群内数据的读写和复制
8301:单个数据中心gossip协议通讯
8302:跨数据中心gossip协议通讯
8500:提供获取服务列表、注册服务、注销服务等HTTP接口;提供UI服务
8600:采用DNS协议提供服务发现功能
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.220.120 \
consul://192.168.220.110:8500
[root@ppp ~] # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gliderlabs/registrator latest 3b59190c6c80 4 years ago 23.8MB
[root@ppp ~] # docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
39c380b4b512 gliderlabs/registrator:latest "/bin/registrator -i…" 22 seconds ago Up 21 seconds registrator
systemctl restart docker
docker run -itd -p:81:80 --name pyy01 -h pyy01 nginx
docker run -itd -p:82:80 --name pyy02 -h pyy02 nginx
docker run -itd -p:83:80 --name pyy03 -h pyy03 httpd
docker run -itd -p:84:80 --name pyy04 -h pyy04 httpd
此时访问浏览器
http://192.168.220.110:8500
server 192.168.220.110
vim nginx.ctmpl
upstream http_backend {
{{range service "nginx"}}
server {{.Address}}:{{.Port}};
{{end}}
}
server {
listen 100;
server_name localhost 192.168.220.110;
access_log /var/log/nginx/pyy.com-access.log;
index index.html index.php;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_backend;
}
}
yum -y install gcc pcre-devel zlib-devel
这里将Nginx安装包拖入终端
tar zxvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx
make && make install
vim /usr/local/nginx/conf/nginx.conf
##19行插入 include vhost/*.conf;
cd /usr/local/nginx/conf/
mkdir vhost
mkdir /var/log/nginx
/usr/local/nginx/sbin/nginx
cd /opt
拖入安装包 consul-template_0.19.3_linux_amd64.zip
unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin
consul-template -consul-addr 192.168.220.110:8500 -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/pyy.conf:/usr/local/nginx/sbin/nginx -s reload" --log-level=info
cat /usr/local/nginx/conf/vhost/pyy.conf
浏览器查询192.168.220.110
http://192.168.220.110
docker logs -f pyy01
consul多节点
###添加一台有docker环境的服务器192.168.220.130加入已有的集群
consul agent \
-server \
--bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.220.130 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.220.130 &> /var/log/consul.log &
###############################################
--enable-script-ckecks=true:设置检查服务为可用
-datacenter:数据中心名称
-join:加入到已有的集群中
本文转载自网络,原文链接:https://www.toutiao.com/a6864892090686374412/...
今天更进一步的学习了数据库单表查询涉及条件、分组、排序等 select [ all | dis...
正则(regular),要使用正则表达式需要导入Python中的re(regular正则的缩写)...
软件包管理一 文章目录 软件包类型 1.二进制包 2.源码包 提示以下是本篇文章正文...
Tomcat配置https、访问http自动跳转至https 1、配置Tomcat,打开$CATALINA_HOME/...
增加按钮有以下几步: 1、为按钮增加图片: FCK的所有按钮图片是存放在一个图片...
.NET Core3.1发布 我们很高兴宣布.NET Core 3.1的发布。实际上,这只是对我们两...
对于图片,首先我们先想到是背景图片。因为我们许许多的装饰都是用背景图片来实...
table是什么?它是由一个个cell单元格构成的,在表格中,td的个数取决于每行tr中...
1.有了你,我什么都不缺,心再野,也该知道拒绝。 2.请不要拼命假装云淡风轻的...