------------恢复内容开始------------

建立consul服务

在建立consul服务中,每个提供服务的节点(在Docker主机上)都要部署和运行consul的client,server和client agent 节点的集合构成consul cluster。

consul agent的两种运行模式:server和client,这里的server的client只是consul集群层面的区分,与搭建在cluster智商的应用服务无关。以server模式运行的consul agent 节点用于维护consul集群的状态

consul集群部署

  • consul高可用:三台可运许坏一台,五台可运许坏两台

1:consul 192.168.200.11 nginx,consul,consul-template

2:docker01 192.168.200.14 docker-ce,registrator

3: docker02 192.168.200.10 docker-ce,registrator

  • agent:运行一个consul代理
  • -server:切换代理到服务器模式
  • -bootstrap:用于控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader
  • -data-dir:参数指定数据存储目录
  • -bind:还地址用来在集群内部的通讯,集群内所有节点到地址都必须是可达的默认0.0.0.0
  • ui:支持图形界面
  • -data-dir:指定数据目录
  • bind:监听ip
  • -client:可以来自任意地址
[root@consul ~]# unzip consul_0.9.2_linux_amd64.zip
Archive: consul_0.9.2_linux_amd64.zip
inflating: consul bad CRC 7dec9211 (should be a8ed58e8)
[root@consul ~]# mv consul /usr/bin/
[root@consul ~]# nohup consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.200.11 -client=0.0.0.0 -node=consul-server01 &> /var/log/consul.log & [root@consul ~]# consul members #查看集群成员
Node Address Status Type Build Protocol DC
consul-server01 192.168.200.11:8301 alive server 0.9.2 2 dc1
[root@consul ~]# consul info #查看详细信息
[root@consul ~]# consul info | grep leader #本机领导者
leader = true
leader_addr = 192.168.200.11:8300
[root@consul ~]# consul catalog services #查看consul所管理的服务
consul
[root@consul ~]# netstat -lnptu | grep consul #查看consul所有端口
tcp 0 0 192.168.200.11:8300 0.0.0.0:* LISTEN 12895/consul
tcp 0 0 192.168.200.11:8301 0.0.0.0:* LISTEN 12895/consul
tcp 0 0 192.168.200.11:8302 0.0.0.0:* LISTEN 12895/consul
tcp6 0 0 :::8500 :::* LISTEN 12895/consul
tcp6 0 0 :::8600 :::* LISTEN 12895/consul
udp 0 0 192.168.200.11:8301 0.0.0.0:* 12895/consul
udp 0 0 192.168.200.11:8302 0.0.0.0:* 12895/consul
udp6 0 0 :::8600 :::* 12895/consul
#8300:replication和leader farwardingd的端口,在多个server相互之间传递消息的端口
#8301:lan cossipd的端口,在内网使用的端口
#8302:wan gossip的端口,在外网使用的端口
#8500:web的ui界面
#8600:主要做dns协议

端口含义



局域网使用8301,外网使用8302

通过API获取集群信息

容器服务自动加入nginx集群

  • 基于registrator镜像部署容器

    registrator服务会检查应用服务容器运行状态,进行自动注册和注销docker容器服务到服务配置中心consul上
#10,14安装docker

#部署registrator容器服务
[root@docker02 ~]# docker run -d --name=registrator --net=host(网络模式) -v(数据卷映射) /var/run/docker.sock:/tmp/docker.sock --restart=always gliderlabs/registrator:latest -ip=192.168.200.14 consul://192.168.200.11:8500
[root@docker01 ~]# docker run -d --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock --restart=always gliderlabs/registrator:latest -ip=192.168.200.10. consul://192.168.200.11:8500 #测试服务功能
[root@docker01 ~]# mkdir /web
[root@docker01 ~]# vim /web/index.jsp //编写测试页面
<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>docker consul test page</title>
</head>
<body>
<% out.println("Welcome to consul site,http://www.consul.com");%>
</body>
</html>
[root@docker01 ~]# docker load < tomcat.tar //准备tomcat并导入镜像
[root@docker01 ~]# docker run -itd -p:8001:8080 -v /web:/usr/local/tomcat/webapps/ROOT --name docker01-t1 -h docker01-t1 tomcat
#把宿主机的8001和容器内的8080映射,-v把根下的web映射到ROOT那
[root@docker01 ~]# docker run -itd -p 8002:8080 -v /web:/usr/local/tomcat/webapps/ROOT --name docker01-t2 -h docker01-t2 tomcat· #同时测试docker02主机

检测Tomcat

安装consul-template

consul-template是consul自动替换配置文件的应用。一个守护进程,用于实时查询consul集群信息。

#准备template nginx模板文件
[root@consul ~]# mkdir consul
[root@consul ~]# cd consul/
[root@consul consul]# vim nginx.tmp
upstream http_backend{
{{range service "tomcat"}}
server {{.Address}}:{{.Port}};
{{end}}
}
server{
listen 8080;
server_name localhost 192.168.200.11;
access_log /usr/local/nginx/logs/crushlinux-access.log;
index index.html index.jsp 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_set_header http://http_backend;
}
} #检查与依赖包
[root@consul consul]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel openssl-devel ./configure --prefix=/usr/local/nginx --with-http_stub_status_module -- with-http_realip_module --with-pcre --with-http_ssl_module && make -j 2 && make install //编译安装 [root@docker1 ~]# vim /usr/local/nginx/conf/nginx.conf
include vhost/*.conf; //引用vhost下的所有.conf文件 [root@docker1 ~]# mkdir /usr/local/nginx/conf/vhost
[root@docker1 ~]# /usr/local/nginx/sbin/nginx //启动

------------恢复内容结束------------

------------恢复内容开始------------

建立consul服务

在建立consul服务中,每个提供服务的节点(在Docker主机上)都要部署和运行consul的client,server和client agent 节点的集合构成consul cluster。

consul agent的两种运行模式:server和client,这里的server的client只是consul集群层面的区分,与搭建在cluster智商的应用服务无关。以server模式运行的consul agent 节点用于维护consul集群的状态

consul集群部署

  • consul高可用:三台可运许坏一台,五台可运许坏两台

1:consul 192.168.200.11 nginx,consul,consul-template

2:docker01 192.168.200.14 docker-ce,registrator

3: docker02 192.168.200.10 docker-ce,registrator

  • agent:运行一个consul代理
  • -server:切换代理到服务器模式
  • -bootstrap:用于控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader
  • -data-dir:参数指定数据存储目录
  • -bind:还地址用来在集群内部的通讯,集群内所有节点到地址都必须是可达的默认0.0.0.0
  • ui:支持图形界面
  • -data-dir:指定数据目录
  • bind:监听ip
  • -client:可以来自任意地址
[root@consul ~]# unzip consul_0.9.2_linux_amd64.zip
Archive: consul_0.9.2_linux_amd64.zip
inflating: consul bad CRC 7dec9211 (should be a8ed58e8)
[root@consul ~]# mv consul /usr/bin/
[root@consul ~]# nohup consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.200.11 -client=0.0.0.0 -node=consul-server01 &> /var/log/consul.log & [root@consul ~]# consul members #查看集群成员
Node Address Status Type Build Protocol DC
consul-server01 192.168.200.11:8301 alive server 0.9.2 2 dc1
[root@consul ~]# consul info #查看详细信息
[root@consul ~]# consul info | grep leader #本机领导者
leader = true
leader_addr = 192.168.200.11:8300
[root@consul ~]# consul catalog services #查看consul所管理的服务
consul
[root@consul ~]# netstat -lnptu | grep consul #查看consul所有端口
tcp 0 0 192.168.200.11:8300 0.0.0.0:* LISTEN 12895/consul
tcp 0 0 192.168.200.11:8301 0.0.0.0:* LISTEN 12895/consul
tcp 0 0 192.168.200.11:8302 0.0.0.0:* LISTEN 12895/consul
tcp6 0 0 :::8500 :::* LISTEN 12895/consul
tcp6 0 0 :::8600 :::* LISTEN 12895/consul
udp 0 0 192.168.200.11:8301 0.0.0.0:* 12895/consul
udp 0 0 192.168.200.11:8302 0.0.0.0:* 12895/consul
udp6 0 0 :::8600 :::* 12895/consul
#8300:replication和leader farwardingd的端口,在多个server相互之间传递消息的端口
#8301:lan cossipd的端口,在内网使用的端口
#8302:wan gossip的端口,在外网使用的端口
#8500:web的ui界面
#8600:主要做dns协议

端口含义



局域网使用8301,外网使用8302

通过API获取集群信息

容器服务自动加入nginx集群

  • 基于registrator镜像部署容器

    registrator服务会检查应用服务容器运行状态,进行自动注册和注销docker容器服务到服务配置中心consul上
#10,14安装docker

#部署registrator容器服务
[root@docker02 ~]# docker run -d --name=registrator --net=host(网络模式) -v(数据卷映射) /var/run/docker.sock:/tmp/docker.sock --restart=always gliderlabs/registrator:latest -ip=192.168.200.14 consul://192.168.200.11:8500
[root@docker01 ~]# docker run -d --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock --restart=always gliderlabs/registrator:latest -ip=192.168.200.10. consul://192.168.200.11:8500 #测试服务功能
[root@docker01 ~]# mkdir /web
[root@docker01 ~]# vim /web/index.jsp //编写测试页面
<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>docker consul test page</title>
</head>
<body>
<% out.println("Welcome to consul site,http://www.consul.com");%>
</body>
</html>
[root@docker01 ~]# docker load < tomcat.tar //准备tomcat并导入镜像
[root@docker01 ~]# docker run -itd -p:8001:8080 -v /web:/usr/local/tomcat/webapps/ROOT --name docker01-t1 -h docker01-t1 tomcat
#把宿主机的8001和容器内的8080映射,-v把根下的web映射到ROOT那
[root@docker01 ~]# docker run -itd -p 8002:8080 -v /web:/usr/local/tomcat/webapps/ROOT --name docker01-t2 -h docker01-t2 tomcat· #同时测试docker02主机

检测Tomcat

安装consul-template

consul-template是consul自动替换配置文件的应用。一个守护进程,用于实时查询consul集群信息。

#准备template nginx模板文件
[root@consul ~]# mkdir consul
[root@consul ~]# cd consul/
[root@consul consul]# vim nginx.tmp
upstream http_backend{
{{range service "tomcat"}}
server {{.Address}}:{{.Port}};
{{end}}
}
server{
listen 8080;
server_name localhost 192.168.200.11;
access_log /usr/local/nginx/logs/crushlinux-access.log;
index index.html index.jsp 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_set_header http://http_backend;
}
} #检查与依赖包
[root@consul consul]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel openssl-devel ./configure --prefix=/usr/local/nginx --with-http_stub_status_module -- with-http_realip_module --with-pcre --with-http_ssl_module && make -j 2 && make install //编译安装 [root@docker1 ~]# vim /usr/local/nginx/conf/nginx.conf
include vhost/*.conf; //引用vhost下的所有.conf文件 [root@docker1 ~]# mkdir /usr/local/nginx/conf/vhost
[root@docker1 ~]# /usr/local/nginx/sbin/nginx //启动

------------恢复内容结束------------

构建自动发现的Docker服务架构的更多相关文章

  1. 1.利用consul实现k8s服务自动发现

    标题 : 1.利用consul实现k8s服务自动发现 目录 : 微服务架构设计 序号 : 1 ] } } ] } } ​ - consul自身支持ACL,但目前,Helm图表不支持其中一些功能,需要额 ...

  2. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  3. Kubernetes 服务自动发现CoreDNS

    前言 Service服务,是一个概念,逻辑通过selector标签代理指定后端pod.众所周知,pod生命周期短,状态不稳定,pod错误异常后新生成的Pod IP会发生变化,之前Pod的访问方式均不可 ...

  4. 微服务架构:Eureka集群搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 服务注册.发现是微服务架构的关键原理之一,由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就必 ...

  5. iUAP云运维平台v3.0全面支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  6. SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  7. 一. SpringCloud简介与微服务架构

    1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...

  8. 使用lld自动发现监控多实例redis

    zabbix 可以通过常见的手段监控到各种服务,通过编写脚本来获取返回值并将获取到的值通过图形来展现出来,包括(系统.服务.业务)层面.可是有些时候在一些不固定的场合监控一些不固定的服务就比较麻烦.例 ...

  9. Spring cloud 微服务架构 Eureka篇

    1 服务发现 ## 关于服务发现 在微服务架构中,服务发现(Service Discovery)是关键原则之一.手动配置每个客户端或某种形式的约定是很难做的,并且很脆弱.Spring Cloud提供了 ...

  10. 015-Zabbix自动发现和自动注册

      前言 对于监控服务器越来越多的情况,如果还单独一个一个添加,那效率也太低,因此就要实现批量添加监控服务器的操作,Zabbix提供两种批量自动监控的方式: 自动发现:由服务端主动发起,Zabbix ...

随机推荐

  1. C# 类型转换相关

    public void TypeConvert() { int a = 12; double b = 35.5; Console.WriteLine((int)b);//显示类型转换 //使用conv ...

  2. 004. html篇之《标签分类和嵌套规则》

    html篇之<标签分类和嵌套规则> 一.常用标签 (1) <div></div> 一个区块容器标记,可以包含图片.表格.段落等各种html元素 (2) <sp ...

  3. 002. html篇之《表格》

    html篇之<表格> 1. 结构 <table> <!-- 表格标签 --> <caption>标题,自动居中对齐</caption> &l ...

  4. Docker CLI docker buildx bake 常用命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.Docker是内核 ...

  5. 关于webpack 开启代理proxy后,接口看不到代理地址的问题。

    今天在项目中发现, 明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx.这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改.这 ...

  6. ATX server简介及环境搭建

    简介 atx server 是移动设备管理平台: 搭建这样的一个平台,需要  python3.x + nodejs+rethinkdb,及atxserver2和atxserver2-android-p ...

  7. JAVA学习笔记-06

    多态:可以理解为事物存在的多种体现形态 1.多态的基本体现 父类的引用指向了自己的子类对象 父类的引用也可以接收自己的子类对象 2.多态的前提 必须是类与类之间有关系,要么继承,要么实现 通常还有一个 ...

  8. Delphi针对双字节字段处理

    针对有些特殊的中文字如"错畸形安氏I类"中""字,属于特殊字符,在Oracle数据库中必须以双字节方式存储,字段定义为nVarchar2(100). 在Delp ...

  9. ubuntu usb network card drive

    通过 lsusb -t命令查看网卡型号 /: Bus 02.Port 1: Dev 1, class="root_hub", Driver=xhci_hcd/4p, 5000M | ...

  10. python缩小放大浏览器

    driver.execute_script("document.body.style.zoom='70%'") driver.execute_script("docume ...