阿里云环境迁移记录 - Mongo ReplicationSet搭建

mongo集群的搭建,至少需要3个节点,2两个数据节点和1个仲裁节点,所以这里使用三台机器搭建一个包含3节点的replicationSet。

1. 下载解压安装:
mkdir -P /opt/install
cd /opt/install/
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.3.tgz

#从远程服务器copy到本地安装目录
rsync -avzh root@47.92.212.35:/data/install/mongodb-linux-x86_64-rhel70-4.0.3.tgz /data/install/

#解压copy
tar -xvf xxx
mv mongodb-linux-x86_64-rhel70 /usr/local/mongodb

#添加到环境变量
echo ‘export PATH=/usr/local/mongodb/bin:$PATH‘ >> /etc/profile
source /etc/profile
#测试
mongo --version

2. 配置文件修改

#创建数据、配置文件及日志目录
mkdir -p /data/mongodb/data
mkdir -p /data/mongodb/logs
mkdir -p /data/mongodb/conf

vim /data/mongodb/conf/mongod.conf

systemLog:
destination: file
path: "/data/mongodb/logs/mongod.log"
logAppend: true
storage:
dbPath: "/data/mongodb/data"
journal:
enabled: true
processManagement:
fork: true
pidFilePath: "/usr/local/mongodb/mongod.pid"
net:
bindIp: 127.0.0.1,172.26.27.70
port: 20467
#security:

keyFile: "/data/mongodb/conf/access.key"

authorization: enabled

#setParameter:

authenticationMechanisms: SCRAM-SHA-1

replication:
oplogSizeMB: 500
replSetName: rs_mongo_88

#添加防火墙端口
firewall-cmd --zone=public --permanent --add-port=20467/tcp
systemctl restart firewalld.service

3. 启动并创建集群
#分别启动三台实例
ln -s /data/mongodb/conf/mongod.conf /etc/mongod.conf
mongod -f /etc/mongod.conf

#进入任意一台实例,初始化集群
mongo 127.0.0.01:20467

cfg={_id: ‘rs_mongo_88‘, members:[{_id: 1, host: ‘172.26.27.70:20467‘},
{_id: 2, host: ‘172.26.27.71:20467‘},{_id: 3, host: ‘172.26.27.72:20467‘}
]}
##添加单个节点
cfg.members.push({_id: 1, host: ‘172.26.27.70:20467‘})
cfg.members.push({_id: 2, host: ‘172.26.27.71:20467‘})
cfg.members.push({_id: 3, host: ‘172.26.27.72:20467‘}, arbiterOnly: true)
rs.initiate(cfg)
rs.isMaster()
rs.status()

#永久设置slaveOk
vim /root/.mongorc.js
rs.slaveOk();

  1. 创建用户

    use admin

#创建数据库管理员

db.createUser(
{
"user":"root",
"pwd":"88gongxiangds",
"roles":[
{
"role":"readWriteAnyDatabase",
"db":"admin"
},
{
"role":"dbAdminAnyDatabase",
"db":"admin"
},
{
"role":"userAdminAnyDatabase",
"db":"admin"
}
]
}
)

#管理员登录,可进行数据库操作
mongo admin -uroot -p --port 20467

#创建集群管理员
db.createUser(
{
"user":"suroot",
"pwd":"88gongxiangds",
"roles":[
{
"role":"clusterAdmin",
"db":"admin"
},
{
"role":"clusterManager",
"db":"admin"
},
{
"role":"clusterMonitor",
"db":"admin"
}
]
}
)

#集群管理员登录,可进行集群状态查看和操作
mongo admin -usuroot -p --port 20467

#创建特定库的特定用户
user testdb
db.createUser(
{
"user":"test",
"pwd":"testpwd",
"roles":[
{
"role":"readWrite",
"db":"testdb"
},
{
"role":"dbAdmin",
"db":"testdb"
},
{
"role":"userAdmin",
"db":"testdb"
}
]
}
)

#查看创建的用户
use admin

db.system.users.find()

5. 开启认证

mongodb有2个认证环节:客户端与mongod或者mongos之间,以及集群环境中每个mongod之间。

用户添加完成后需要关闭所有节点(先关闭仲裁和从节点, 再关闭主节点, 避免主节点切换):

#shutdown
#登录前关闭
mongod -f conf/mongod.conf --shutdown
#登录后关闭服务:
db.shutdownServer()

#生成keyFile(keyFile的用途是作为所有mongod后台进程允许加入集群的凭证, 所有集群中的节点共用一个keyFile, 避免其他mongod非法加入集群):
#生成keyFile, keyFile的长度必须在6-1024个字符之间
openssl rand -base64 756 > /data/mongodb/conf/access.key
#key只读
chmod 600 /data/mongodb/conf/access.key
#copy到另外两台服务器conf目录
scp access.key root@101.132.100.107:/data/mongodb/conf/
scp access.key root@47.101.61.131:/data/mongodb/conf/

#更换SSH默认端口(22 -> 20462)后的同步方式
rsync -azvh -e ‘ssh -p 20462‘ access.key root@172.26.27.72:/data/mongodb/conf/

#取消三个节点mongod.conf文件中security部分的注释,并重启实例

use admin
db.auth(‘root‘,‘88gongxiangds‘)

6. 停止mongod,创建mongodb用户替代root

useradd mongo -s /sbin/nologin
passwd mongo
mongopwd

登录权限也可添加后修改:
usermod -s /sbin/nologin mongo
usermod -s /bin/bash mongo

chown -R mongo:mongo /data/mongodb/
chown -R mongo:mongo /usr/local/mongodb/
chown mongo:mongo /etc/mongod.conf

su mongo
mongod -f /data/mongod.conf

##跳板机设置

ssh -CfNg -L 20462:127.0.0.1:20467 mongo@47.92.212.35

ssh -CfNg -R 20467:127.0.0.1:20462 mongo@47.92.212.35

##启动停止服务
关闭:mongod -f conf/mongod.conf --shutdown
启动: mongod -f conf/mongod.conf

##管理员登录
mongo admin -uroot -p88gongxiangds --port 20467

##集群管理员登录
mongo admin -usuroot -p88gongxiangds --port 20467

##集群状态监控
mongostat --uri=mongodb://suroot:88gongxiangds@172.26.27.70:20467/admin 5
mongostat --uri=mongodb://suroot:88gongxiangds@172.26.27.71:20467/admin 5
mongostat --uri=mongodb://suroot:88gongxiangds@172.26.27.72:20467/admin 5

##集群统计
mongotop --host 172.26.27.71 --port 20467 -usuroot -p88gongxiangds --authenticationDatabase=admin 5
##查看每个数据库的锁的使用
mongotop --host 172.26.27.71 --port 20467 -usuroot -p88gongxiangds --authenticationDatabase=admin --locks 5

原文地址:http://blog.51cto.com/10705830/2351787

时间: 2024-10-30 06:01:23

阿里云环境迁移记录 - Mongo ReplicationSet搭建的相关文章

阿里云环境迁移记录 - MYSQL高可用搭建

MYSQL高可用方案主要分为两大类,一类是前置管理,一类是后置管理.前置管理的思想是利用各种前置管理工具,动态切换或者分发请求到不同的实例并切换master,如keepalived.MHA.packmaker+Corosync.MySQLProxy等,一般通过暴露VIP将整个MYQL集群隐藏起来,其中Proxy主要用以读写分离.后置管理则是利用共享存储的思想,如NDB方案.由于我们的用户尚不足百万,所以一开始的计划是选择最简单的前置管理模式-双主+keepalived方案,后来因为阿里云停用了V

阿里云环境迁移记录

最近公司计划将目前托管在数据中心服务器环境迁移到阿里云,过程中涉及到服务器规划.申请.服务搭建.数据同步以及运维监控,特撰文记录. 下面是服务端环境规划: 我的工作从数据服务组的准备开始,包括如下内容:1. mysql高可用搭建MYSQL高可用 mongo集群搭建 redis集群搭建 rabbitmq搭建 数据迁移方案 分别会用五篇文章记录下,以此迎接2019新年. 原文地址:http://blog.51cto.com/10705830/2351452

阿里云环境迁移记录 - 服务监控及报警

服务监控的方案有很多,譬如naigos,zabbix这种,不但可以监控服务,还可以监控cpu.内存.磁盘.网络流量.服务端口等,关于naigos和zabbix的搭建配置,需要另外篇幅介绍,这里使用服务器自身的定时任务+脚本+邮件功能完成一个简单的监控. Part1 邮件服务搭建 安装mailx yum -y install mailx ##############################qq个人邮箱配置############################ vim /etc/mail.

阿里云ECS+Nginx+nginx_rtmp_module+FFMPEG服务器搭建过程

Nginx下安装nginx-rtmp-module+ffmpeg搭建流媒体服务器. 参考http://blog.csdn.net/redstarofsleep/article/details/45092147 阿里云环境 1. 使用SecueCRT.FlashFXP连接购买的阿里云ECS. 2. 一般购买后盘是初始化好的.第一次操作忽略这步.挂载新的盘时,可参考初始化盘https://jingyan.baidu.com/article/37bce2be0eeea01002f3a208.html

阿里云ESC服务器配置记录

购买服务器 上周赶着活动购买了一年阿里云服务器,记录一下配置过程: 选择服务器类型: linux服务器,网上说一般都用centOS的"比较新"的版本: 重置密码: 重置密码之后一定要重启服务器,当时我没有重启,导致更改了好几遍密码: 登录服务器 xshell: 链接:https://pan.baidu.com/s/1dggIAH36oR_vSA58Tq78Eg 提取码:uqgd 使用xshell登录 登录一般使用SSH,SSH登录默认有两种方式: 使用口令(直接输入用户名密码端口)来登

阿里云环境locust环境搭建

环境准备:阿里云服务器一台.python2.7.pip Locust 介绍 Locust 是一个开源负载测试工具.使用 Python 代码定义用户行为,也可以仿真百万个用户. Locust 简单易用,分布式,用户负载测试工具.Locust 主要为网站或者其他系统进行负载测试,能测试出一个系统可以并发处理多少用户. Locust 是完全基于时间的,因此单个机器支持几千个并发用户.相比其他许多事件驱动的应用,Locust 不使用回调,而是使用轻量级的处理方式 gevent. 安装 pip insta

10分钟教你阿里云环境下搭建iredmail邮件服务器

一.ireaqdmail 介绍 RedMail 是一个基于 Linux/BSD 系统的零成本.功能完备.成熟的邮件服务器解决方案. iRedMail 是一个开源.免费的项目.以 GPL(v2)协议发布. 二.使用的核心组件及其对应的功能 Postfix: SMTP 服务器 Dovecot: POP3/IMAP/Managesieve 服务器 Apache: Web 服务器 MySQL: 用于存储其它程序的数据,也可用于存储邮件帐号. OpenLDAP: 用于存储邮件帐号. Policyd: Po

基于freescale i.Mx6(ARM)的阿里云oss调试记录

SS调试记录 1.1 开通oss服务 具体参考以下链接: https://help.aliyun.com/document_detail/31884.html?spm=a2c4g.11186623.6.558.n2g1UA 1.2 SDK安装 在ubuntu下安装,安装步骤如下: 安装CMake 执行以下命令安装CMake. sudo apt-get install cmake 安装第三方库 执行以下命令安装第三方库. sudo apt-get install libcurl4-openssl-

阿里云Ubuntu系统从0开始搭建LAMP(Apache+MySQL+PHP)

1.百度下载SecureCRT.exe 2.用SecureCRT进入你的服务器管理界面,账号一般为root,密码为你从阿里云注册购买时候的服务器密码,如果不会使用SecureCRT请百度,so easy. 3.依次执行以下命令,LAMP搭建完毕! wget http://oss.aliyuncs.com/aliyunecs/update_source.tgz?spm=5176.775974184.2.4.ox8OHd&file=update_source.tgz tar zxvf update_