Articles of Docker

使用pgpool或pgbouncer进行Postgresql复制

我正在寻找一个良好的configurationpostgresql复制与强大的故障转移策略(自我托pipe)。 实际上,我使用repmgr在master / slave中configuration了两个postgresql实例。 现在,我不知道在这两个实例之前应该放置什么来实现良好的故障转移。 我希望当主人倒下时,奴隶会自动向新的主人升职,而不会为客户停工。 我认为我应该把pgbool(或pgbouncer?)放在主/从postgres之前,但是为了避免把它作为单点故障,我应该有两个这样的实例,对不对? (这是我想到的一个例子: http : //i.imgur.com/yqky2bl.png )。 我的根本问题是如何configuration两个不同的pgpool实例的自动故障转移。 我怎么能确定这两个改变内部主/从configuration? 应该使用pgpool来创build故障转移或repmgr(更改两个pgpool实例的configuration)? 我有一些怀疑,我是在正确的方式,基本上是因为我没有find关于这种types的configuration大量的文档,以及如果例如主人回来在网上可能会发生几分钟的networking问题(所以postgres不是真的下降,但它是无法由客户端)。 为了使事情更加复杂,我试图用dockerconfiguration这个基础设施(但也许可以更简单,因为我可以销毁一个pg实例,并用docker创build一个新实例)。

托pipe多个Python或Djangonetworking应用程序 – 在服务器上需要build议strucutre / architechture

我们有很多networking应用程序/网站。 有些相当复杂,但其中很多是简单的网站。 目前我们使用nginx和uwsgi在单个专用服务器上托pipe10个站点。 虽然这是非常符合成本效益和维护费用less(因为我们需要每10个站点维护1台服务器),但它有一些我不喜欢的问题包括: 升级 – 说如果我想升级Postgres我需要担心10个网站,以及他们的configuration。 这使任何依赖性升级以及操作系统升级非常危险和复杂。 Python 3 – 我需要升级一个项目到Python 3.虽然virtualenv可能允许我升级而不影响系统的其余部分,但我不确定非python依赖关系。 操作系统问题 – 有时会出现奇怪的操作系统问题。 如果说有一个网站正在运行,我可以使用负载平衡器将stream量路由到单独的服务器,并在此处修复问题。 现在有10个站点,这也耗费时间。 所以我正在考虑如何解决这些问题。 我正在考虑的几个选项。 AWS – 在不同的实例上运行复杂的应用程序,使用RDS作为数据库。 通过这种方式,我们也可以单独扩展(或扩展)应用程序,而无需担心其他应用程序。 简单的网站可以托pipe在EC2或任何其他服务器上,因为它们很简单,不需要定期更新。 使用Docker在当前专用服务器中托pipe这些应用程序/站点以避免上述问题。 我是docker工人,因此我不能完全确定是否能解决上述问题。 AWS和Docker托pipePythonnetworking应用的经验是什么? 你如何主办大量的应用程序/网站(我相信机构和自由职业者的典型案例)?

如何转发Docker容器日志到ELK?

我想知道什么是最容易的方式转发我的docker集装箱日志到一个ELK服务器,到目前为止,我已经尝试了search互联网后的解决scheme根本没有工作。 基本上我有一个使用docker-compose运行的docker镜像,这个容器不会在本地logging任何东西(它由不同的服务组成,但它们都不是logstash或者其他东西),但是我通过docker-compose logs docker logs -tf imageName看到了日志docker-compose logs docker logs -tf imageName或者docker-compose logs 。 由于我用compose启动容器,因此无法使用–logs-driver选项(至less我不知道如何)。 因此,我想知道是否有人可以指导我如何将日志转发到ELK容器。 提前致谢, 问候 scheme : 感谢madeddie,我可以通过以下方式来解决我的问题,提到我使用了他在post中提到的基本的ELK-stack-in-containers。 首先,我更新了我的容器docker-compose.yml文件,以便为日志引用添加条目,就像madeddie告诉我的,每个服务都包含一个条目,我的docker-compose代码片段看起来像这样 version: '2' services: mosquitto: image: ansi/mosquitto ports: – "1883:1883" # Public access to MQTT – "12202:12202" #mapping logs logging: driver: gelf options: gelf-address: udp://localhost:12202 redis: image: redis command: redis-server –appendonly yes ports: – […]

从容器内部调用lvcreate会挂起

我运行一个容器。 它具有所有function,并从根目录(除/proc )挂载所有目录。 当我从里面调用lvcreate时,我得到: # lvcreate -v -L104857600B -n vol1 default Finding volume group "default" Archiving volume group "default" metadata (seqno 17). Creating logical volume vol1 Creating volume group backup "/etc/lvm/backup/default" (seqno 18). Activating logical volume "vol1". activation/volume_list configuration setting not defined: Checking only host tags for default/vol1 Creating default-vol1 Loading default-vol1 table (252:4) Resuming […]

Docker:将目录从一个容器挂载到另一个容器中的特定path

当我们在“docker run”命令中使用“-v”参数的时候,我们可以指定{host}中的srcpath:{container in container},例如 docker run -v /var/volumns/v1:/var/docker/v1ref … 但是,如何安装一个数据专用容器呢? docker run –volumes-from data-only-container:<here is mode, ro or rw> 如何使用“-v”实现相同的function? 我可以将其挂载到特定的文件夹?

Docker和VirtualBox在Linux上能够很好地协作吗?

我目前有一个随机冻结的服务器的问题。 服务器正在运行: OpenSUSE 42.2,最新更新 内核4.10.1-2.g561cf31-default(来自kernel.opensuse.org) Docker版本1.12.6,build 78d1802 VirtualBox 5.1.14r112924 该机器有12核心和32GB ram,并启用超线程。 (毕竟服务已经开始有〜19GB剩余的RAM) 很长一段时间,我们一直在使用VirtualBox来创build各种Linux发行版的虚拟机,所以我们可以testing我们的产品。 最近我们决定将基于Linux的VirtualBox机器迁移到Docker 。 不幸的是,我们还不能完全迁移到Docker 。 这就是为什么我们保持1台虚拟机运行的原因。 起初,一切工作都完美无瑕,但是一次又一次,机器随机开始冷冻。 没有日志,也没有迹象表明可能造成这种情况。 我排除了硬件问题 – 我们有足够的CPU,RAM和HDD来运行我们所需的所有服务,并且硬件工作正常。 作为一个实验,我停止了所有的VirtualBox机器,并禁用了所有在启动时重启的VirtualBox相关服务。 到目前为止,我们还没有一个冻结。 这导致了我的问题 – Docker和VirtualBox可以在同一台机器上运行而不会相互干扰吗?

AWS ElasticBeanstalk docker-thin-pool变满,导致文件系统重新挂载为只读?

我无法弄清楚AWS如何在ElasticBeanstalk上设置Docker“精简池”,以及如何填充它。 我的docker精简池正在填满,导致我的应用程序在试图写入磁盘时崩溃。 这是从容器内部: >df -h > /dev/xvda1 25G 1.4G 24G 6% 事实上,EBS有一个25GB的磁盘分配给它; 1.6 GB是什么du -sh /返回。 在EC2之外,它开始无害…(通过lvs ) LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert docker-pool docker twi-aot— 11.86g 37.50 14.65 但是,文件系统很快会以只读方式重新装载。 通过dmesg: [2077620.433382] Buffer I/O error on device dm-4, logical block 2501385 [2077620.437372] EXT4-fs warning (device dm-4): ext4_end_bio:329: I/O […]

docker中的高山shell找不到文件

我已经build立了一个简单的docker集装箱与阿尔卑斯山和一个名为bowtie2的工具。 当我尝试运行bowtie2-align-s ,我得到这个错误: sh: ./bowtie2-align-s: not found 但是, ls告诉我该文件在那里。 我从Linux二进制发行版中安装了bowtie2。 我该如何判断该发行版是否与Alpine Linux兼容? 我在Ubuntu 16.04上运行Docker 17.09.0-ce。 以下是完整的Dockerfile: FROM alpine:3.6 ENV BOWTIE2_VERSION 2.2.8 RUN apk add –no-cache \ perl \ wget \ openssl \ ca-certificates \ strace \ && wget https://downloads.sourceforge.net/project/bowtie-bio/bowtie2/$BOWTIE2_VERSION/bowtie2-$BOWTIE2_VERSION-linux-x86_64.zip \ && unzip -d /usr/local bowtie2-$BOWTIE2_VERSION-linux-x86_64.zip \ && rm bowtie2-$BOWTIE2_VERSION-linux-x86_64.zip 我testing它是这样的: $ sudo docker run -it […]

docker7给HTTP错误:503 – 服务不可用

当我尝试启动Jetty时出现错误503。 有谁知道这可能意味着什么。 我正在运行Jetty 7并使用start.jar文件启动它。 如果有人知道如何configurationJetty在Windows上工作,这将是有帮助的。 谢谢。

Apache2 + Solr:Tomcat或Jetty?

我有一个运行Apache2 Web服务器的(Ubuntu 10.4)服务器。 到目前为止,我有一些扩展设置,就像我希望的那样,我很高兴。 但是现在我想尝试一下Apache Solr,因为我宁愿想办法设置一个好的强大的环境,而我们只有几十万条logging,这比我们有几十亿的时候更容易。 鉴于你似乎需要的不仅仅是Apache2和JDK来运行它(对吗?),我不得不在Tomcat和Jetty之间进行select,但是我从来没有使用过它们两个(好吧,我在10年前使用了Tomcat,但是这么长,我忘记了一切)。 我最初的select是Tomcat,因为这是大多数教程所使用的,并且它有关于与Apache2并行运行的最多文档; 然而,Jetty似乎是一个有趣的替代品,它甚至被官方教程使用 。 那么使用Apache2和Solr,Tomcat或Jetty会更好些?