如何利用docker-swarm构建数据库集群?

如何利用docker-swarm构建数据库集群?,第1张

可以的。

用什么工具无所谓,docker只不过是完成了一个套装的解决方案。软件已经安装好,直接启动带相应的参数就可以了。比如官方postgresql的经典的流复制模式搭建主从和postgresql10的逻辑复制。先启动个容器传入参数启动,数据目录,用户名密码,挂载数据盘,创建publication。一气呵成。再启动一个容器,同样设置数据目录,设置密码,挂载数据盘,创建subscription连接master。同样一气呵成。然后一个逻辑复制的小型集群就搭建好了。

但是我觉得你想问的不是怎么搭建这样一个集群,而是想知道postgresql-xl怎么把海量数据分散到不同的服务节点上去吧?这是sharding技术跟x不xl没有任何关系。postgresql-xl只不过是其本身就是基于postgresql内核的分布式数据库其自身就有代理节点,计算节点,数据节点,全局事物节点。跟docker并没有什么关系,docker就是一个可以运行他的一个容器化的虚拟环境而已,可以理解成vps/虚拟机。

像官方版postgresql也可以利用其自带的分区和fdw功能去实现像postgresql-xl那样的把海量数据均衡的分布到无数个服务器节点中去。只是配置和维护稍显繁琐。

1、修改用户名和密码右击我的电脑-管理,然后在d出的计算机管理界面中,点击“本地用户和组”在右侧找到你登录时候用的用户名,右击-设置密码即可设置该用户名的新密码,如果修改用户名可以右击-重命名即可修改。

2、磁盘管理右击我的电脑-管理,然后在d出的计算机管理界面中,点击“磁盘管理”右侧黑色的代表为指派的磁盘空间右击黑色未指派磁盘-新建磁盘分区-新建磁盘分区向导-选折主磁盘分区(大小根据需求设置)-指派磁盘驱动器号-执行快速格式化-完成。更改盘符的卷标-右击该盘符-更改驱动器号和路径-指派驱动器号。

3、更改3389远程登录端口 Windows默认的远程登录端口是3389,有的时候为了安全考虑,需要更改远程端口。点击开始-运行-输入regedit打开注册表编辑器,由于注册表上有很多信息,最简单的方法寻找需要修改端口的地方,键盘ctrl+F,d出搜索框,输入Portnumber进行查找,可能会搜到几处选项,注意查找值为3389的名称。需要修改的地方有两个-双击portnumber,选择十进制,将3389更改为别的数字,最好是越大越好,当然在65535之内,因为大的数字别的程序占用的几率比较小。

4、防火墙安全配置修改完成后,一定要查看本地的防火墙用没有打开,如果打开,需要在防火墙中将修改后的端口添加到例外。右键网上邻居-选择属性-网络连接-右键本地连接-属性-高级-设置,打开windows防火墙,选择例外选项。

DApp是decentralized application的缩写,是指分布式应用的意思。

一般的应用(一个网站),在我们登录的时候,会同步数据到服务器端,而这个服务器端是所有用户的一个中心。相对于一般的应用,DApp是指服务器端也以分布式的形式存在的应用。

Dapp abbreviate as Decentralized Application used to Developed Applications using Front-end(HTML+CSS+JS) Web page + Back-end(Solidity Smart contract) Programming code + Server(TestRPC) Private Blockchain/Dummy Network in Ethereum platform

DApp结构图

DApp和智能合约是什么关系?

DApp的概念是伴随着Ethereum“世界电脑“提出来的。

区块链共链有一个概念,叫做智能合约。

智能合约,就是一段发布以后不可以修改,并且条件满足后,就执行的代码。

在某种意义上说,DApp就是:一个分布式的,应用+智能合约。取代了传统意义上的服务器端。

什么是Swarm?

Swarm查过字典的童鞋,应该知道是蜂群的意思。

我们可以把里面的小蜜蜂想想成一个个的数据。所以Swarm就是一大堆数据的意思。

Swarm是用于DApp的“服务器端”存储数据用的。当然,不仅仅是Swarm,IPFS,BitTorrent等也都是用于同一个目的。

Swarm is being designed as an accounting protocol that benefits from the automatic execution of so-called "smart contracts" running on the Ethereum Virtual Machine (EVM) This accounting protocol is independent of the physical storage mechanism

什么是Whisper?

Whisper切切私语的意思。也是从DApp衍生出来的一个概念。

我们既然有了分布式的:应用+智能合约,也有了配合智能合约存储数据的Swarm,那在这个分布式的平台,我们需要一个机制来同步信息。这就是Whisper的作用。

小结

Contracts: 智能合约,负责逻辑的部分

Swarm: 存储数据用

Whisper: 消息同步

只有Ethereum在发展DApp么?

DApp的概念最初是Ethereum提出来的。但Ethereum不是唯一一个有相同目标的平台。很多公链都可以实现DApp的开发

回答来源宽客在线文章:DApp是指什么?

docker swarm的ingress网络又叫 Ingress Routing Mesh

主要是为了实现把service的服务端口对外发布出去,让其能够被外部网络访问到。

ingress routing mesh是docker swarm网络里最复杂的一部分内容,包括多方面的内容:

创建一个service,指定网络是overlay的mynet, 通过-p把端口映射出来

我们使用的镜像 containous/whoami 是一个简单的web服务,能返回服务器的hostname,和基本的网络信息,比如IP地址

8080这个端口到底映射到哪里了?尝试三个swarm节点的IP加端口8080

可以看到三个节点IP都可以访问,并且回应的容器是不同的(hostname),也就是有负载均衡的效果

以manager节点为例,数据到底是如何达到service的container的

通过iptables,可以看到一条DNAT的规则,所有访问本地8080端口的流量都被转发到 1721802:8080

那这个1721802 是什么?

首先 1721800/16 这个网段是 docker_gwbridge 的,所以这个地址肯定是连在了 docker_gwbridge 上。

docker network inspect docker_gwbridge 可以看到这个网络连接了一个叫  ingress-sbox的容器。它的地址就是 1721802/16

这个  ingress-sbox其实并不是一个容器,而是一个网络的命名空间 network namespace, 我们可以通过下面的方式进入到这个命名空间

通过查看地址,发现这个命名空间连接了两个网络,一个eth1是连接了  docker_gwbridge,另外一个eth0连接了  ingress 这个网络。

通过ipvs做了负载均衡

关于这里的负载均衡

单服务器容器规模指的是在一台服务器上运行多个容器实例的数量。这个数量通常受到服务器硬件资源的限制,如CPU、内存、磁盘空间等。对于一台具有良好硬件配置的服务器来说,可以运行数十甚至上百个容器实例。
但是,容器的规模并不仅仅与硬件资源有关,还与应用程序的特性有关。例如,一个I/O密集型的应用程序会大量使用磁盘I/O,可能会使磁盘资源成为瓶颈,从而影响容器的规模。另一个例子是内存密集型应用程序,可能会需要大量的内存才能支持运行,从而限制容器的数量。
因此,在确定单服务器容器规模时,需要考虑应用程序的特性和硬件资源的限制,并进行实际测试和评估,以确定最适合的容器数量。同时,还需要考虑容器之间的互相影响,以避免容器间的资源竞争和瓶颈问题。

docker主机内部网络正常,与其它主机的连接失效,其它主机不能连接docker主机上映射的端口,docker内部也无法连接外部主机。

添加配置

执行 sysctl -p 生效

再次查看docker info,警告消失,主机上的docker网络恢复正常。

我所使用的服务器是阿里云服务器
如果你的集群使用的默认端口4789,那么你可能遇到跟我一样的问题。

阿里云的帮助文档中有这样一句话:

在1903及之后的版本,docker在swarm init之上增加了–data-path-port uint32 的配置项用于更改docker swarm的VXLAN端口。
修改端口之后成功解决问题

查看docker日志(journalctl -u docker -n 20 -f )发现 :

出现这个原因是因为宿主机没有加载ip_vs模块。在各个节点加载ip_vs模块后重启docker即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10754651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存