日志分析平台--mongodb副本集搭建

系列文章目录

第一章 搭建es集群



前言

该系列主要是以开源组件es、mongodb、graylog为主,搭建一套生产环境日志平台,与常见的elk日志平台相对比,该日志平台部署简易、且占用服务器资源较少,整体不是很重,适用于TOB、TOG项目使用。反观elk平台更适用于TOC项目,且维护成本较高,依赖组件较多。因此,本系列主要从es集群搭建、mongodb搭建、graylog搭建、页面配置、微服务日志接入、graylog日志报警接入展开。


一、es集群部署

详细部署过程见上述第一章博客内容即可,在此不进行过多叙述。

二、mongodb部署

1.mongodb介绍

	mongodb是一款开源组件、高性能、无模式的非关系文档型数据库,记录的是文档,它是由字段和值组成的数据结构。
	特点:
		高性能 对嵌入式数据模型的支持减少了数据库系统上的I/O活动、索引支持更快的查询
		高可用性 有副本集,可提供自动故障转移和数据冗余
		高扩展性
		丰富的查询条件支持
	应用场景:
		三高要求(对数据库高并发的读写需求、对海量数据的高效率存储和访问需求、对数据库的高可扩展性和更高级可用性的需求)、最小存储单位是文档对象,及文档对象对应于关系型数据库的行。以二进制json文档格式存储在磁盘上。

2.mongodb副本集介绍

在这里插入图片描述

   副本集即一主一从一仲裁模式,是一组维护相同数据集的mongodb服务。副本集提供冗余和高可用性,类似于有自动故障恢复功能的主从集群。且副本集包含多个数据承载点和可选的一个仲裁节点,在数据承载节点中,一个且仅一个成员被视为主节点,其余的都被是为从节点,
   
   主节点提供增删改查所有服务,为了缓解主节点的压力,设置从节点提供查询服务
   
   仲裁节点本身不存储数据,主要的作用是决定从节点在主节点宕机后,提升从节点为主节点,为从节点提升级别。
  主从复制和副本集的区别
  	主从集群和副本集最大的区别就是副本集没有固定的“主节点”;整个集群会选出一个“主节点”,当其挂
掉后,又在剩下的从节点中选中其他节点为“主节点”,副本集总有一个活跃点(主、primary)和一个或多
个备份节点(从、secondary)

3.mongodb副本集部署

1)、基本配置

    0、机器分布
		|192.168.56.130|主节点  |
		|192.168.56.131|从节点  |
		|192.168.56.132|仲裁节点 |

	1、下载官网包
	https://www.mongodb.com/download-center/community/releases
	
	2、上传并解压 三台机器都操作
	tar xf mongodb-3.2.22.tar.gz -C /export/servers/app/
    cd /export/servers/app
    mv mongodb-linux-x86_64-rhel70-3.2.22/ mongodb-3.2.22
    设置快捷指令
    vim /etc/profile
    export MONGO_HOME=/export/servers/app/mongodb-3.2.22
    export PATH=\$MONGO_HOME/bin:\$PATH
    source /etc/profile
  
    3、创建用户及数据目录
    useradd mongo
   	mkdir -p /export/servers/data/mongodb_27000/mongod_27017/{db,log,run}
   	touch /export/servers/data/mongodb_27000/mongod_27017/mongod.conf
   
  	4、授权
	chown -R mongo:mongo /export/servers/app/mongodb-3.2.22
	chown -R mongo:mongo /export/servers/data/mongodb_27000

2)、节点配置文件修改

systemLog:
   destination: file
   path: "/export/servers/data/mongodb_27000/mongod_27017/log/mongod.log" #mongo日志存放位置
   logAppend: true #启动或重启后是否追加写入
storage:
   indexBuildRetry: true
   journal:
      enabled: true
   dbPath: "/export/servers/data/mongodb_27000/mongod_27017/db" #mongodb数据存放位置
   directoryPerDB: true #当为true时,mongodb使用单独的目录存储每个数据库,每个目录名称对应于数据库名称
   engine: wiredTiger
   wiredTiger:
      engineConfig:
         cacheSizeGB: 10
         directoryForIndexes: true
         journalCompressor: snappy
      collectionConfig:
         blockCompressor: snappy
      indexConfig:
         prefixCompression: true

net:
   maxIncomingConnections: 5000
   port: 27017
processManagement:
   fork: true #允许程序在后台运行
   pidFilePath: "/export/servers/data/mongodb_27000/mongod_27017/run/mongod.pid" #mongodb启动后pid存放位置
#sharding:                                     
#   clusterRole: shardsvr
#   autoSplit: true
replication:
   replSetName: rs1 #副本名称
   oplogSizeMB: 102400
#security:
#   keyFile: "/export/servers/data/mongodb_27000/mongod_27017/run/keyfile"
#   authorization: enabled 
#security相关配置项为注释状态,第一次启动使用时,不加载security相关配置,需要机器配置完毕后再配置开启(因为具体的认证配置文件均未生成)

3)、做成系统服务

 在/usr/lib/systemd/system 下创建一个mongod.service 文件
[Unit]
Description=mongodb service
Documentation=https://docs.mongodb.com/manual/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/export/servers/data/mongodb_27000/mongod_27017/run/mongod.pid
ExecStart=/export/servers/app/mongodb-3.2.22/bin/mongod -f /export/servers/data/mongodb_27000/mongod_27017/mongo.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/export/servers/app/mongodb-3.2.22/bin/mongod --shutdown --config /export/servers/data/mongodb_27000/mongod_27017/mongo.conf
PrivateTmp=true
User=mongo
Group=mongo
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target

-----
启动服务
systemctl start mongod.service

停止服务
systemctl stop mongod.service

重启服务
systemctl restart mongod.service

开机自启
systemctl enable mongodb.service

4)、其余两台机器拷贝相关配置文件

 scp -r /export/servers/app/ 192.168.56.131:/export/servers/app/mongodb-3.2.22
 scp -r /export/servers/data 192.168.56.131:/export/servers/data 
 scp  /usr/lib/systemd/system/mongod.service 192.168.56.131:/usr/lib/systemd/system/mongod.service

 scp -r /export/servers/app/ 192.168.56.132:/export/servers/app/mongodb-3.2.22
 scp -r /export/servers/data 192.168.56.132:/export/servers/data 
 scp  /usr/lib/systemd/system/mongod.service 192.168.56.132:/usr/lib/systemd/system/mongod.service

5)、启动mongo服务后登陆任意一台节点、进行初始化副本集

[root@python-vm1 root]$ mongo shell #因为上述配置了mongo的快捷命令
> use admin #
> config = {
  _id : "rs1",  #要与配置文件中定义的一致
  members : [
    {_id:0, host:"192.168.56.130:27017"},
    { _id: 1, host: "192.168.56.131:27017"},
    { _id: 2, host: "192.168.56.132:27017", arbiterOnly: true}
  ]
}
> rs.initiate(config)
{ "ok" : 1 }
`如果返回 { “ok” : 0 }, 则说明初始化失败`
> rs.status() #查看集群状态

6)、创建超管用户和普通用户

登录mongo
	mongo shell
#创建超管用户
> use admin
switched to db admin
> db.createUser({
  user: 'admin', #用户名
  pwd: '123456xxeeffg',  #密码
  roles:[{
    role: 'root', #角色
    db: 'admin' #库
  }]
})
#创建成功返回以下结果
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}

#创建普通用户
use graylog
    db.createUser(
     {
     user: "graylog",
     pwd: "0mYMrYR1NGr5oE3o2qGs8gvK",
     roles: [ { role: "readWrite" , db: "graylog" } ] #给予graylog用户读写权限
    })

7)、创建认证文件并开启认证

	创建认证文件 其中一台创建后 `scp -p` 到其他两台机器
		openssl rand -base64 20 >/export/servers/data/mongodb_27000/mongod_27017/run/keyfile
		chmod 400 keyfile
		chown  mongo:mongo keyfile #否则启动时会报权限错误

	开启认证
		vim /export/servers/data/mongodb_27000/mongod_27017/mongo.conf
		去掉这三行注释,三台机器必须全部去掉
		security:
		   keyFile: "/export/servers/data/mongodb_27000/mongod_27017/run/keyfile"
		   authorization: enabled 

8)、重启mongo集群并验证用户登录是否成功、及验证graylog是否已存在

	三台机器都重启
		systemctl restart mongod
	其中一台节点执行登录操作
		mongo -u admin -p 123456xxeeffg --host 192.168.56.130 --port 27017 --authenticationDatabase=admin
	登录成功与验证如下图所示

4.验证副本状态
在这里插入图片描述


总结

本篇内容主要对mondb副本集的搭建做出了整理,切记,一定要确保目录、文件的权限要一致,属主属组也要一致,否则容易导致mongo服务启动报错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值