码头工人如何实现搭建MongoDB集群?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<>强基本概念强>
复制设置副本集:一个副本集就是一组MongoDB实例组成的集群,由一个主(初级)服务器和多个备份(二级)服务器构成
- <李>主节点(主):主节点接收所有写入操作。主节点将对其数据集所做的所有更改记录到其oplog。李> <>李副节点(二级):复制主节点的oplog并将操作应用到其数据集,如果主节点不可用,一个合格的副节点将被选为新的主节点。李> <李>仲裁节点(裁判):负载选举,当主节点不可用,它将从副节点中选一个作为主节点。李>
分片分片:
主从主备
- <李> MongoDB 4.0以上版本运行时提示:[主要]的主/从复制不再支持,也就是MongoDB 4.0后不在支持主从复制李>
使用CentOS 7.6 64位系统,安装码头工人,Docker-compose, Docker-Swarm
- <李> MongoDB使用密钥文件认证,副本集中的每个MongoDB实例使用密钥文件内容作为认证其他成员的共享密码.MongoDB实例只有拥有正确的密钥文件才可以加入副本集。李> <李>密钥文件的内容必须是6到1024个字符的长度,且副本集所有成员的密钥文件内容必须相同。李> <李>有一点要注意是的:在UNIX系统中,密钥文件必须没有组权限或完全权限(也就是权限要设置成X00的形式).Windows系统中,密钥文件权限没有被检查。李> <李>可以使用任意方法生成密钥文件,例如,如下操作使用openssl生成复杂的随机的1024个字符串。然后使用chmod修改文件权限,只给文件拥有者提供读权限。李> <李>这是MongoDB官方推荐密钥文件的生成方式:李>
# 400权限是要保证安全性,否则mongod启动会报的错 openssl兰德base64 756比;mongodb.key chmod 400 mongodb。关键
搭建集群我们肯定是跨主机通讯,要搭建覆盖网络网络,我们就要用到码头工人群这个工具了.Docker群是码头工人内置的集群工具,它能够帮助我们更轻松地将服务部署到码头工人守护进程的集群之中。
既然要将码头工人加入到集群,我们就必须先有一个集群,我们在任意一个码头工人实例上都可以通过码头工人群init来初始化集群。
$ sudo码头工人群体初始化 群初始化:当前节点(t4ydh3o5mwp5io2netepcauyl)现在是一个经理。 添加一个工人群,运行以下命令: 码头工人群加入——令牌SWMTKN-1-4dvxvx4n7magy5zh0g0de0xoues9azekw308jlv6hlvqwpriwy-cb43z26n5jbadk024tx0cqz5r 192.168.1.5:2377
在集群初始化后,这个码头工人实例就自动成为了集群的管理节点,而其他码头工人实例可以通过运行这里所打印的码头工人群加入命令来加入集群。
加入到集群的节点默认为普通节点,如果要以管理节点的身份加入到集群中,我们可以通过码头工人群join-token命令来获得管理节点的加入命令。
$ sudo码头工人群join-token经理 添加一个经理这群,运行以下命令: 码头工人群加入——令牌SWMTKN-1-60am9y6axwot0angn1e5inxrpzrj5d6aa91gx72f8et94wztm1-7lz0dth45wywekjd1qn30jtes 192.168.1.5:2377
我们通过这些命令来建立用于我们服务开发的码头工人集群,并将相关开发同事的码头工人加入到这个集群里,就完成了搭建跨主机网络的第一步。
接下来,我们就通过<代码>码头工人网络创建代码> 命令来建立叠加网络。
$ sudo码头工人网络创建——司机叠加——可连接的mongodb
在创建叠加网络时,我们要加入——可连接的选项以便不同机器上的码头工人容器能够正常使用到它。
在创建了这个网络之后,我们可以在任何一个加入到集群的码头工人实例上使用码头工人网络ls查看一下其下的网络列表。我们会发现这个网络定义已经同步到了所有集群中的节点上。
$ sudo码头工人网络ls 网络ID名司机范围 # #…… y89bt74ld9l8 mongodb覆盖群 # #……
接下来我们要修改码头工人组成的定义,让它使用这个我们已经定义好的网络,而不是再重新创建网络。
我们只需要在码头工人组成配置文件的网络定义部分,将网络的外部属性设置为真,就可以让码头工人组成将其建立的容器都连接到这个不属于码头工人组成的项目上了。