它现在是2015年7月16日,事情再次发生了变化.我从Jason Wilder那里发现了这个自动化容器:
https://github.com/jwilder/nginx-proxy它解决了这个问题,只要它需要docker run容器.这是我用来解决这个问题的解决方案.
现在是2015年7月,关于网络Docker容器的情况发生了巨大变化.现在有许多不同的产品可以解决这个问题(以各种方式).
您应该使用这篇文章来获得
docker --link对服务发现方法的基本理解,这种方法基本上是基本的,它可以很好地工作,并且实际上需要比大多数其他解决方案更少的花哨跳舞.它的局限性在于,在任何给定集群中将容器联网在单独的主机上非常困难,并且一旦联网就无法重新启动容器,但它确实提供了一种快速且相对简单的方法来在同一主机上联网容器.这是一个很好的方式来了解你可能用来解决这个问题的软件实际上是在做什么.此外,你可能还需要检查出多克的新生
network,Hashicorp的consul,Weaveworksweave,杰夫·林赛的progrium/consul&gliderlabs/registrator,和谷歌的Kubernetes.另外还有CoreOS利用的产品
etcd,fleet和flannel.如果你真的想举办派对,你可以启动一个集群来运行
Mesosphere,或者Deis,或者Flynn.如果你是网络新手(比如我)那么你应该拿出你的老花镜,在Wi-Hi-Fi上弹出"涂上星星的天空 - 恩雅的最佳",然后破解啤酒 - 这将是在你真正理解你正在尝试做什么之前的一段时间.提示:你正试图
Service Discovery Layer在你的实施中实施Cluster Control Plane.这是一个非常好的方式来度过一个周六晚上.这很有趣,但我希望在潜入之前我会花时间更好地教育自己一般的网络.我最终发现了一些来自仁慈的数字海洋教程神的帖子:
Introduction to Networking Terminology和Understanding ... Networking.我建议在潜水之前先阅读几次.玩得开心!
我似乎无法掌握Docker容器的端口映射.具体来说,如何将请求从Nginx传递到另一个容器,在同一服务器上侦听另一个端口.
我有一个Nginx容器的Dockerfile,如下所示:
FROM ubuntu:14.04
MAINTAINER Me …Run Code Online (Sandbox Code Playgroud) 这令我感到困惑.我显然可以理解为什么帐户ID是全球性的,但为什么桶名?
如果有这样的话会更有意义:https://accountID.storageservice.com/bucketName
哪个会在accountID下命名空间桶.
我错过了什么,为什么这些显然精英建筑师选择以这种方式处理桶名?
我正在尝试设置Google Cloud Storage存储桶来存储和提供我网站的所有静态对象.我还试图将该存储桶中的所有对象推送到Google Cloud CDN提供的所有全局边缘位置.
我在Google云端存储上创建了一个存储桶:cdn.mysite.com.我为铲斗location设置选择了"US"多区域.
我的假设是存储在此存储桶中的任何对象都将被复制到所有us-*区域以实现高耐久性目的,但不会推送到所有Google Cloud CDN全局边缘位置以用于CDN目的.
或者我的"美国"多区域存储桶中的所有对象是否已经自动推送到所有Google Cloud CDN边缘位置?
我很惊讶我无法弄清楚我的水桶是否已经是CDN了.即使经过两天的搜索(谷歌,具有讽刺意味).
在此先感谢您的帮助.
更新:请参阅我在下面提供的答案,了解我最终在AWS上设置的解决方案.
我目前正在尝试使用有关如何在Digital Ocean上为我的应用服务器最佳实现全局负载平衡层的方法,还有一些我尚未整理的部分.
目标
通过将所有连接路由到SFO,NYC,LON和最终新加坡最近的"服务器集群",为我的用户提供高可用性服务.
另外,我最终希望通过编写一个可以监视,扩展和修复系统上任何服务器的守护程序来自动维护它.或者我将结合各种服务来实现相同的自动化目标.首先,我需要弄清楚如何手动完成.
堆栈
全球域名细分
一旦我完成了所有工作,我的域名将如下所示:
**GLOBAL**
global-balancing-1.myapp.com
global-balancing-2.myapp.com
global-balancing-3.myapp.com
**NYC**
nyc-load-balancing-1.myapp.com
nyc-load-balancing-2.myapp.com
nyc-load-balancing-3.myapp.com
nyc-app-1.myapp.com
nyc-app-2.myapp.com
nyc-app-3.myapp.com
nyc-api-1.myapp.com
nyc-api-2.myapp.com
nyc-api-3.myapp.com
**SFO**
sfo-load-balancing-1.myapp.com
sfo-load-balancing-2.myapp.com
sfo-load-balancing-3.myapp.com
sfo-app-1.myapp.com
sfo-app-2.myapp.com
sfo-app-3.myapp.com
sfo-api-1.myapp.com
sfo-api-2.myapp.com
sfo-api-3.myapp.com
**LON**
lon-load-balancing-1.myapp.com
lon-load-balancing-2.myapp.com
lon-load-balancing-3.myapp.com
lon-app-1.myapp.com
lon-app-2.myapp.com
lon-app-3.myapp.com
lon-api-1.myapp.com
lon-api-2.myapp.com
lon-api-3.myapp.com
Run Code Online (Sandbox Code Playgroud)
然后,如果有任何给定层上的任何应变,在任何给定的区域,我就可以旋转了一个新的液滴助阵:nyc-app-4.myapp.com,lon-load-balancing-5.myapp.com,等...
现行工作方法
(最少)三个global-balancing服务器接收所有流量.这些服务器是$geoip_city_continent_code平衡的,如本文(坦率地说令人困惑)文章所示:如何配置DNS循环负载平衡.
使用Nginx GeoIP模块和
MaxMind GeoIP数据
,任何给定请求的来源都将确定为
global-balancing.
所述load-balancing然后层将请求路由到nyc-load-balancing-1所述服务器上 …
我已安装boot2docker,OSX 10.8.5似乎安装没问题,但是当我尝试启动时,boot2docker我得到以下内容,它会无限期挂起:
$ /usr/local/bin/boot2docker up
Waiting for VM and Docker daemon to start...
..........................................................................oooooooooooooooooooooooooooooo
Run Code Online (Sandbox Code Playgroud)
我应该采取哪些步骤来调试它?我无法找到有关此特定问题的任何信息.
$ boot2docker version
Boot2Docker-cli version: v1.4.1
Git commit: 43241cb
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
$ boot2docker -v up
Boot2Docker-cli version: v1.4.1
Git commit: 43241cb
2014/12/23 00:19:25 executing: VBoxManage showvminfo boot2docker-vm --machinereadable
2014/12/23 00:19:25 executing: VBoxManage showvminfo boot2docker-vm --machinereadable
2014/12/23 00:19:25 executing: VBoxManage showvminfo …Run Code Online (Sandbox Code Playgroud) 我在AWS上有一个EC2 ASG,我有兴趣存储用于实例化S3存储桶中任何给定实例的shell脚本,并将其下载并在实例化时运行,但即使我使用它也感觉有点摇摇晃晃a IAM Instance Role,通过HTTPS传输,并使用 using 在S3存储桶中静止时加密脚本本身KMSS3 Server Side Encryption(因为该KMS方法抛出了"未知"错误).
安装程序
IAM Instance Role在实例化时分配给我的ASG中的任何实例,导致我的AWS信誉被作为ENVvars 烘焙到实例中Instance-Init.sh脚本上传并加密到S3,产生如下私有端点:https://s3.amazonaws.com/super-secret-bucket/Instance-Init.sh
在User-Data田野里
User Data在创建Launch Configuration我希望我的ASG使用时,我在字段中输入以下内容:
#!/bin/bash
apt-get update
apt-get -y install python-pip
apt-get -y install awscli
cd /home/ubuntu
aws s3 cp s3://super-secret-bucket/Instance-Init.sh . --region us-east-1
chmod +x Instance-Init.sh
. Instance-Init.sh
shred -u -z -n 27 Instance-Init.sh
Run Code Online (Sandbox Code Playgroud)
以上做了以下内容:
aws-cli)说我有这个脚本:
var thisIsTrue = false;
exports.test = function(request,response){
if(thisIsTrue){
response.send('All is good!');
}else{
response.send('ERROR! ERROR!');
// Stop script execution here.
}
console.log('I do not want this to happen if there is an error.');
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,如果出现错误,我想停止脚本执行任何下游功能.
我已经设法通过return;在发送错误响应后添加来实现此目的:
var thisIsTrue = false;
exports.test = function(request,response){
if(thisIsTrue){
response.send('All is good!');
}else{
response.send('ERROR! ERROR!');
return;
}
console.log('I do not want this to happen if there is an error.');
}
Run Code Online (Sandbox Code Playgroud)
但那是"正确"做事的方式吗?
备择方案
我也看过使用process.exit();和的例子process.exit(1);,但这给了我一个502 Bad Gateway错误(我假设因为它杀了节点?).
而且callback(); …
我正在尝试为客户端设置一个简单的移动页面,其中包含指向.mp4视频文件的链接.Lke so:
<a href="My_Video_File.mp4" target="_blank">Watch MP4 Video</a>
Run Code Online (Sandbox Code Playgroud)
然后我显然已经正确地获取了我的视频文件,并且.mp4具有以下特征:
Dimension: 480 * 272
Codecs: AAC, H.264, MPEG-4 SDSM, MPEG-4 ODSM
Channel Count: 2
Total Bitrate: 991
Size: 11.4MB
Run Code Online (Sandbox Code Playgroud)
但是,问题是当我点击链接iPhone时说"电影无法播放".并没有告诉我为什么.
有帮助吗?
提前致谢.
我有一个脚本,它以秒为单位获取一个值(到小数秒的2个小数点):
$seconds_input = 23.75
Run Code Online (Sandbox Code Playgroud)
然后我将其转换为毫秒:
$milliseconds = $seconds_input * 1000; // --> 23750
Run Code Online (Sandbox Code Playgroud)
然后我想格式化它:
H:M:S.x // --> 0:0:23.75
Run Code Online (Sandbox Code Playgroud)
其中'x'是第二个的分数(但是小数点之后的位数很多).
有帮助吗?我似乎无法围绕这一点思考.我尝试使用gmdate(),但它一直在缩短小数秒.
谢谢.
In order to keep the uploaded media (S3 objects) private for all the clients on my multi-tenant system I implemented a Cloudfront CDN deployment and configured it (and its Origin S3 Bucket) to force the use of signed URLs in order to GET any of the objects.
First, the user is authenticated via my system, and then a signed URL is generated and returned to them using the AWS.CloudFront.Signer.getSignedUrl() method provided by the AWS JS SDK …
amazon-s3 amazon-web-services amazon-cloudfront pre-signed-url