发布于:2020-12-19 18:29:49
0
383
0
Docker已成为使用容器创建,部署和运行应用程序的最常用工具。它使我们能够将应用程序与它所需的所有部分打包在一起,例如库和其他依赖项,然后将其作为一个程序包全部交付。可以将Docker视为虚拟机,但是Docker无需创建整个虚拟操作系统,而是允许应用程序使用与其所运行的系统相同的Linux内核,并且仅要求应用程序附带尚未运行的东西。主机。这样可以显着提高性能,并减小应用程序的大小。
在此博客中,我们将看到如何通过Docker轻松部署PostgreSQL设置,以及如何使用ClusterControl将设置转换为主/备用复制设置。
首先,让我们看看如何通过使用PostgreSQL Docker映像在Docker上手动部署PostgreSQL。
该映像在Docker Hub上可用,您可以从命令行找到它:
1个 2 3 |
|
我们将取得第一个结果。官方的。因此,我们需要提取图像:
1个 |
|
并运行将本地端口映射到容器中数据库端口的节点容器:
1个 2 3 |
|
运行这些命令后,您应该创建以下Docker环境:
1个 2 3 4 5 |
|
现在,您可以使用以下命令访问每个节点:
1个 2 3 4 5 6 |
|
然后,您可以创建数据库用户,根据需要更改配置或手动配置节点之间的复制。
现在,您已经设置了PostgreSQL集群,您仍然需要对其进行监视,在出现性能问题时发出警报,管理备份,检测故障并自动将故障转移到运行状况良好的服务器。
如果您已经有一个在Docker上运行的PostgreSQL集群,并且希望ClusterControl对其进行管理,则只需在与数据库容器相同的Docker网络中运行ClusterControl容器即可。唯一的要求是确保目标容器已安装与SSH相关的软件包(openssh服务器,openssh客户端)。然后,允许从ClusterControl到数据库容器的无密码SSH 。完成后,使用“导入现有服务器/群集”功能,并且应该将群集导入ClusterControl。
首先,让我们在数据库容器上安装与OpenSSH相关的软件包,允许root登录,启动它并设置root密码:
1个 2 3 4 5 6 |
|
启动ClusterControl容器(如果尚未启动),然后将容器上的端口80转发到主机上的端口5000:
1个 |
|
验证ClusterControl容器是否已启动:
1个 2 |
|
打开Web浏览器,转到http:// [Docker_Host]:5000 / clustercontrol并创建默认的admin用户和密码。现在,您应该看到ClusterControl主页。
最后一步是为所有数据库容器设置无密码的SSH。为此,我们需要知道每个数据库节点的IP地址。要知道这一点,我们可以为每个节点运行以下命令:
1个 2 |
|
然后,附加到ClusterControl容器交互式控制台:
1个 |
|
将SSH密钥复制到所有数据库容器:
1个 2 3 |
|
现在,我们可以开始将群集导入ClusterControl。打开Web浏览器,并使用映射的端口转到Docker的物理主机IP地址,例如http://192.168.100.150:5000/clustercontrol,单击“导入现有服务器/群集”,然后添加以下信息。
我们必须指定用户,密钥或密码和端口以通过SSH连接到我们的服务器。我们还需要为新集群命名。
设置SSH访问信息后,我们必须为每个数据库节点定义数据库用户,版本,basedir和IP地址或主机名。
输入主机名或IP地址时,请确保显示绿色对勾,表示ClusterControl能够与该节点通信。然后,单击“导入”按钮,等待直到ClusterControl完成其工作。您可以在ClusterControl活动部分中监视该过程。
导入后,数据库集群将列在ClusterControl仪表盘下。
请注意,如果只有PostgreSQL主节点,则可以将其添加到ClusterControl中。然后,您可以从ClusterControl UI添加备用节点,以允许ClusterControl为您配置它们。
现在,让我们看看如何通过使用CentOS Docker映像(manynines / centos-ssh)和ClusterControl Docker映像(manynines / clustercontrol)将PostgreSQL与Docker一起部署。
首先,我们将使用最新版本部署一个ClusterControl Docker容器,因此我们需要提取几个nines / clustercontrol Docker映像。
1个 |
|
然后,我们将运行ClusterControl容器并发布端口5000以对其进行访问。
1个 |
|
现在,您可以通过http:// [Docker_Host]:5000 / clustercontrol打开ClusterControl UI并创建默认的管理员用户和密码。
除了启用了SSH服务之外,还提供了manynines / centos-ssh的自动部署功能,但仅对Galera Cluster有效。尚不支持PostgreSQL。因此,我们将在docker run命令中将AUTO_DEPLOYMENT变量设置为0,以创建数据库节点。
1个 2 3 |
|
运行这些命令后,我们应该具有以下Docker环境:
1个 2 3 4 5 6 |
|
我们需要知道每个数据库节点的IP地址。要知道这一点,我们可以为每个节点运行以下命令:
1个 2 |
|
现在我们已经启动并运行了服务器节点,我们需要部署数据库集群。为了使它简单易行,我们将使用ClusterControl。
要从ClusterControl执行部署,请打开位于http:// [Docker_Host]:5000 / clustercontrol的ClusterControl UI ,然后选择“ Deploy”选项并按照显示的说明进行操作。
选择PostgreSQL时,我们必须指定用户,密钥或密码和端口,以通过SSH连接到我们的服务器。我们还需要一个新集群的名称,如果我们想让ClusterControl为我们安装相应的软件和配置。
设置SSH访问信息后,我们必须定义数据库用户,版本和数据目录(可选)。我们还可以指定要使用的存储库。
在下一步中,我们需要将服务器添加到要创建的集群中。
添加服务器时,我们可以输入IP或主机名。在这里,我们必须使用先前从每个容器获得的IP地址。
在最后一步中,我们可以选择复制是“同步”还是“异步”。
我们可以从ClusterControl活动监视器监视新集群的创建状态。
任务完成后,我们可以在ClusterControl主屏幕中看到我们的集群。
结论
如我们所见,使用Docker部署PostgreSQL在一开始可能很容易,但是配置复制需要更多的工作。最后,您应该监视集群以查看发生了什么。使用ClusterControl,您可以使用Docker导入或部署PostgreSQL集群,以及自动执行监视和管理任务,例如备份和自动故障转移/恢复。试试看。
作者介绍