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

建立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. 【坑】 centos 7.6 使用ssh 秘钥登录遇到的问题

    问题: 我在master1上面创建了一个ssh的秘钥文件,通过ssh-copy-id 传送四台主机,然后使用ansible all -m ping 发现有台机器就是有问题 这是怎么回事???一样的配置 ...

  2. ES5 绑定 this 的方法

    this的动态切换,固然为 JavaScript 创造了巨大的灵活性,但也使得编程变得困难和模糊.有时,需要把this固定下来,避免出现意想不到的情况.JavaScript 提供了call.apply ...

  3. Linux 第七节(LVM,网卡配置)

    LVM 逻辑卷管理器: 解决分区灵活调整大小问题 PV 物理卷 VG 卷组 LV 逻辑卷 pvcreate /dev/sdc vgcreate xiaochong  /dev/sdb /dev/sdc ...

  4. C++和C中的输入输出总结、标准输入/标准输出/标准错误与重定向,>>、>、<、<<

    标准输入/标准输出/标准错误与重定向 0表示标准输入.1表示标准输出.2标准错误.1和2都是默认是输出到屏幕. linux中的>>.>.<.<<:这些符号是Linu ...

  5. docker+gunicorn+fastapi部署

    一.准备工作 1.先确保项目可以正常运行 2.使用pip freeze导出第三方库 3.在项目根目录新建pip.conf文件,写入一下内容 [global] index-url=http://pypi ...

  6. 【服务器数据恢复】RAID6数据恢复案例

    服务器数据恢复环境:一台Web服务器中有一组由8块磁盘组建的raid6磁盘阵列,用来运行数据库和存储普通办公文件. 服务器故障:服务器raid6磁盘阵列中有两块硬盘离线,但是管理员没有注意到这种情况, ...

  7. [转]B树与B+树----mysql的索引结构

    B树 和B+树是 MySQL索引使用的数据结构,对于索引优化和原理理解都非常重要,下面我的写文章就是要把B树,B+树的神秘面纱揭开,让大家在面试的时候碰到这个知识点一往无前,不再成为你的知识盲点! 1 ...

  8. Docker 数据迁移到数据盘

    systemctl stop docker 找到新的.空间较达的磁盘路径,然后创建任意目录.例如: mkdir /data/docker mv /var/lib/docker /data/docker ...

  9. git将自己分支上忽略已修改但不需要的提交的文件

    一:在idea上把需要提交的文件勾选上提交 二:git stash命令将余下被修改的文件存入(隐藏)暂存区 git stash 三:切换master分支合并上述分支 四:合并后再返回上述分支,git ...

  10. Java-对象 认识对象

    1.对象同时具有属性和方法两个特性.对象的属性和方法通常被封装在一起,共同体现事物特性,两者相辅相成,不可分割