前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker-compose部署envoy前端代理遇到的坑

使用docker-compose部署envoy前端代理遇到的坑

作者头像
陌无崖
发布2019-09-08 16:23:06
1.2K0
发布2019-09-08 16:23:06
举报

不忘初心,砥砺前行

作者 | 陌无崖

转载请联系授权

导语

上一篇文章中我们介绍了Envoy的简单配置,Envoy有三种部署方式,这篇文章中我们来介绍其中的一种部署方式为前端代理。

部署前的准备

安装Docker环境

老版本的Docker被称为docker或docker-engine。如果安装了这些,请卸载它们以及相关的依赖项。

yum remove -y docker docker-common docker-selinux docker-engine

部署docker ce

# 安装yum-utils、device-mapper-persistent-data、lvm2
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加yum源配置
yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

可选)启用边缘和测试存储库

# 启动边缘存储库
yum-config-manager --enable docker-ce-edge
# 禁用边缘存储库
yum-config-manager --disable docker-ce-edge
# 启动测试存储库
yum-config-manager --enable docker-ce-test
# 禁用测试存储库
yum-config-manager --disable docker-ce-test

安装docker

yum install docker-ce -y
systemctl start docker
systemctl enable docker

或者安装指定版本的docker

# 查看所有的版本
yum list docker-ce --showduplicates |sort -r
# 指定安装
yum install -y docker-ce-<版本号>

使用镜像加速器

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://*************.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

安装Docker-Machine

Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。我们还可以通过 docker-machine 命令来管理这些虚拟机和 Docker。

# https://github.com/docker/machine/releases
$ sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine
$ sudo chmod +x /usr/local/bin/docker-machine

但是可能会由于国内网无法下载,这是我们可以直接在https://github.com/docker/machine/releases/download/v0.13.0/下载后将文件移到/usr/local/bin/目录下,也可以在公众号后台回复Docker-Machine获取下载地址。

安装成功后查看我们的版本输出如下结果

[root@localhost front-proxy]# docker-machine -v
docker-machine version 0.16.1, build cce350d7

安装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
# 添加可执行权限
chmod +x /usr/local/bin/docker-compose
# 测试安装结果
docker-compose -v

同样获取可以在原来的网站获取,也可以后台回复docker-compose

部署前端代理

设置Docker Machine

创建一个新的机器来容纳容器:

$ docker-machine create --driver virtualbox default
$ eval $(docker-machine env default)

这是可能会会报如下错误

Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"

这是因为你的系统没有开启虚拟化引擎,我们使用下面的方法设置 按照上面的方法设置后,我们仍然执行上述命令

或许你的系统仍然会出现如下的错误

error with pre-create check: "We support Virtualbox starting with version 5. Your VirtualBox install is \"WARNING: The vboxdrv kernel module is not loaded. Either there is no module\\n         available for the current kernel (3.10.0-514.el7.x86_64) or it failed to\\n         load. Please recompile the kernel module and install it by\\n\\n           sudo /sbin/vboxconfig\\n\\n         You will not be able to start VMs until this problem is fixed.\\n5.2.0r118431\". Please upgrade at 

我们按照提示运行

sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel 

This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel kernel-devel-3.10.0-514.el7.x86_64

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root

发现我们的系统需要这个版本的kernel-devel-3.10.0-514.el7.x86_64 接着我们安装

yum -y install kernel-devel-3.10.0-514.el7.x86_64

这里需要注意的是如果你在操作中遇到这样的问题,你应该安装你的系统需要的kernel-devel版本

安装成功后再次运行下面的命令

docker-machine create --driver virtualbox default

这次终于不再进行报错了,但是我们的命令却卡在了一行命令中,该命令中使用https://github.com/boot2docker/boot2docker/releases/download/v19.03.2-rc1/boot2docker.iso下载镜像,如果你没有访问外国网站,或许你永远无法完成下载,所以可以在网站上下载好文件或者公众号后台回复文件获取下载地址 将我们文件按照下载的提示移动到相关的目录,在这里我的目录为/root/.docker/machine/cache/ 然后执行以下命令。

docker-machine create --driver virtualbox  --virtualbox-boot2docker-url=/root/.docker/machine/cache/boot2docker.iso  default

这是我们便成功的运行了我们的一个主机

建立本地Envoy克隆仓库,并启动所有的容器

我们使用官方提供的模板进行构建,首先使用git获取源码

$ git clone https://github.com/envoyproxy/envoy.git
$ cd envoy/examples/front-proxy
$ docker-compose up --build -d

经过漫长的等待我们最终运行成功,输入docker-compose ps查看

[root@localhost front-proxy]# docker-compose ps
          Name                         Command               State                            Ports                         
----------------------------------------------------------------------------------------------------------------------------
front-proxy_front-envoy_1   /docker-entrypoint.sh /bin ...   Up      10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
front-proxy_service1_1      /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp                                      
front-proxy_service2_1      /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang技术杂文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导语
  • 部署前的准备
    • 安装Docker环境
      • 安装Docker-Machine
        • 安装docker-compose
        • 部署前端代理
          • 设置Docker Machine
            • 建立本地Envoy克隆仓库,并启动所有的容器
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档