Docker-compose编排,consul自动发现和更新

女爷i 2023-10-04 08:17 61阅读 0赞

一、Docker-compose部署nginx

  1. 环境部署所有主机安装docker-ce
    (内容为docker基础)

    yum -y install yum-utils device-mapper-persistent-data lvm2
    yum-config-manager —add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum -y install docker-ce
    echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
    sysctl -p
    systemctl restart docker

  2. 下载安装docker-compose

    //下载compose(上传docker_compose)
    curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose
    cp -p docker-compose /usr/local/bin/
    chmod +x /usr/local/bin/docker-compose

  3. 创建nginx的Dockerfile文件
    REFERENCE

    [root@compute1 compose_nginx]# tree nginx/
    nginx/
    ├── Dockerfile
    └── nginx-1.12.2.tar.gz

    0 directories, 2 files

    mkdir /root/compose_nginx
    cd ~/compose.nginx
    mkdidr nginx && cd nginx
    vim Dockerfile
    FROM centos:7
    MAINTAINER XWP
    RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make
    RUN useradd -M -s /sbin/nologin nginx
    ADD nginx-1.12.2.tar.gz /tmp/
    WORKDIR /tmp/nginx-1.12.2/
    RUN ./configure \
    —prefix=/usr/local/nginx \
    —user=nginx \
    —group=nginx \
    —with-http_stub_status_module && make && make install
    ENV PATH /usr/local/nginx/sbin:$PATH
    EXPOSE 80
    CMD [“nginx”,”-g”,”daemon off;”]

  4. 编辑docker-compose.yml容器编排文件

    vim /root/compose_nginx/docker-compose.yml

    version: “3”
    services:
    nginx:

    1. hostname: nginx
    2. build:
    3. context: ./nginx
    4. dockerfile: Dockerfile
    5. ports:
    6. - 80:80
    7. networks:
    8. - cluster
    9. volumes:
    10. - ./html:/usr/local/nginx/html

    networks:
    cluster:

  5. 编辑测试网页

    mkdir /root/compose_nginx/html/
    vim /root/compose_nginx/html/index.html

    this is test web

  6. 启动容器

    [root@consul compose_nginx]# docker-compose up -d

  7. 浏览器测试
    在这里插入图片描述

二、docker-consul 集群搭建

环境:两台centos7
第一台consul server IP:192.168.100.101 安装软件包:Docker-ce、Compose 3 、Consul、Consul-template
第二台Registrator IP:192.168.100.100 安装软件包:需求的软件包:Docker-ce 、registrator

2.1 consul-server配置

  1. 安装consul

    unzip consul_0.9.2_linux_amd64.zip
    mv consul /usr/bin/

  2. 建立consul服务

    consul agent \

    -server \
    -bootstrap \
    -ui \
    -data-dir=/var/lib/consu-data \
    -bind=192.168.100.101 \
    -client=0.0.0.0 \
    -node=consul-server1 &

在这里插入图片描述

  1. 查看集群信息

    consul members

2.2 Registrator配置

  1. #配置192.168.226.133后端节点
  2. [root@localhost ~]# docker run -d \
  3. > --name=registrator \ #下载registrator容器
  4. > --net=host \ #使用host网络
  5. > -v /var/run/docker.sock:/tmp/docker.sock \ #数据卷挂载(使用的是系统默认的)
  6. > --restart=always \ #重启策略(遇到问题会重启)
  7. > gliderlabs/registrator:latest \ #下载的仓库名称/镜像名称
  8. > -ip=192.168.100.100 \ #指向本地服务器IP地址
  9. > consul://192.168.100.100:8500 #指向注册中心的地址
  • 创建两个nginx节点

    docker run -itd -p:83:80 —name test1 -h test1 nginx
    docker run -itd -p:84:80 —name test2 -h test2 nginx

    -name 给容器命名 -h 设置容器主机名

  • 浏览器登录consul-server查看
    在这里插入图片描述
    在这里插入图片描述
    可以看出,consul实现了自动发现节点的功能。

2.3 consul-template自动更新配置

  1. consul-server准备模板文件

    vim nginx.ctmpl

    upstream http_backend {

    {

    1. {
    2. range service "nginx"}}

    server {

    1. {
    2. .Address}}:{
    3. {
    4. .Port}};

    {

    1. {
    2. end}}

    }

    server {

    listen 88;
    server_name localhost 192.168.100.100;
    access_log /var/log/nginx/contain_nginx.log;
    index index.html index.php;
    location / {

    1. proxy_set_header HOST $host;
    2. proxy_set_header X-Real-IP $remote_addr;
    3. proxy_set_header Client-IP $remote_addr;
    4. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    5. proxy_pass http://http_backend;

    }
    }

  2. 配置,安装template

    unzip consul-template_0.19.3_linux_amd64.zip
    mv consul-template /usr/bin/
    consul-template -consul-addr 192.168.100.101:8500 -template “/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload” —log-level=info

在这里插入图片描述

  1. 测试结果
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,61人围观)

还没有评论,来说两句吧...

相关阅读