mongoDB CentOS7.2集群部署

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 1.关闭selinuxvi /etc/selinux/configSELINUX=disabledsetenforce 0 2.

1.关闭selinux

vi /etc/selinux/config

SELINUX=disabled

setenforce 0

 

2.配置mongodb源

#yum安装mongodb

vi /etc/yum.repos.d/mongodb.repo

[mongodb-org]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

 

3.yum安装mongodb

yum install mongodb-org (目前安装的版本是3.6.7)

 

4.关闭这三台机器的防火墙

       service iptables stop

       chkconfig iptables off

 

       service firewalld stop

       chkconfig firewalld off

 

5.分别配置三台机器的/etc/mongod.conf

vi /etc/mongod.conf 添加如下内容

replication:   # 取消这行的注释

  oplogSizeMB: 20  # 增加这一行配置定义oplog的大小,注意前面需要有两个空格

      replSetName: zero  # 定义复制集的名称,同样的前面需要有两个空格

 

       在每台机器的/etc/mongod.conf中配置各自ip地址,如下面的0.0.0.0

       vi /etc/mongod.conf

net:

  port: 27017

        bindIp: 127.0.0.1, 0.0.0.0

6.集群初始化

       systemctl start mongod.service  #分别启动三台机器的MongoDB服务

       进入到其中一台机器,执行下面的命令

       mongo

use admin

config={_id:"zero",members:[{_id:0,host:"0.0.0.0:27017"},{_id:1,host:"0.0.0.0:27017"},{_id:2,host:"0.0.0.0:27017"}]}

rs.initiate(config)  # 初始化

rs.status()  # 查看状态

 

注意:如果在slave上出现show dbs报错,not master and slaveOk=false

rs.slaveOk()  # 如果出现以上错误,需要执行这条命令

 

7. 创建具有集群管理权限的用户

       mongo

    use admin

db.createUser({user:"root",pwd:"123456", roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"clusterAdmin",db:"admin" }]})

clusterAdmin具有管理集群的权限

db.auth("root", "123456") #如果返回1,则表示成功。

 

8. 给集群添加安全keyfile安全认证

       #生成key

mkdir -p /var/lib/mongo/authkey/ #在每个节点创建该文件夹

#在主节点上执行以下命令

openssl rand -base64 745 > /var/lib/mongo/authkey/mongodb-keyfile

chmod 600 /var/lib/mongo/authkey/mongodb-keyfile

cd /var/lib/mongo/authkey/

chown mongod:mongod mongodb-keyfile

# 该key的权限必须是600,且所有者是mongod

# 将该key放到集群中机器的每一台上,记住必须保持一致,权限设置成600;

scp mongodb-keyfile root@0.0.0.0:/var/lib/mongo/authkey/

scp mongodb-keyfile root@0.0.0.0:/var/lib/mongo/authkey/

登录修改/var/lib/mongo/authkey/,修改权限

chmod 600 /var/lib/mongo/authkey/mongodb-keyfile

cd /var/lib/mongo/authkey/

chown mongod:mongod mongodb-keyfile

 

9. 分别配置三台机器的/etc/mongod.conf,添加keyfile认证

       取消security的注释,并在下面添加

       keyFile: /var/lib/mongo/authkey/mongodb-keyfile

 

10. 重新启动集群节点的mongodb服务

       systemctl restart mongod.service

 

11. 登录mongodb

mongo admin -u root -p

       输入密码,登录mongo后执行

       rs.status()  # 查看状态,如没有unauth字样,则说明安全认证添加成功

 

12. 测试副本集群

       db.printSlaveReplicationInfo() #查看副本同步状态

       use testdb  # 创建库

switched to db testdb

zero:PRIMARY> db.test.insert({AccountID:1,UserName:"zero"}) 

#创建集合,并且插入一条数据

WriteResult({ "nInserted" : 1 })

zero:PRIMARY> show dbs  # 查看所有的库

zero:PRIMARY> show tables  # 查看当前库的集合

test

在slave上查看数据集,是否已经有新加的数据

如果在slave上出现show dbs报错,not master and slaveOk=false

rs.slaveOk()  # 如果出现以上错误,需要执行这条命令

 

 

添加配置

  1. 设置 /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/defrag

 

添加到/etc/rc.local

#disable transparent_hugepage

echo never >> /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/defrag

 

重启后仍然好用

编辑 /etc/default/grub,在GRUB_CMDLINE_LINUX加入选项 transparent_hugepage=never
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
2.
重新生成grub配置文件
On BIOS-based machines, issue the following command as root:
# grub2-mkconfig -o /boot/grub2/grub.cfg

systemctl status mongod.service

 

6. 查看是否启动成功

$ sudo systemctl status mongod.service

若显示 active(running)则启动成功!或者

$ sudo cat /var/log/mongodb/mongod.log

如出现

[thread1] waiting for connections on port <port></port>

其中的默认为27017,在 /etc/mongod.conf中配置,则启动成功

 

 

3)开机自启动

systemctl start mongod.service

systemctl enable mongod.service

systemctl status mongod.service

 

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用(centos7下的kubekey使用)
云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用(centos7下的kubekey使用)
77 1
|
6月前
|
Kubernetes Linux Docker
百度搜索:蓝易云【CentOS7系统规划搭建 kubernetes 集群详细教程。】
现在,你已经成功规划和搭建了一个基于CentOS 7的Kubernetes集群。你可以使用kubectl命令管理和部署应用程序到集群中。根据需求,你还可以配置和调优集群的各项参数和插件,以满足特定的应用需求。
173 0
|
3月前
|
消息中间件 Kafka Linux
Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
64 0
|
2天前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
16天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
16 0
|
2月前
|
Java Linux 开发工具
Centos7搭建minio分布式集群
Centos7搭建minio分布式集群
|
4月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|centos7下的kubeadm部署的集群内在线部署kubesphere(外部etcd)
云原生|kubernetes|centos7下的kubeadm部署的集群内在线部署kubesphere(外部etcd)
71 0
|
4月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|kubeadm五分钟内部署完成集群(完全离线部署---适用于centos7全系列)
云原生|kubernetes|kubeadm五分钟内部署完成集群(完全离线部署---适用于centos7全系列)
62 0
|
4月前
|
Kubernetes Linux Docker
k8s学习-k8s初识、Centos下集群安装与一键离线安装
k8s学习-k8s初识、Centos下集群安装与一键离线安装
91 2
|
7月前
|
Java Linux 网络安全
CentOS7上从0开始搭建Zookeeper集群
CentOS7上从0开始搭建Zookeeper集群
125 0