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

建立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. hyper给linux扩容空间

    1.hyper操作 (1)关机后,在设置中,查看硬盘驱动器中的虚拟磁盘及编号, (2)编辑磁盘->查找磁盘中选中刚才的编号磁盘 (3)操作时扩容(大小填的不是增量 ,是扩容以后的空间) 2.li ...

  2. docker学习(dockerfile打jar包为镜像)

    docker打包jar为docker镜像 1.使用Dockerfile打镜像 将spring boot应用打包成jar包放置在/app/applcation路径中 编写dockerfile文件,内容参 ...

  3. HashMap问题

    package com.google; import javax.lang.model.element.NestingKind; import java.util.HashMap; public cl ...

  4. 26 docker 安装 solr

    准备一台已经安装过docker的服务器 获得solr镜像 #可以指定版本 docker pull solr:7.5.0docker pull solr:7.7.3 创建数据挂载文件夹 允许访问权限 s ...

  5. QT4.8.6移植

    sudo apt-get install libx11-dev libxext-dev libxtst-dev 配置: ./configure --prefix=/opt/qt4.8.6 -opens ...

  6. QString的一些使用技巧

    简介 QString 字符串被每个GUI程序所使用,不仅是用户界面,还有数据结构. C++原生提供两种字符串: 传统的C风格以'\0'结尾的字符数组和std::string类.与这些不同,QStrin ...

  7. 学习-Vue2-Vue实例-数据与方法-Object.freeze()

    Object.freeze(),会阻止修改现有的property,意味着响应系统无法再追踪变化 代码示例: <!DOCTYPE html> <html lang="en&q ...

  8. 微信小程序之配置业务域名踩过的坑

    1.在配置业务域名弹窗中保存按钮一直加载状态,无法保存则刷新当前界面后重新扫码打开该弹窗.2.检验文件一定要放在目标服务器域名下前端文件夹中,否则(放在后台代码文件夹中)访问不到地址.

  9. 对qa 工作的理解

    主要职责 进行检查,包括组织级和项目级工作内容,其中组织级和项目级里包括[过程]和[资产]两项内容. 跟进不符合项,和项目经理等干系人沟通,直到不符合项问题得到解决 识别过程改进的内容,反馈给EPG. ...

  10. linux运维之道学习笔记

    linux常用命令 1.find命令 find / "*.log" 查找/目录下.log结尾的档案 find / -mtime -3 查找/目录下三天内被修改的档案 find / ...