为了账号安全,请及时绑定邮箱和手机立即绑定

如何利用Docker,AWS和深度学习伪装成一个艺术家?

/ 猿问

如何利用Docker,AWS和深度学习伪装成一个艺术家?

慕姐829404 2018-10-19 11:07:47

如何利用Docker,AWS和深度学习伪装成一个艺术家


查看完整描述

1 回答

?
互换的青春

Hi,今天我们将会学习如何使用Weave和Docker搭建Nginx的反向代理/负载均衡服务器。Weave可以创建一个虚拟网络将Docker容器彼此连接在一起,支持跨主机部署及自动发现。它可以让我们更加专注于应用的开发,而不是基础架构。Weave提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置。容器中的应用提供的服务在weave网络中可以轻易地被外部世界访问,不论你的容器运行在哪里。在这个教程里我们将会使用weave快速并且简单地将nginxweb服务器部署为一个负载均衡器,反向代理一个运行在AmazonWebServices里面多个节点上的docker容器中的简单php应用。这里我们将会介绍WeaveDNS,它提供一个不需要改变代码就可以让容器利用主机名找到的简单方式,并且能够让其他容器通过主机名连接彼此。在这篇教程里,我们将使用nginx来将负载均衡分配到一个运行Apache的容器集合。最简单轻松的方法就是使用Weave来把运行在ubuntu上的docker容器中的nginx配置成负载均衡服务器。Docker之weave工具weave是什么呢?weave创建了一个虚拟网络,用来连接部署在多台机器上的docker容器。下面看看weave的应用场景:应用在使用该网络的时候就像所有的容器都在同一个交换机网络下一样,不需要配置端口映射、连接等等,容器中的应用提供的服务在weaver网络中可以被外部世界访问,不论你的容器运行在哪里。同样的,已经存在的系统应用也可以暴露给容器中的应用来调用,而不用担心内部应用运行的位置。weave可以穿透防火墙,流量是被加密的,允许主机连接通过一个不被信任的网络,使用weave你可以方便的部署多个容器在不同的地方运行假如你有一个docker应用运行在两台不同的主机HOST1和HOST2上面,也就是我们要在这两台主机上各部署一个相同类型的docker应用。在HOST1上面:启动weave代码如下:#这一步先启动weave路由,需要在每一台HOST上都启动weavelaunch#启动一个容器,在命令行设置了一个ip,weaverun调用dockerrun-d,因此我们可以使用这种法启动一个容器,同理存在weavestart命令,它是调用dockerstart命令启动已经存在的容器,如果我们在该HOST1上有多个容器要部署,则继续执行第二行的命令即可,只要保证容器设置的ip没有冲突即可,同一个网段的ip可以到处使用ssh=$(weaverun10/weaveworks/guides$cdweave-gs/aws-nginx-ubuntu-simple在克隆完仓库之后,我们执行下面的脚本,这个脚本将会部署两个t1.micro实例,每个实例中都是ubuntu作为操作系统并用weave跑着docker容器。复制代码代码如下:$sudo./demo-aws-setup.sh在这里,我们将会在以后用到这些实例的IP地址。这些地址储存在一个weavedemo.env文件中,这个文件创建于执行demo-aws-setup.sh脚本期间。为了获取这些IP地址,我们需要执行下面的命令,命令输出类似下面的信息。代码如下:$catweavedemo.envexportWEAVE_AWS_DEMO_HOST1=52.26.175.175exportWEAVE_AWS_DEMO_HOST2=52.26.83.141exportWEAVE_AWS_DEMO_HOSTCOUNT=2exportWEAVE_AWS_DEMO_HOSTS=(52.26.175.17552.26.83.141)请注意这些不是固定的IP地址,AWS会为我们的实例动态地分配IP地址。我们在bash下执行下面的命令使环境变量生效。代码如下:../weavedemo.env2.启动Weave和WeaveDNS在安装完实例之后,我们将会在每台主机上启动weave以及weavedns。Weave以及weavedns使得我们能够轻易地将容器部署到一个全新的基础架构以及配置中,不需要改变代码,也不需要去理解像Ambassador容器以及Link机制之类的概念。下面是在第一台主机上启动weave以及weavedns的命令。代码如下:ssh-iweavedemo-key.pemubuntu@$WEAVE_AWS_DEMO_HOST1$sudoweavelaunch$sudoweavelaunch-dns10.2.1.1/24下一步,我也准备在第二台主机上启动weave以及weavedns。代码如下:ssh-iweavedemo-key.pemubuntu@$WEAVE_AWS_DEMO_HOST2$sudoweavelaunch$WEAVE_AWS_DEMO_HOST1$sudoweavelaunch-dns10.2.1.2/243.启动应用容器现在,我们准备跨两台主机启动六个容器,这两台主机都用Apache2Web服务实例跑着简单的php网站。为了在第一个Apache2Web服务器实例跑三个容器,我们将会使用下面的命令。复制代码代码如下:ssh-iweavedemo-key.pemubuntu@$WEAVE_AWS_DEMO_HOST1$sudoweaverun--with-dns10.3.1.1/24-hws1.weave.localfintanr/weave-gs-nginx-apache$sudoweaverun--with-dns10.3.1.2/24-hws2.weave.localfintanr/weave-gs-nginx-apache$sudoweaverun--with-dns10.3.1.3/24-hws3.weave.localfintanr/weave-gs-nginx-apache在那之后,我们将会在第二个实例上启动另外三个容器,请使用下面的命令。代码如下:ssh-iweavedemo-key.pemubuntu@$WEAVE_AWS_DEMO_HOST2$sudoweaverun--with-dns10.3.1.4/24-hws4.weave.localfintanr/weave-gs-nginx-apache$sudoweaverun--with-dns10.3.1.5/24-hws5.weave.localfintanr/weave-gs-nginx-apache$sudoweaverun--with-dns10.3.1.6/24-hws6.weave.localfintanr/weave-gs-nginx-apache注意:在这里,--with-dns选项告诉容器使用weavedns来解析主机名,-hx.weave.local则使得weavedns能够解析该主机。4.启动Nginx容器在应用容器如预期的运行后,我们将会启动nginx容器,它将会在六个应用容器服务之间轮询并提供反向代理或者负载均衡。为了启动nginx容器,请使用下面的命令。复制代码代码如下:ssh-iweavedemo-key.pemubuntu@$WEAVE_AWS_DEMO_HOST1$sudoweaverun--with-dns10.3.1.7/24-ti-hnginx.weave.local-d-p80:80fintanr/weave-gs-nginx-simple因此,我们的nginx容器在$WEAVEAWSDEMO_HOST1上公开地暴露成为一个http服务器。5.测试负载均衡服务器为了测试我们的负载均衡服务器是否可以工作,我们执行一段可以发送http请求给nginx容器的脚本。我们将会发送6个请求,这样我们就能看到nginx在一次的轮询中服务于每台web服务器之间。代码如下:$./access-aws-hosts.sh{"message":"HelloWeave-nginxexample","hostname":"ws1.weave.local","date":"2015-06-2612:24:23"}{"message":"HelloWeave-nginxexample","hostname":"ws2.weave.local","date":"2015-06-2612:24:23"}{"message":"HelloWeave-nginxexample","hostname":"ws3.weave.local","date":"2015-06-2612:24:23"}{"message":"HelloWeave-nginxexample","hostname":"ws4.weave.local","date":"2015-06-2612:24:23"}{"message":"HelloWeave-nginxexample","hostname":"ws5.weave.local","date":"2015-06-2612:24:23"}{"message":"HelloWeave-nginxexample","hostname":"ws6.weave.local","date":"2015-06-2612:24:23"}结束语我们最终成功地将nginx配置成一个反向代理/负载均衡服务器,通过使用weave以及运行在AWS(AmazonWebService)EC2里面的ubuntu服务器中的docker。从上面的步骤输出可以清楚的看到我们已经成功地配置了nginx。我们可以看到请求在一次轮询中被发送到6个应用容器,这些容器在Apache2Web服务器中跑着PHP应用。在这里,我们部署了一个容器化的PHP应用,使用nginx横跨多台在AWSEC2上的主机而不需要改变代码,利用weavedns使得每个容器连接在一起,只需要主机名就够了,眼前的这些便捷,都要归功于weave以及weavedns。



查看完整回答
反对 回复 2018-11-07

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信