环境:

CentOS: 7.9 64bit
lua: 5.4.4
haproxy: 2.6.6

1、安装依赖

#yum groupinstall -y “Development Tools”,开发包会缺少pcre,openssl包等

1
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre pcre-devel readline-devel systemd-devel

2、下载安装lua

1
2
3
4
5
6
$ cd /usr/local/src
$ curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz
$ tar zxf lua-5.4.4.tar.gz
$ cd lua-5.4.4
$ make linux
$ make install INSTALL_TOP=/usr/local/lua
源码HAProxylua

背景

在CI/CD工作中我们主要使用单节点Jenkins(Master)来完成构建任务,随着项目不断增多,单节点无论在效率及稳定性上已经不满足我们的需求,而Jenkins天然支持Master-Slave架构,因此我们可以通过部署Slave节点的方式来给Master减负。但是Slave节点只有在分配了任务时才执行构建,在完成分配的构建任务后处于空闲状态,在后台一直运行而不会自动销毁释放资源。

那有什么方案可以避免这种情况呢?

JenkinsDockerSlave

模块

简单来讲模块就是包含一组Terraform代码的文件夹。
Terraform模块是编写高质量Terraform代码,提升代码复用性的重要手段,可以说,一个成熟的生产环境应该是由数个可信成熟的模块组装而成的。
实际上所有包含Terraform代码文件的文件夹都是一个Terraform模块。我们如果直接在一个文件夹内执行terraform apply或者terraform plan命令,那么当前所在的文件夹就被称为根模块(root module)。我们也可以在执行Terraform命令时通过命令行参数指定根模块的路径。

terraformIaC

输入变量 variable

通常在代码书写中使用字面量硬编码,如果想要在创建、修改基础设施时动态传入一些值呢?
比如说在代码中定义Provider时用变量替代硬编码的访问密钥,或是由创建基础设施的用户来决定创建什么样尺寸的主机?
我们需要的是输入变量。

terraformIaC

terraform命令行

terraform init

初始化工作目录, 如果不传入任何参数,那么命令会初始化当前工作目录。
一般推荐不使用DIR参数,直接在根模块的目录下运行该命令。
在添加新模块后需要执行该命令安装模块。
在执行init时,会初始化modules,会分析根模块代码以寻找Backend配置,然后使用给定的配置设定初始化Backend存储。
也会检查provider plugins,并初始化。

terraformIaC

Compose 简介

Compose是用于定义和运行多容器Docker应用程序的工具。通过 Compose,您可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。

下载地址:https://github.com/docker/compose/releases

为什么要使用Compose

docker容器yaml

什么是 Dockerfile?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

构建镜像的方式

  1. 基于已有容器构建镜像

    主要是通过docker commit命令来构建新的镜像
    docker commit构建进行主要有三步:

    1. 运行容器
    2. 修改容器
    3. 将容器保存为新的镜像
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 运行容器
      ># docker run -it centos
      #修改容器:在没有vim的centos安装vim
      ># vim
      ># bash: vim: command not found
      ># yum install vim -y
      #将容器保存为新的镜像
      ># docker ps -a
      ># docker commit 69f501e858a6 centos_vim
docker容器image

docker 容器的使用

  1. docker run -d -p 80:80 nginx
    • -d 后台运行容器
    • -p 80:80 端口映射 宿主机端口:容器内端口
    • -P 随机找一个宿主机未使用的端口映射容器内的端口
    • --rm 容器退出后自动删除
    • --name 指定运行容器的名称
    • --network 指定容器链接的网络
    • -v /opt/html:/usr/share/nginx/html 把宿主机的目录挂载到容器内的指定目录
      运行成功后返回容器ID
  2. docker stop 容器ID
    • 停止容器
  3. docker restart 容器ID
    • 重启停止的容器
docker容器CLI

Docker文档:

https://docs.docker.com/

Docker镜像仓库:

https://hub.docker.com/

容器:

容器是应用层面抽象,将应用程序及其所有依赖项打包在一起。提供了一个独立的环境,使我们能够快速可靠地部署应用程序。

虚拟机:

虚拟机技术将一组硬件虚拟化,在其上安装并运行一个完整的操作系统,然后在系统上运行所需的应用,虚拟机就像一台主机。

docker容器