首先我们先来了解一下Mongo集群的概念,Mongo集群有3个主要组件
ConfigServer:在集群中扮演存储整个集群的配置信息,负责配置存储,如果需要高可用的ConfigServer那么需要3个节点。
Shard:分片,存茄局储真实的数据,每一个Shard分片都负责存储集群中的数据,例如一个集群有3个分片,然后我们定义分片规则为哈希,那么整个集群的数据就会(分割)到3个分片中的某一个分片,那么分片是特别重要的,如果集群中的一个分片全部崩溃了那么集群将不可用,所以我们要保证集群的高可用,那么我们需要一个分片配置3个节点,2个副本集一个仲裁节点,仲裁节点类似于Redis的哨兵模式,如果发现主节点挂了那么让另一个副本集进行数据存储。
Mongos:Mongos我们可以理解为整个集群的入口,类似于Kafka的Broker代理,也就是客户端,我们通过客户端连接集群进行查询。
下面是MongoDB的官方集群架构图,我们看到Mongos是一个路由,他们的信息都存储在ConfigServer中,我们通过Mongos进行添加,然后根据条件将数据进行分片到分片的副本集中
首先我们搭建两个config-server
创建两个config-server的配置文件
然后配置文件中配置端口
然后启动容器
然后进入容器初始化
如果ok为1表示成功
下面我们给每个server创建2个分片
创建挂载文件
创建配置文件
然后启动容器
进入第一个分片
进入第二个分片
创建挂载文件
然后启动Mongo
mongo添加分片组
新建数据启用分片
那么我们先来总结一下我们搭建一个高可用集群需要多少个Mongo
mongos : 3台
configserver : 3台
shard: 3片
每一片shard 分别 部署两个副本集和一个仲裁节点 : 3台
那么就是 3 + 3 + 3 * 3 = 15 台,我这里演示采用3台服务器
114.67.80.169 4核16g 部署一个configserver,一个mongos,2个分片组
182.61.2.16 2核4g 部署一个configserver,一个mongos,1个分片组
106.12.113.62 1核2g 部署一个configserver,一个mongos,不搭建分片组
由于此处服务器原因所以不是均衡分布,请根据自身实际情况搭建
我们先来搭建ConfigServer,因为我们知道搭建的话一定要高可用而且一定要权限这里mongo之间通信采用秘钥文件,所以我们先进行生成
创建挂载文件目录
写入配置文件
然后颤岩让生成keyFile
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server1容器
创建挂载文件目录
写入配置文件
写入配置文件
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server2容器
创建挂载文件目录
写入配置文件
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server3容器
进入第一台容器
输入
如果返回ok则成功
然后我们创建用户
由于mongos是客户端,所以我们先搭建好config以及shard之枣颂后再搭建mongos。
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard1分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组1搭建完成
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard2分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组2搭建完成
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard3分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组3搭建完成
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos1
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos2
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos3
进入第一台mongos
先登录(使用前面设置的root用户密码)
进行配置分片信息
全部返回ok则成功
去其他两台mongos执行
mongos2
mongos3
创建用户
插入数据
openssl rand -base64 756 >mongo.key
清空server1两个分片数据
清空server2两个分片数据
目录
一、镜像加速
Docker 默认是从官方镜像地址 Docker Hub 下下载镜像,由于服务器在国外的缘故,导致经常下载速度非常慢。为了提升镜像的下载速度,我们可以手动配置国内镜像加速,让下载速度飚起来。
国内的镜像加速选项较多,如:阿里云,DaoCloud 等。
本文主要说说如何配置阿里云的镜像加速。
2.1 登录阿里云获取加速信息
https://dev.aliyun.com/
2.2 配置 Docker
2.2.1 确定 Docker Client 版本
在配置之前,首先需要 确定 Docker Client 的版本,推荐是 1.10.0+ :
2.2.2 配置镜像加速
PS: 这里以 CentOS 系统为例,如果你是别的系统,可以参考阿里云配置加速官方文档。
通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速:
执行下面命令:
2.3 验证一下速度
以下载 mongodb 为例,看下速度:
配置了加速过后,速度终于飚起来了。
二、快速安装&搭建 Mysql 环境
本节中,我们将学习如何通过 Docker 快速安装与搭建 Mysql 环境。
2.1 下载 Mysql 镜像
这里以 Mysql 5.7 为例:
下载完成后,通过 docker images 检查一下镜像是否下载成功:
2.2 先以最简单方式启动
先以简单的方式启动:
命令执行完成后,你也可以通过 docker ps 命令来确认下容器是否启动成功。若成功,我们需要将容器中的目录文件复制到宿主机中,分别包括:
完成这一切后,让我们将刚刚运行的容器删除掉。
PS: mysql 是我们运行容器时,指定的名称,当然,你也可以先执行 docker ps , 通过容器 ID 来删除。
2.3 正式运行 Mysql 容器
接下来,正式运行 Mysql 容器:
其他不变,额外添加了两个挂载子命令:
执行命令完成后,查看下容器是否启动:
可以看到,容器运行成功
2.4 通过 Mysql 客户端连接一下试试
通过 MySQL 客户端连接刚刚创建的 mysql, 看看能否连接成功:
连接成功了!
三、快速安装&搭建 Redis 环境
本节中,我们将学习如何利用 Docker 安装&搭建 Redis 环境。
3.1 下载 Redis 镜像
首先拉取 Redis 镜像, 这里我选择的是 redis:alpine 轻量级镜像版本:
下载完成后,通过 docker images 确认镜像是否已经下载到本地:
3.2 运行 Redis 容器
命令说明:
命令运行完成后,查看容器是否启动成功:
可以看到 redis 容器已经启动成功了!
3.3 连接刚刚创建好的容器
执行如下命令,连接 redis:
四、快速安装&搭建 MongDB 环境
本节中,我们将学习如何通过 Docker 快速安装与搭建 MongoDB 环境。
4.1 下载 MongoDB 镜像
这里以 mongo 4 版本为例,下载镜像:
下载完成后,确认一下镜像是否下载成功:
4.2 运行 MongoDB 镜像
下载成功后,运行 mongoDB 镜像:
执行命令完成后,查看下容器是否启动:
4.3 添加管理员账号
执行命令:
然后,创建一个拥有最高权限 root 账号:
创建成功后,你会看到 Successfully added user :
4.4 用新创建的 root 账户连接,测试一下
连接成功后,我们可以执行相关 sql:
显示所有的数据库:
使用某个数据库:
输入命令 exit ,退出连接!
五、快速安装&搭建 Elasticsearch 环境
本节中,我们将学习如何通过 Docker 快速安装与搭建 Elasticsearch 环境。
5.1 下载 Elasticsearch 镜像
这里以 Elasticsearch 6.5.0 为快速安装&搭建 Elasticsearch 环境例:
下载完成后,通过 docker images 检查一下镜像是否下载成功:
5.2 先简单运行 Elasticsearch 镜像
下载成功后,简单运行 Elasticsearch 镜像:
命令执行完成后,你也可以通过 docker ps 命令来确认下容器是否启动成功。
可以看到 es 容器运行成功了,接下来,进入容器中:
安装 analysis-ik 中文分词插件:
PS: es 从 v5.5.1 版本开始支持自带的 es 插件命令来安装,如果你安装的版本不是 6.5.0,需要将命令中的版本号修改一下,具体参考 https://github.com/medcl/elasticsearch-analysis-ik
安装成功后,退出容器:
删除刚刚运行的容器:
PS: 当然了,你也可以通过容器的 ID 来删除。
5.3 复制相关文件
5.4 修改 es 相关配置
进入我们刚刚指定的 config 配置目录,修改 jvm.options 文件:
PS: 因为小哈测试服务器就 2G 内存,这里我改成了 JVM 内存占用 300m, 如果你的内存够用,可不用改。
修改 elasticsearch.yml 文件, 添加如下配置:
解释一下添加的配置,设置节点为 master 节点,并允许跨域访问,以便后面使用 head 插件图形化界面访问。
5.5 运行 Elasticsearch 容器
这次,我们额外添加了相关挂载命令:
5.6 测试一下,瞅瞅 es 是否能够正常访问
测试一下,看 es 是否启动成功:
OK, 到此 es 的单节点环境就搭建好了!
欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 721575865
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
非root用户可以安装在自己的目隐姿录下
在mongodb目录下面创建文件:data和log文件
/mongodb/data/db
/mongodb/logs/mongo.log
创建mongodb.conf
:wq 保存退出
添加环境变量:
启动拿型mongo
查看27017端口灶敏绝是否启动成功
安装其他的类似。推荐使用Docker
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)